john 介绍

john被设计得既功能丰富,快速。它结合了几个破坏​​模式的一个程序,是您的特定需求完全可配置的(你可以使用甚至自定义一个开裂模式内置的编译器支持C的一个子集)。此外,john可以使您能够在任何地方使用相同的裂解装置(你甚至可以继续你开始在另一个平台裂解会话)几个不同的平台。

开箱即用,john支持(和自动检测)以下的Unix的crypt(3)散列类型:传统的DES-based,“bigcrypt”,BSDI扩展的DES-based,FreeBSD的MD5-based(也可在Linux和思科的IOS)和OpenBSD Blowfish-based (目前也用在一些Linux发行版和最新的Solaris版本支持)。还支持开箱即用的有Kerberos/AFS和Windows LM(DES-based)散列,以及DES-based tripcodes。

用glibc2.7+上的Linux发行版上运行时,john1.7.6+还支持(与自动检测),SHA-crypt 哈希值(这是实际使用的最新版本的Fedora和Ubuntu),可选OpenMP并行化(需要GCC 4.2+,需要要明确在编译时通过取消注释附近的Makefile的开始适当OMPFLAGS线启用)。

同样,在最近的Solaris,john 1.7.6+支持的版本上运行,并自动检测SHA-crypt哈希和SunMD5哈希,还具有可选的OpenMP并行化(需要GCC 4.2+或近期的Sun Studio,需要明确地在编译时被启用通过设置OMP_NUM_THREADS环境变量到线程的期望的数量)取消注释附近生成文件的开始和在运行时适当OMPFLAGS线。

john临增加了对Windows NTLM(MD4为主)和Mac OS X 10.4+salted SHA-1哈希。

“社区强化”-jumbo版本增加支持更多的密码哈希类型,包括Windows NTLM(MD4为主)的Mac OS X 10.4-10.6 + salted SHA-1散列的Mac OS X 10.7 salted SHA-512散列,原始MD5和SHA-1,任意基于MD5的“Web应用程序”的密码哈希加密类型,使用的SQL数据库服务器(MySQL和MS SQL,Oracle)和一些LDAP服务器,在OpenVMS上使用了几种散列类型中,密码散列的Eggdrop IRC机器人,还有很多其他的哈希类型,以及许多非哈希如OpenSSH的私钥,S/Key skeykeys 文件,Kerberos TGTs, PDF 文件, ZIP (classic PKZIP and WinZip/AES)和RAR压缩文件。

不像旧的爆破者,john通常不使用的crypt(3)风格的程序。相反,它有自己的对于不同的散列的类型和处理器架构高度优化模块。所使用的一些算法,如DES bitslice,不可能一直在crypt(3)API中实现;它们需要更强大的接口,如在john使用的方法。此外,还有的汇编语言例程几个处理器架构,最重要的是为x86-64的和x86中使用的SSE2。

资料来源:http://www.openwall.com/john/doc/
john 首页
john 源代码版本库

包括在john里的工具

mailer - 告知用户谁的电子邮件密码已经破解
:~# mailer
Usage: /usr/sbin/mailer PASSWORD-FILE

john - 暴力破解密码

:~# john
John the Ripper password cracker, ver: 1.7.9-jumbo-7_omp [linux-x86-sse2]
Copyright (c) 1996-2012 by Solar Designer and others
Homepage: http://www.openwall.com/john/

Usage: john [OPTIONS] [PASSWORD-FILES]
--config=FILE             use FILE instead of john.conf or john.ini
--single[=SECTION]        "single crack" mode
--wordlist[=FILE] --stdin wordlist mode, read words from FILE or stdin
                  --pipe  like --stdin, but bulk reads, and allows rules
--loopback[=FILE]         like --wordlist, but fetch words from a .pot file
--dupe-suppression        suppress all dupes in wordlist (and force preload)
--encoding=NAME           input data is non-ascii (eg. UTF-8, ISO-8859-1).
                          For a full list of NAME use --list=encodings
--rules[=SECTION]         enable word mangling rules for wordlist modes
--incremental[=MODE]      "incremental" mode [using section MODE]
--markov[=OPTIONS]        "Markov" mode (see doc/MARKOV)
--external=MODE           external mode or word filter
--stdout[=LENGTH]         just output candidate passwords [cut at LENGTH]
--restore[=NAME]          restore an interrupted session [called NAME]
--session=NAME            give a new session the NAME
--status[=NAME]           print status of a session [called NAME]
--make-charset=FILE       make a charset file. It will be overwritten
--show[=LEFT]             show cracked passwords [if =LEFT, then uncracked]
--test[=TIME]             run tests and benchmarks for TIME seconds each
--users=[-]LOGIN|UID[,..] [do not] load this (these) user(s) only
--groups=[-]GID[,..]      load users [not] of this (these) group(s) only
--shells=[-]SHELL[,..]    load users with[out] this (these) shell(s) only
--salts=[-]COUNT[:MAX]    load salts with[out] COUNT [to MAX] hashes
--pot=NAME                pot file to use
--format=NAME             force hash type NAME: afs bf bfegg bsdi crc32 crypt
                          des django dmd5 dominosec dragonfly3-32 dragonfly3-64
                          dragonfly4-32 dragonfly4-64 drupal7 dummy dynamic_n
                          epi episerver gost hdaa hmac-md5 hmac-sha1
                          hmac-sha224 hmac-sha256 hmac-sha384 hmac-sha512
                          hmailserver ipb2 keepass keychain krb4 krb5 lm lotus5
                          md4-gen md5 md5ns mediawiki mscash mscash2 mschapv2
                          mskrb5 mssql mssql05 mysql mysql-sha1 nethalflm netlm
                          netlmv2 netntlm netntlmv2 nsldap nt nt2 odf office
                          oracle oracle11 osc pdf phpass phps pix-md5 pkzip po
                          pwsafe racf rar raw-md4 raw-md5 raw-md5u raw-sha
                          raw-sha1 raw-sha1-linkedin raw-sha1-ng raw-sha224
                          raw-sha256 raw-sha384 raw-sha512 salted-sha1 sapb
                          sapg sha1-gen sha256crypt sha512crypt sip ssh
                          sybasease trip vnc wbb3 wpapsk xsha xsha512 zip
--list=WHAT               list capabilities, see --list=help or doc/OPTIONS
--save-memory=LEVEL       enable memory saving, at LEVEL 1..3
--mem-file-size=SIZE      size threshold for wordlist preload (default 5 MB)
--nolog                   disables creation and writing to john.log file
--crack-status            emit a status line whenever a password is cracked
--max-run-time=N          gracefully exit after this many seconds
--regen-lost-salts=N      regenerate lost salts (see doc/OPTIONS)
--plugin=NAME[,..]        load this (these) dynamic plugin(s)

unafs - 警告用户使用的弱密码的脚本

:~# unafs
Usage: unafs DATABASE-FILE CELL-NAME

unshadow - 结合passwd和shadow文件

:~# unshadow
Usage: unshadow PASSWORD-FILE SHADOW-FILE

unique - 从一个密码单词列表中删除重复项

:~# unique
Usage: unique [-v] [-inp=fname] [-cut=len] [-mem=num] OUTPUT-FILE [-ex_file=FNAME2] [-ex_file_only=FNAME2]

       reads from stdin 'normally', but can be overridden by optional -inp=
       If -ex_file=XX is used, then data from file XX is also used to
       unique the data, but nothing is ever written to XX. Thus, any data in
       XX, will NOT output into OUTPUT-FILE (for making iterative dictionaries)
       -ex_file_only=XX assumes the file is 'unique', and only checks against XX
       -cut=len  Will trim each input lines to 'len' bytes long, prior to running
       the unique algorithm. The 'trimming' is done on any -ex_file[_only] file
       -mem=num.  A number that overrides the UNIQUE_HASH_LOG value from within
       params.h.  The default is 21.  This can be raised, up to 25 (memory usage
       doubles each number).  If you go TOO large, unique will swap and thrash and
       work VERY slow

       -v is for 'verbose' mode, outputs line counts during the run

unshadow 用法示例

结合所提供的 passwd文件(passwd)和映射文件(shadow),并将其重定向到一个文件(> unshadowed.txt):

john 用法示例

使用一个词表(-wordlist=/usr/share/john/password.lst),申请重整规则(-rules),并试图破解给定文件中的密码哈希(unshadowed.txt):

:~# john --wordlist=/usr/share/john/password.lst --rules unshadowed.txt
Warning: detected hash type "sha512crypt", but the string is also recognized as "crypt"
Use the "--format=crypt" option to force loading these as that type instead
Loaded 1 password hash (sha512crypt [64/64])
toor             (root)
guesses: 1  time: 0:00:00:07 DONE (Mon May 19 08:13:05 2014)  c/s: 482  trying: 1701d - andrew
Use the "--show" option to display all of the cracked passwords reliably

unique 用法示例

用详细模式(-v),读的密码列表(-inp=allwords.txt),并只保存独特的字到一个文件中(uniques.txt):

:~# unique -v -inp=allwords.txt uniques.txt
Total lines read 6089 Unique lines written 5083