john 是一款大受欢迎的、免费的开源软件、基于字典的密码破解工具。用于在已知密文的情况下尝试破解出明文的破解密码软件,支持目前大多数的加密算法,如 DES 、 MD4 、 MD5 等。 John 支持字典破解方式和暴力破解方式。它支持多种不同类型的系统架构,包括 Unix 、 Linux 、 Windows 、 DOS 模式、 BeOS 和 OpenVMS ,主要目的是破解不够牢固的 Unix/Linux 系统密码。
在对 john 输入命令时,命令行方式是 :john – 功能选项 密码文件名字功能选项。并且john所有的选项对大小写不敏感,并且在确认命令与其他的参数不会发生冲突的时候可以使用简写,比如 -restory可以写成-res -wordfile可以写成 -w。
john
命令的具体参数选项如下表:
选 项 | 描 述 |
---|---|
–single | single crack 模式,使用配置文件中的规则进行破解 |
–wordlist=FILE–stdin | 字典模式,从 FILE 或标准输入中读取词汇 |
–rules | 打开字典模式的词汇表切分规则 |
–incremental[=MODE] | 使用增量模式 |
–external=MODE | 打开外部模式或单词过滤,使用 [List.External:MODE] 节中定义的外部函数 |
–stdout[=LENGTH] | 不进行破解,仅仅把生成的、要测试是否为口令的词汇输出到标准输出上 |
–restore[=NAME] | 恢复被中断的破解过程,从指定文件或默认为 $JOHN/john.rec 的文件中读取破解过程的状态信息 |
–session=NAME | 将新的破解会话命名为 NAME ,该选项用于会话中断恢复和同时运行多个破解实例的情况 |
–status[=NAME] | 显示会话状态 |
–make-charset=FILE | 生成一个字符集文件,覆盖 FILE 文件,用于增量模式 |
–show | 显示已破解口令 |
–test | 进行基准测试 |
–users=[-]LOGIN | UID[,…] |
–groups=[-]GID[,…] | 对指定用户组的账户进行破解,减号表示反向操作,说明对列出组之外的账户进行破解。 |
–shells=[-]SHELL[,…] | 对使用指定 shell 的账户进行操作,减号表示反向操作 |
–salts=[-]COUNT | 至少对 COUNT 口令加载加盐,减号表示反向操作 |
–format=NAME | 指定密文格式名称,为 DES/BSDI/MD5/BF/AFS/LM 之一 |
–save-memory=LEVEL | 设置内存节省模式,当内存不多时选用这个选项。 LEVEL 取值在 1~3 之间 |
例:
John
自带了一个字典,字典位于/usr/share/john/password.lst
。当然你也可以自行去网上选择适合你的字典。我们可以开始对Linux登录用户名和密码进行破解:
john --wordlist=/usr/share/john/password.lst test_passwd