ophcrack-cli 是 Kali Linux 中一款专注于 Windows 密码破解 的命令行工具,核心技术基于彩虹表(Rainbow Tables)------一种通过预计算哈希值与明文对应关系的数据库,实现快速反向查询哈希对应的明文密码,无需传统暴力破解的逐一枚举,大幅提升破解效率。
其核心功能与特点如下:
- 破解对象:主要针对 Windows 系统的 LM 哈希和 NTLM 哈希(从 SAM 文件、pwdump 格式文件或 Meterpreter 导出的哈希中提取),支持 Windows XP、Vista、Windows 7 等主流早期系统,通过扩展彩虹表可覆盖更多版本。
- 核心优势:依赖彩虹表的"预计算"特性,破解速度远快于暴力破解;支持命令行无界面运行,适合远程服务器或渗透测试场景;提供会话保存、多线程、结果导出等功能,适配复杂破解需求。
- 使用场景:渗透测试中的 Windows 系统密码审计、系统运维中的遗忘密码恢复(需合法授权)、安全合规检测中的弱密码排查。
- 注意事项:需提前准备对应系统版本的彩虹表(Kali 默认提供基础免费表,复杂密码需下载完整版);仅可用于合法授权的目标,未经授权破解涉嫌违法。
二、命令行参数中文解析(按功能分类)
1. 模式控制参数
| 参数 | 英文说明 | 中文解析 | 示例 |
|---|---|---|---|
| -a | disable audit mode (default) | 禁用审计模式(默认),审计模式会额外分析密码复杂度,禁用后仅专注于密码破解 | ophcrack -a -g -f hash.txt |
| -A | enable audit mode | 启用审计模式,破解时同步输出密码是否符合复杂度要求(如长度、字符类型) | ophcrack -A -g -f hash.txt |
| -b | disable bruteforce | 禁用暴力破解模式,仅依赖彩虹表比对哈希,不进行额外枚举 | ophcrack -b -g -d /tables -f hash.txt |
| -B | enable bruteforce (default) | 启用暴力破解模式(默认),彩虹表匹配失败时,自动触发简单弱密码枚举 | ophcrack -B -g -d /tables -f hash.txt |
| -g | disable GUI | 禁用图形界面,强制以命令行模式运行(Kali 无 GUI 环境可省略,有 GUI 需加此参数) | ophcrack -g -d /tables -f hash.txt |
2. 彩虹表与哈希加载参数
| 参数 | 英文说明 | 中文解析 | 示例 |
|---|---|---|---|
| -d dir | specify tables base directory | 指定彩虹表基础目录,工具从该目录读取子表(如 xp_free_fast、vista_free) | -d /usr/share/ophcrack/tables/(Kali 默认表目录) |
| -t table1[,a[,b,...]][:table2[...]] | specify which table to use (with -d) | 指定使用的彩虹表: table1/table2:表目录名; a,b:子表编号(可选,不填则用全表); 多表用":"分隔 | -t xp_free_fast,0,3:vista_free(用 xp 表 0/3 子表 + vista 全表) |
| -f file | load hashes from file (pwdump/session) | 从文件加载哈希: pwdump 格式:Windows 哈希标准导出格式; session 格式:ophcrack 保存的会话文件(恢复任务) | -f hash.txt(加载 pwdump 哈希);-f session.sav(恢复会话) |
| -w dir | load hashes from encrypted SAM in dir | 从指定目录加载加密 SAM 文件(需同时存在 SYSTEM 文件,用于解密哈希) | -w /root/sam_files/(目录含 SAM 和 SYSTEM 文件) |
3. 结果与日志参数
| 参数 | 英文说明 | 中文解析 | 示例 |
|---|---|---|---|
| -e | do not display empty passwords | 不显示空密码(过滤未设置密码的用户结果) | ophcrack -g -e -f hash.txt |
| -i | hide usernames | 隐藏用户名,仅输出密码 | ophcrack -g -i -f hash.txt |
| -I | show usernames (default) | 显示用户名(默认),输出"用户名-密码"对应关系 | ophcrack -g -I -f hash.txt |
| -l file | log all output to file | 将所有输出(进度、结果、报错)记录到日志文件 | -l crack_log.txt |
| -o file | write output to file (pwdump format) | 将破解结果以 pwdump 格式写入文件(格式:用户名:RID:LM哈希:NTLM哈希:密码::) | -o result.pwdump |
| -x file | export data to file (CSV format) | 将结果以 CSV 格式导出(用户名,密码,LM哈希,NTLM哈希),便于 Excel 分析 | -x result.csv |
| -u | display statistics when cracking ends | 破解结束后显示统计信息(总哈希数、破解成功数、耗时、速度) | ophcrack -g -u -f hash.txt |
4. 性能与会话参数
| 参数 | 英文说明 | 中文解析 | 示例 |
|---|---|---|---|
| -n num | specify the number of threads | 指定线程数,建议与 CPU 核心数匹配(如 4 核用 -n 4),提升并行效率 | -n 8(启用 8 线程) |
| -p num | preload (0=none,1=index,2=index+end,3=all default) | 彩虹表预加载模式(控制内存占用与速度): 0=不预加载;1=预加载索引;2=索引+末尾;3=全加载(最快,内存占用最高) | -p 3(全预加载,适合内存充足场景) |
| -s | disable session auto-saving | 禁用会话自动保存,中断后无法恢复进度 | ophcrack -g -s -f hash.txt |
| -S session_file | specify session file to save progress | 指定会话文件,定期保存破解进度,中断后用 -f 加载恢复 | -S crack_session.sav |
5. 调试与辅助参数
| 参数 | 英文说明 | 中文解析 | 示例 |
|---|---|---|---|
| -c config_file | specify the config file to use | 指定配置文件(预设表目录、输出格式等),避免重复输入参数 | -c my_config.conf |
| -D | display lots of debugging information | 显示详细调试信息(表加载、哈希比对、线程状态),用于排查故障 | ophcrack -g -D -f hash.txt |
| -h | display this information | 显示帮助信息(所有参数说明与示例) | ophcrack -h |
| -q | quiet mode | 安静模式,仅输出破解成功的结果,不显示进度与冗余信息 | ophcrack -g -q -f hash.txt |
| -v | verbose | 详细模式,输出表加载、哈希匹配等过程信息(比默认详细,少于 -D) | ophcrack -g -v -f hash.txt |
附:官方示例解析
| 官方示例命令 | 中文解析 |
|---|---|
| ophcrack -g -d /path/to/tables -t xp_free_fast,0,3:vista_free -f in.txt | 1. -g:命令行模式; 2. -d /path/to/tables:彩虹表基础目录; 3. -t:使用 xp_free_fast 表的 0、3 子表 + vista_free 全表; 4. -f in.txt:加载 in.txt 中的 pwdump 格式哈希; 功能:破解 in.txt 中的哈希,用指定彩虹表匹配 |
三、ophcrack-cli 完整使用教程
1. 前提准备:获取 Windows 密码哈希
ophcrack-cli 需先获取目标 Windows 系统的 LM/NTLM 哈希,常见 3 种获取方式:
-
本地导出(Windows 系统权限) :
在目标 Windows 系统中,用
pwdump7.exe工具导出(需管理员权限):
pwdump7.exe > hash.txt生成的
hash.txt为 pwdump 格式,包含"用户名:RID:LM哈希:NTLM哈希::"。 -
远程导出(渗透测试场景) :
通过 Meterpreter 会话导出(获取目标主机 Meterpreter 后):
run post/windows/gather/hashdump输出结果复制到 Kali 的
hash.txt中。 -
离线提取(SAM 文件) :
从 Windows 系统盘复制
C:\Windows\System32\config\SAM和SYSTEM文件到 Kali,用samdump2提取哈希:
samdump2 SYSTEM SAM > hash.txt
2. 彩虹表准备:下载与存放
Kali 默认仅提供基础彩虹表(如 xp_free_fast、vista_free),复杂密码需下载完整版,步骤如下:
- 查看默认表目录 :
Kali 默认彩虹表路径:/usr/share/ophcrack/tables/,包含 xp_free_fast(XP 简单密码表)、vista_free(Vista 基础表)。 - 下载扩展彩虹表 :
访问 ophcrack 官网彩虹表页面,下载对应系统的表(如 Windows 7 需下载 win7_x64 系列),解压后放到自定义目录(如/root/ophcrack_tables/)。
3. 基础场景:破解 pwdump 格式哈希
场景 :已获取 hash.txt(pwdump 格式,XP 系统哈希),用 Kali 默认 xp_free_fast 表破解,输出日志与统计信息。
# 命令
ophcrack -g -d /usr/share/ophcrack/tables/ -t xp_free_fast -f hash.txt -l crack_log.txt -u -v
# 参数解析
# -g:命令行模式
# -d:指定默认彩虹表目录
# -t xp_free_fast:使用 XP 免费快速表
# -f hash.txt:加载 pwdump 哈希文件
# -l crack_log.txt:日志保存到 crack_log.txt
# -u:结束后显示统计信息
# -v:详细输出过程
# 结果查看
# 1. 直接查看终端输出(含"用户名:密码")
# 2. 打开 crack_log.txt 查看完整日志
# 3. 统计信息示例:"Cracked 3 of 5 hashes (60.00%) in 12 seconds"
4. 进阶场景:多彩虹表组合 + 会话保存
场景:破解 Vista/Windows 7 哈希,需同时用 vista_free 表和自定义 win7_x64 表,且需保存会话防止中断(如破解耗时较长)。
# 命令
ophcrack -g -d /root/ophcrack_tables/ -t vista_free:win7_x64,1,2 -f hash.txt -S win7_session.sav -o win7_result.pwdump -n 4
# 参数解析
# -d /root/ophcrack_tables/:自定义表目录(含 vista_free 和 win7_x64 子目录)
# -t vista_free:win7_x64,1,2:同时使用 vista_free 全表 + win7_x64 表的 1、2 号子表(针对性破解复杂密码)
# -S win7_session.sav:会话进度保存到 win7_session.sav(中断后可恢复)
# -o win7_result.pwdump:破解结果以 pwdump 格式保存(便于其他工具调用)
# -n 4:启用 4 线程(匹配 4 核 CPU,提升速度)
# 中断后恢复会话命令
ophcrack -g -f win7_session.sav -S win7_session.sav -v
# 结果查看
# 1. 打开 win7_result.pwdump 查看"用户名:RID:LM哈希:NTLM哈希:密码::"格式结果
# 2. 恢复会话后,工具自动从上次中断位置继续破解
5. 离线场景:从 SAM 文件直接破解
场景:已获取目标 Windows 系统的 SAM 和 SYSTEM 文件(存放于 /root/sam_backup/ 目录),无需提前提取哈希,直接加载文件破解。
# 前提:确保 /root/sam_backup/ 目录下存在 SAM 和 SYSTEM 两个文件
ls /root/sam_backup/ # 验证文件是否存在(输出:SAM SYSTEM)
# 命令
ophcrack -g -d /usr/share/ophcrack/tables/ -t xp_free_fast -w /root/sam_backup/ -e -q -x sam_result.csv
# 参数解析
# -w /root/sam_backup/:从该目录加载 SAM 和 SYSTEM 文件,自动提取并解密哈希
# -e:不显示空密码(过滤未设置密码的用户)
# -q:安静模式(仅输出破解成功的结果,减少冗余信息)
# -x sam_result.csv:结果以 CSV 格式导出(便于 Excel 整理,格式:用户名,密码,LM哈希,NTLM哈希)
# 结果查看
# 1. 终端直接显示破解成功的"用户名:密码"
# 2. 用 Excel 打开 sam_result.csv 查看结构化数据
6. 性能优化场景:全预加载 + 多线程(高配置服务器)
场景:Kali 运行在 8 核 16GB 内存服务器上,破解 Windows 7 复杂哈希,需最大化利用硬件资源提升速度。
# 命令
ophcrack -g -d /root/ophcrack_tables/ -t win7_x64 -f hash.txt -n 8 -p 3 -D -l high_perf_log.txt
# 参数解析
# -n 8:启用 8 线程(匹配 8 核 CPU,并行处理哈希比对)
# -p 3:彩虹表全预加载(将所有表数据加载到内存,避免磁盘 IO 瓶颈,需 8GB+ 内存)
# -D:详细调试模式(查看线程运行状态、表加载进度,便于优化)
# 其他参数:-d 指定自定义表目录,-f 加载哈希文件,-l 保存日志
# 性能验证
# 破解开始后,通过 top 命令查看 CPU 占用(应为 800% 左右,即 8 核满负载)
# 日志中可查看"Candidates per second: 50000+"(每秒比对 5 万+ 候选密码,比默认配置提升 2-3 倍)
7. 特殊场景:仅破解指定用户哈希
场景:hash.txt 中包含多个用户哈希,仅需破解管理员用户(如 Administrator、admin),减少无关计算。
# 步骤 1:筛选指定用户的哈希(生成新文件 admin_hash.txt)
grep -E "Administrator|admin" hash.txt > admin_hash.txt
# 步骤 2:破解筛选后的哈希
ophcrack -g -d /usr/share/ophcrack/tables/ -t xp_free_fast -f admin_hash.txt -o admin_result.txt -u
# 命令解析
# grep -E "Administrator|admin":用正则筛选含 Administrator 或 admin 的行(即目标用户哈希)
# 后续破解命令:仅针对 admin_hash.txt 中的哈希,减少计算量,提升效率
# 结果查看
# 打开 admin_result.txt,仅包含 Administrator 和 admin 用户的"用户名:密码"结果
四、常见问题与解决方案
| 常见问题 | 原因分析 | 解决方案 |
|---|---|---|
| "No tables found in directory /path/to/tables" | 1. -d 指定的目录不存在;2. 目录下无对应表的子目录(如 -t xp_free_fast,但目录下无该子目录) | 1. 用 ls /path/to/tables 验证目录是否存在;2. 确认表子目录名与 -t 指定的一致(如 xp_free_fast 需存在同名子目录);3. 重新下载彩虹表并解压到正确目录 |
| "Out of memory"(内存不足) | -p 3(全预加载)时,彩虹表体积过大(如 win7_x64 表约 10GB),内存不足 | 1. 降低预加载级别:将 -p 3 改为 -p 2(预加载索引+末尾)或 -p 1(仅预加载索引);2. 关闭其他占用内存的进程(如用 kill 命令结束无关程序);3. 若硬件允许,升级内存到 16GB+ |
| "0 hashes cracked"(破解成功率为 0) | 1. 彩虹表版本与 Windows 系统不匹配(如用 XP 表破解 Windows 10 哈希);2. 密码复杂度超出表覆盖范围(如 12 位混合字符密码,免费表仅支持 8 位以内);3. 哈希文件格式错误(非 pwdump 或 session 格式) | 1. 确认目标系统版本,下载对应彩虹表(如 Windows 10 需专用表);2. 启用暴力破解补充(默认 -B 已启用,无需额外参数);3. 用 cat hash.txt 查看哈希格式,确保为"用户名:RID:LM哈希:NTLM哈希::" |
| 会话恢复失败("Session file corrupted") | 1. 会话文件(如 win7_session.sav)被误删或修改;2. 恢复时使用的彩虹表目录与保存会话时不一致 | 1. 确保会话文件完整,未被编辑;2. 恢复时 -d 指定的表目录需与保存会话时完全一致(如之前用 /root/tables,恢复时不可改为 /usr/share/tables) |
五、注意事项与法律声明
- 彩虹表合法性:仅使用开源免费彩虹表(如官网提供的 xp_free_fast、vista_free),避免使用盗版或侵权的商业彩虹表。
- 授权要求:仅可对合法授权的目标系统使用(如企业内部运维、客户授权的渗透测试),未经授权破解他人系统密码,涉嫌违反《中华人民共和国网络安全法》《刑法》,需承担法律责任。
- 表更新:Windows 10/11 系统的哈希算法(如 NTLMv2)已升级,传统彩虹表破解效率极低,建议搭配其他工具(如 hashcat)联合使用。
- 数据安全:哈希文件、破解结果、会话文件包含敏感信息,需加密存储(如用 zip -e 加密),避免泄露。