rcracki_mt 是 Kali Linux 中一款多线程彩虹表密码破解工具,是 rcrack 的增强版,核心功能是通过预计算的彩虹表(Rainbow Table)快速反向查询哈希值对应的明文密码。其名称中的"mt"代表"Multi-Threaded"(多线程),支持并行计算,破解效率远高于单线程工具,适用于渗透测试、密码审计和合法授权的密码恢复场景。
核心特性与优势:
- 多线程支持:可指定线程数(与 CPU 核心匹配),大幅提升哈希比对速度。
- 多格式输入:支持 raw 哈希、哈希列表文件、pwdump 格式文件(Windows 哈希)、Cain 格式 .lst 文件,适配多种场景。
- 会话管理:支持暂停与恢复破解任务,避免因中断导致的进度丢失。
- 资源控制:可限制内存使用、选择是否保留预计算数据,适配不同硬件环境。
- 算法兼容性:支持 LM、NTLM、MD5、SHA-1 等主流哈希算法(需匹配对应彩虹表)。
二、命令参数解析(表格形式)
1. 输入模式参数
| 参数 | 英文说明 | 中文解析 | 示例 |
|---|---|---|---|
| -h hash | use raw hash as input | 输入单个原始哈希值(如 MD5、SHA-1 哈希) | -h 5d41402abc4b2a76b9719d911017c592(MD5 哈希) |
| -l hash_list_file | use hash list file as input (each hash per line) | 输入哈希列表文件(每行一个哈希,需同算法) | -l md5_hashes.txt(文件含多个 MD5 哈希) |
| -f pwdump_file | use pwdump file (handles lanmanager hash only) | 输入 pwdump 格式文件(仅处理 LM 哈希,Windows 系统导出格式) | -f windows_hash.txt(含 LM/NTLM 哈希的 pwdump 文件) |
| -c lst_file | use .lst (cain format) file as input | 输入 Cain 工具生成的 .lst 格式文件(哈希破解专用格式) | -c cain_hashes.lst(Cain 导出的哈希列表) |
2. 彩虹表与路径参数
| 参数 | 英文说明 | 中文解析 | 示例 |
|---|---|---|---|
| rainbow_table_pathname | pathname(s) of the rainbow table(s) | 彩虹表文件或目录路径,支持通配符(*)匹配多个表 | /root/rt/MD5/*(匹配 MD5 目录下所有彩虹表) |
3. 功能控制参数
| 参数 | 英文说明 | 中文解析 | 示例 |
|---|---|---|---|
| -r [-s session_name] | resume from previous session (optional session name) | 恢复之前的破解会话,-s 可指定会话名(默认自动识别) | -r -s md5_crack(恢复名为 md5_crack 的会话) |
| -t [nr] | use this amount of threads/cores (default: 1) | 指定线程数(建议与 CPU 核心数一致) | -t 4(启用 4 线程) |
| -o [output_file] | write results to this file | 将破解结果写入指定文件(避免终端输出丢失) | -o cracked_passwords.txt |
| -s [session_name] | write session data with this name | 指定会话文件名(用于保存进度,便于后续恢复) | -s ntlm_session(会话数据保存为 ntlm_session) |
| -k | keep precalculation on disk | 保留磁盘上的预计算数据(不加载到内存,节省内存但降低速度) | rcracki_mt -k -h ...(启用磁盘预计算保留) |
| -d | run sha1 hashes against mysqlsha1 tables | 对 SHA-1 哈希使用 MySQL SHA1 表进行破解(适配特定场景) | rcracki_mt -d -h [sha1_hash] ... |
| -m [megabytes] | limit memory usage | 限制最大内存使用(单位:MB),避免资源耗尽 | -m 2048(最大使用 2GB 内存) |
| -v | show debug information | 显示调试信息(表加载进度、哈希匹配过程等) | rcracki_mt -v -h ...(启用详细调试输出) |
4. 官方示例解析
| 示例命令 | 中文解析 |
|---|---|
| rcracki_mt -h 5d41402abc4b2a76b9719d911017c592 -t 2 [path]/MD5 | 1. -h:破解单个 MD5 哈希(对应明文"hello"); 2. -t 2:启用 2 线程; 3. [path]/MD5:指定 MD5 彩虹表目录; 功能:用 2 线程快速破解该 MD5 哈希 |
| rcracki_mt -l hash.txt [path_to_specific_table]/* | 1. -l hash.txt:加载哈希列表文件; 2. [path_to_specific_table]/*:匹配指定目录下所有彩虹表; 功能:批量破解 hash.txt 中的所有哈希 |
| rcracki_mt -f hash.txt -t 4 -o results.txt *.rti | 1. -f hash.txt:处理 pwdump 文件中的 LM 哈希; 2. -t 4:4 线程运行; 3. -o results.txt:结果写入文件; 4. *.rti:匹配当前目录所有 .rti 格式彩虹表; 功能:多线程破解 Windows LM 哈希并保存结果 |
三、完整使用教程(全场景)
1. 前提准备:哈希与彩虹表
核心要素:需准备目标哈希(单哈希/列表/专用格式文件)和匹配的彩虹表(.rti 等格式,与哈希算法对应)。
1.1 获取目标哈希
-
单个哈希:已知 MD5 哈希"e10adc3949ba59abbe56e057f20f883e"(对应"123456"),直接使用。
-
哈希列表文件 :创建 hash_list.txt,每行一个 MD5 哈希:
echo "5d41402abc4b2a76b9719d911017c592" > hash_list.txt echo "e10adc3949ba59abbe56e057f20f883e" >> hash_list.txt -
pwdump 格式文件 :用 pwdump7 从 Windows 导出(含 LM/NTLM 哈希):
pwdump7.exe > windows_pwdump.txt
1.2 准备彩虹表
rcracki_mt 支持 .rti 等格式彩虹表,需根据算法下载:
- 下载地址:RainbowCrack 项目(含多算法彩虹表)。
- 存放目录:建议按算法分类(如 /root/rcracki_tables/MD5/、/root/rcracki_tables/NTLM/)。
2. 场景 1:多线程破解单个 MD5 哈希
# 命令
rcracki_mt -h e10adc3949ba59abbe56e057f20f883e -t 4 /root/rcracki_tables/MD5/* -v
# 参数解析
# -h:单个 MD5 哈希(对应"123456")
# -t 4:4 线程运行(匹配 4 核 CPU)
# /root/rcracki_tables/MD5/*:匹配 MD5 目录下所有彩虹表
# -v:显示调试信息(查看线程状态)
# 输出结果(成功时)
Found: 123456 (hash: e10adc3949ba59abbe56e057f20f883e)
Total cracked: 1 of 1
3. 场景 2:批量破解哈希列表并保存结果
# 命令
rcracki_mt -l hash_list.txt -t 8 /root/rcracki_tables/MD5/* -o md5_results.txt -s md5_session
# 参数解析
# -l hash_list.txt:加载哈希列表文件
# -t 8:8 线程(高效利用 8 核 CPU)
# -o md5_results.txt:结果写入文件
# -s md5_session:会话数据保存为 md5_session(便于中断后恢复)
# 查看结果
cat md5_results.txt
# 输出示例
5d41402abc4b2a76b9719d911017c592:hello
e10adc3949ba59abbe56e057f20f883e:123456
4. 场景 3:破解 Windows LM 哈希(pwdump 文件)
# 命令
rcracki_mt -f windows_pwdump.txt -t 4 /root/rcracki_tables/LM/* -o lm_cracked.txt
# 参数解析
# -f windows_pwdump.txt:处理 pwdump 文件中的 LM 哈希
# -t 4:4 线程
# /root/rcracki_tables/LM/*:LM 彩虹表目录
# -o lm_cracked.txt:保存破解结果
# 结果示例(lm_cracked.txt)
Administrator:123456
TestUser:password
5. 场景 4:暂停与恢复破解会话
# 步骤 1:启动带会话的破解任务
rcracki_mt -l large_hash.txt -t 4 /root/rcracki_tables/NTLM/* -s ntlm_session
# 步骤 2:中途中断(按 Ctrl+C,会话自动保存)
# 步骤 3:恢复会话
rcracki_mt -r -s ntlm_session
# 解析
# -r:恢复会话
# -s ntlm_session:指定需恢复的会话名
# 恢复后将从上次中断位置继续破解,避免重复计算
6. 场景 5:限制内存使用(低配置环境)
# 命令(1GB 内存限制)
rcracki_mt -l hash_list.txt -t 2 /root/rcracki_tables/MD5/* -m 1024 -k
# 参数解析
# -m 1024:最大使用 1GB 内存
# -k:保留预计算数据在磁盘(不加载到内存,进一步降内存占用)
# 适用场景:虚拟机、低配置服务器(避免内存溢出)
四、常见问题与解决方案
| 问题 | 原因 | 解决方案 |
|---|---|---|
| "No rainbow tables found" | 彩虹表路径错误或目录中无匹配文件 | 1. 检查路径是否正确(用 ls 命令验证);2. 确认表文件格式匹配(如 .rti);3. 用通配符 * 匹配所有表 |
| "Hash not found" | 彩虹表不包含该哈希的明文记录或算法不匹配 | 1. 确认哈希算法与表一致(如 MD5 哈希用 MD5 表);2. 尝试更完整的彩虹表;3. 检查哈希是否输入正确 |
| 内存溢出(OOM 错误) | 彩虹表过大,内存不足 | 1. 用 -m 限制内存(如 -m 2048);2. 加 -k 参数保留磁盘数据;3. 减少同时加载的表数量 |
| 会话恢复失败 | 会话文件损坏或彩虹表路径变更 | 1. 确保会话文件(如 ntlm_session)未被删除;2. 恢复时彩虹表路径与初始破解时一致 |
五、注意事项
- 线程数选择:建议线程数 ≤ CPU 核心数(如 4 核 CPU 用 -t 4),避免线程切换开销。
- 法律合规:仅用于合法授权场景,未经许可破解他人密码涉嫌违法。
- 表格式兼容:rcracki_mt 主要支持 RainbowCrack 项目的 .rti 格式表,其他格式可能不兼容。
- 性能优化:彩虹表存放于 SSD 可显著提升读取速度,加速破解过程。