John the Ripper 密码破解工具详解
John the Ripper 简介
John the Ripper(简称 "John")是密码破解领域的老牌工具,开源免费,跨平台。它的设计哲学是"智能猜测"——内置多种密码规则和行为模式,比纯字典暴力破解更高效。Kali 自带的是 Jumbo Edition,包含了 200+ 种哈希格式支持和 GPU 加速。
三种工作模式
| 模式 | 说明 | 速度 |
|---|---|---|
| Single | 把用户名当密码、加常见后缀(123, !, 2024) | 最快,适合有目标用户的场景 |
| Wordlist | 字典直接跑(和 Hashcat -a 0 类似) | 中等 |
| Incremental | 纯暴力,按字符集组合所有可能 | 最慢,实际很少用 |
破解 Linux 用户密码示例
步骤一:提取哈希
先同时提取 /etc/passwd 和 /etc/shadow 给 John 统一格式:
unshadow /etc/passwd /etc/shadow > unshadowed.txt
unshadowed.txt 包含所有本地账户的密码哈希。
步骤二:运行 John
# Single 模式(先跑一轮智能猜测)
john single unshadowed.txt
# Wordlist 模式 + 规则(最常用)
john --wordlist=/usr/share/wordlists/rockyou.txt --rules unshadowed.txt
--rules 让 John 对字典里的每个密码尝试 300+ 种变形规则(倒序、加前后缀、字母大小写替换、leet speak 转换等)。
步骤三:查看已破解的密码
john --show unshadowed.txt
已破解的密码会显示出来,没破解的保持问号。
常见哈希类型
John 会自动识别哈希格式(自动探测),也可以手动指定:
# 指定哈希格式
john --format=sha512crypt hash.txt
john --format=bcrypt hash.txt
john --format=nt hash.txt # Windows NTLM
john --format=raw-md5 hash.txt # 纯 MD5
john --format=wpa-psk capture.cap # WPA2
常用格式列表:john --list=formats
GPU 加速
Jumbo 版 John 支持 OpenCL 和 CUDA GPU 加速:
# 检查构建信息(确认有 OpenCL)
john --list=build-info
# 使用 GPU 加速
john --format=raw-md5-opencl hash.txt
john --format=wpa-psk-opencl capture.cap
GPU 版的格式名通常在 CPU 格式后加 -opencl 或 -cuda。
Single 模式详解
Single 模式的"智能猜测"是 John 最独特的功能。它针对每个用户名自动生成候选密码:
root → root, root123, root1!, toor, Root, R00t, ...
john → john, john123, john2024, njoh, John, ...
admin → admin, admin123, admin!, nimda, Admin, ...
对于知道目标用户名的场景(比如内部渗透),Single 模式的命中率出奇的高——很多人真的会用用户名或用户名加个简单数字做密码。
规则自定义
John 的 --rules 可以用自定义规则,规则文件路径:
# 列出所有规则集
john --list=rules
自定义规则示例(在 john.conf 的 [List.Rules:MyRule] 段):
:
$1 $2 $3
c $1 $2 $3
:表示原始单词$1追加数字 1,$2追加 2...c首字母大写- 这些规则可以叠加
John vs Hashcat 对比
| 维度 | John the Ripper | Hashcat |
|---|---|---|
| 原生 GPU 加速 | OpenCL/CUDA(Jumbo 版) | CUDA/OpenCL/HIP(完整) |
| 暴力模式 | Single(智能)+ Incremental | 无 Single,但掩码更灵活 |
| 格式覆盖 | 200+(Jumbo 版) | 几乎所有主流格式 |
| 盐值处理 | 支持 | 支持 |
| 会话恢复 | 支持 | 支持(更完善) |
| 社区更新 | 较缓慢 | 活跃,新哈希跟进快 |
| 适合场景 | 已知用户名、智能猜测 | 大规模 GPU 加速、掩码攻击 |