CTF压缩包题型4款核心工具使用方法总结
一、John the Ripper(JtR):通用压缩包破解入门工具
核心定位
开源跨平台密码破解工具,CTF压缩包暴力破解的入门首选,支持ZIP/RAR/7Z等几乎所有主流压缩格式,核心逻辑为提取加密哈希→破解哈希,兼容性强、操作门槛低,适合无GPU环境、简单密码的快速破解。
1. 全平台详细安装步骤
| 平台 | 详细安装&验证步骤 |
|---|---|
| Kali Linux(首选) | 1. 系统默认自带,直接打开终端验证:john --version,输出版本号即安装成功2. 无自带则执行安装命令: sudo apt update && sudo apt install john -y3. 解压必备通用字典rockyou.txt(CTF必用): sudo gunzip /usr/share/wordlists/rockyou.txt.gz4. 验证字典路径: ls /usr/share/wordlists/rockyou.txt,有输出即正常 |
| Windows | 1. 前往JtR官网下载Windows OpenCL 预编译版 2. 解压到无中文、无空格的路径(如 D:\Tools\john)3. 按下Win+R,输入 cmd打开命令提示符,执行cd D:\Tools\john\run进入运行目录4. 验证: john.exe --version,输出版本号即成功 |
| macOS | 1. 安装Homebrew(已安装可跳过):/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"2. 执行安装命令: brew install john3. 验证: john --version |
2. 核心操作:标准压缩包破解全流程(以ZIP为例,必学)
前置准备
将待破解的加密压缩包encrypted.zip放到终端当前工作目录(避免中文/空格路径)。
Step 1:提取压缩包加密哈希(必做,核心前置步骤)
JtR不直接破解压缩包,需先提取和密码绑定的哈希值,剥离压缩包无关结构,提升破解效率。
# 核心命令:提取ZIP压缩包哈希,保存到zip.hash文件
zip2john encrypted.zip > zip.hash
# 其他格式对应命令
rar2john encrypted.rar > rar.hash # RAR格式
7z2john encrypted.7z > 7z.hash # 7Z格式
- 操作验证:执行
cat zip.hash,能看到以encrypted.zip:$zip2$开头的长字符串,即提取成功。 - 踩坑提示:若提示
zip2john: 未找到命令,Kali执行sudo apt install john-data,Windows用完整路径zip2john.exe。
Step 2:字典攻击(CTF最常用,优先尝试)
用通用字典rockyou.txt破解哈希,60%的CTF压缩包密码可通过此方式破解。
# Linux/macOS 核心命令
john --wordlist=/usr/share/wordlists/rockyou.txt zip.hash
# Windows 核心命令(run目录下执行)
john.exe --wordlist=rockyou.txt zip.hash
- 成功输出示例:
其中Using default input encoding: UTF-8 Loaded 1 password hash (ZIP, WinZip [PBKDF2-SHA1 256/256 AVX2 8x]) Cost 1 (iteration count) is 100000 for all loaded hashes Will run 4 OpenMP threads Press 'q' or Ctrl-C to abort, 'h' for help, almost any other key for status 123456 (encrypted.zip) 1g 0:00:00:01 DONE (2026-02-25 15:30) 0.8928g/s 10240p/s 10240c/s 10240C/s 123456 Use the "--show" option to display all of the cracked passwords reliably Session completed123456就是压缩包的明文密码。
Step 3:查看已破解的密码
破解完成后,可随时查看历史破解结果,无需重新跑字典:
# 核心命令
john --show zip.hash
# 对应格式
john --show rar.hash
john --show 7z.hash
- 成功输出示例:
encrypted.zip:123456:secret.txt:encrypted.zip::encrypted.zip 1 password hash cracked, 0 left
Step 4:掩码攻击(已知密码格式时使用,精准高效)
若通过题目线索知道密码的格式/长度,无需大字典,用掩码模式精准破解,速度是字典攻击的10倍以上。
掩码语法(必记)
| 占位符 | 对应字符集 |
|---|---|
?l |
小写字母 a-z |
?u |
大写字母 A-Z |
?d |
数字 0-9 |
?s |
特殊符号 !@#$%^&*()等 |
?a |
所有字符(小写+大写+数字+符号) |
高频场景命令示例
# 场景1:密码是4位纯数字(如1234)
john --mask=?d?d?d?d zip.hash
# 场景2:密码是3个小写字母+2个数字(如abc12)
john --mask=?l?l?l?d?d zip.hash
# 场景3:密码是大写开头+3个小写+2个数字(如Abcd12)
john --mask=?u?l?l?l?d?d zip.hash
# 场景4:密码固定前缀为CTF,后接4位数字(如CTF1234)
john --mask=CTF?d?d?d?d zip.hash
3. 核心参数速查表
| 参数 | 详细作用 | 使用场景 |
|---|---|---|
--wordlist=字典路径 |
指定破解用的字典文件 | 字典攻击,必选参数 |
--mask=掩码规则 |
启用掩码攻击,指定密码格式 | 已知密码长度/字符规则时使用 |
--format=zip/rar/7z |
强制指定哈希格式,避免自动识别错误 | 哈希识别失败、多格式混合时使用 |
--incremental |
启用全量增量暴力破解,无任何限制 | 完全无密码线索时兜底使用(速度极慢,不推荐优先用) |
--show |
查看已破解的密码结果 | 破解完成后查看密码、验证破解状态 |
--session=会话名 |
保存破解会话,支持断点续跑 | 长时间破解,中途需要暂停时使用 |
--restore=会话名 |
恢复之前保存的破解会话 | 续跑中断的破解任务 |
4. 避坑指南(新手必看)
- 绝对不要用中文、空格、特殊符号的路径存放压缩包/字典/工具,否则会提示文件找不到。
- 仅支持RAR3格式,RAR5格式兼容性极差,遇到RAR5直接换Hashcat。
- 提取哈希后不要修改哈希文件的核心内容,否则会导致破解失败。
- Linux下权限不足时,命令前加
sudo执行。 - 破解中途按
q可正常退出,按Ctrl+C强制退出可能丢失会话。
二、Hashcat:GPU加速破解天花板工具
核心定位
世界最快的开源密码恢复工具,核心优势是极致GPU加速,破解速度是JtR的10-100倍,完美支持RAR5、AES-256加密格式,适配复杂长密码、大字典攻击场景,是CTF压缩包进阶破解的首选工具。
1. 全平台详细安装步骤
前置要求
- NVIDIA显卡需安装CUDA Toolkit,AMD显卡需安装ROCm驱动,否则仅能使用CPU(速度极慢,不推荐)。
- 验证GPU可用性:Windows/Linux终端执行
nvidia-smi,能看到显卡型号、显存信息即驱动正常。
| 平台 | 详细安装&验证步骤 |
|---|---|
| Kali Linux(首选) | 1. 系统默认自带,执行验证:hashcat --version,输出版本号即成功2. 无自带则安装: sudo apt update && sudo apt install hashcat -y3. 验证GPU识别: hashcat -I,能看到显卡设备信息即正常 |
| Windows | 1. 前往Hashcat官网下载预编译版 2. 解压到无中文、无空格的路径(如 D:\Tools\hashcat)3. 按下Win+R,输入 cmd打开命令提示符,执行cd D:\Tools\hashcat进入目录4. 验证: hashcat.exe --version,输出版本号即成功5. 验证GPU识别: hashcat.exe -I,能看到显卡信息即正常 |
| macOS | 1. 安装:brew install hashcat2. 验证: hashcat --version注意:macOS对GPU加速支持有限,优先用Linux/Windows |
2. 核心操作:标准压缩包破解全流程(以ZIP为例,必学)
前置准备
将待破解的加密压缩包encrypted.zip放到终端当前工作目录,提前准备好字典文件(如rockyou.txt)。
Step 1:提取压缩包加密哈希(同JtR,必做)
用zip2john/rar2john提取哈希,和JtR完全通用:
# 核心命令
zip2john encrypted.zip > zip.hash # ZIP格式
rar2john encrypted.rar > rar5.hash # RAR5格式
7z2john encrypted.7z > 7z.hash # 7Z格式
Step 2:清理哈希文件(关键步骤,决定破解成败)
Hashcat仅识别纯哈希字符串,必须删除哈希文件中的冗余内容,否则会提示“哈希格式无效”。
详细清理步骤
- 用记事本/vim打开提取的
zip.hash文件; - 找到行首的
文件名:(如encrypted.zip:),将其完全删除; - 仅保留以$zip2$/$rar5$/$7z$开头,到行尾的完整哈希字符串;
- 保存清理后的文件为
clean_hash.txt。
- 清理前示例:
encrypted.zip:$zip2$*0*3*0*555...*123* - 清理后示例:
$zip2$*0*3*0*555...*123*
Step 3:确认哈希类型码(必做,错误则完全无法破解)
Hashcat通过-m参数指定哈希类型,必须和压缩包格式完全匹配,CTF高频压缩包类型码如下:
| 压缩包格式 | 加密类型 | Hashcat类型码(-m参数) |
|---|---|---|
| ZIP | 标准加密 | 13600 |
| RAR5 | 标准加密 | 12500 |
| 7Z | 标准加密 | 11600 |
| ZIP | AES-256加密 | 23001 |
Step 4:字典攻击(复杂密码首选)
用GPU加速执行字典攻击,命令格式固定,替换类型码和哈希文件即可:
# Linux/macOS 核心命令(ZIP格式示例)
hashcat -m 13600 -a 0 clean_hash.txt /usr/share/wordlists/rockyou.txt
# Windows 核心命令
hashcat.exe -m 13600 -a 0 clean_hash.txt rockyou.txt
# RAR5格式示例
hashcat -m 12500 -a 0 clean_hash.txt rockyou.txt
- 参数解释:
-m 13600:指定哈希类型码,必须和格式匹配;-a 0:指定攻击模式为字典攻击,固定写法。
- 成功输出示例:
其中冒号后的$zip2$*0*3*0*555...*123*:123456 Session..........: hashcat Status...........: Cracked Hash.Type........: ZIP Hash.Target......: $zip2$*0*3*0*555...*123* Time.Started.....: Tue Feb 25 15:40:00 2026 Time.Estimated...: Tue Feb 25 15:40:02 2026 Guess.Base.......: File (rockyou.txt) Speed.#1.........: 2456.2 kH/s (0.42ms) @ Accel:32 Loops:1024 Thr:1024 Vec:1 Recovered........: 1/1 (100.00%) Digests123456就是明文密码。
Step 5:掩码攻击(已知密码格式,效率拉满)
已知密码格式时,用掩码攻击无需字典,GPU加速下每秒可跑百万次,命令格式如下:
# 核心格式:hashcat -m 类型码 -a 3 哈希文件 掩码规则
# 场景1:4位纯数字密码
hashcat -m 13600 -a 3 clean_hash.txt ?d?d?d?d
# 场景2:3小写+2数字(共5位)
hashcat -m 13600 -a 3 clean_hash.txt ?l?l?l?d?d
# 场景3:固定前缀flag{,后接4位小写字母,后缀}
hashcat -m 13600 -a 3 clean_hash.txt flag{?l?l?l?l}
# 场景4:8位混合字符(大写+小写+数字)
hashcat -m 13600 -a 3 clean_hash.txt ?a?a?a?a?a?a?a?a
- 参数解释:
-a 3固定为掩码攻击模式,掩码语法和JtR完全通用。
Step 6:查看已破解的密码
# 核心命令,替换对应的类型码和哈希文件
hashcat -m 13600 clean_hash.txt --show
3. 核心参数速查表
| 参数 | 详细作用 | 使用场景 |
|---|---|---|
-m 类型码 |
强制指定哈希类型,必须和压缩包格式匹配 | 所有破解场景,必选参数 |
-a 攻击模式 |
指定破解的攻击模式,0=字典攻击,3=掩码攻击 | 所有破解场景,必选参数 |
-O |
启用优化内核,破解速度提升30%+ | 短密码(16位以内)破解时使用 |
--force |
忽略GPU驱动警告,强制启动破解 | 驱动兼容报错、新手无法解决设备识别问题时使用 |
--show |
查看已破解的密码结果 | 破解完成后查看密码 |
--restore |
恢复中断的破解会话,支持断点续跑 | 长时间破解中途退出后,续跑任务 |
-w 4 |
启用最高性能模式,最大化占用GPU资源 | 电脑无其他任务,追求最快破解速度时使用 |
-I |
查看Hashcat识别到的所有计算设备(GPU/CPU) | 验证GPU是否被正常识别 |
4. 避坑指南(新手必看)
- 哈希类型码必须100%正确,错误的类型码会导致完全无法破解,甚至误报结果。
- 哈希文件必须清理干净,仅保留纯哈希字符串,不能有文件名、空格、换行等冗余内容。
- 笔记本电脑破解时,建议插电源,否则GPU会降频,破解速度大幅下降。
- 破解中途按
q正常退出,会自动保存会话,下次用--restore可直接续跑。 - 无GPU环境不要用Hashcat,CPU破解速度比JtR还慢,优先用JtR。
- 遇到RAR5格式,直接用Hashcat,不要用JtR。
三、bkcrack:ZIP明文攻击专属神器
核心定位
针对ZipCrypto加密ZIP的专项破解工具,利用ZIP流加密算法漏洞,仅需已知压缩包内文件的部分/全部明文内容,即可恢复加密密钥,无需暴力破解、无需字典,突破ARCHPR等图形化工具的限制,是CTF ZIP题型的进阶杀器。
关键限制:仅支持ZipCrypto加密的ZIP文件,不支持AES-256加密的ZIP。
1. 全平台详细安装步骤
| 平台 | 详细安装&验证步骤 |
|---|---|
| Kali Linux | 1. 安装依赖:sudo apt update && sudo apt install cmake build-essential git -y2. 克隆源码编译: git clone https://github.com/kimci86/bkcrack.gitcd bkcrack && mkdir build && cd buildcmake .. && make && sudo make install3. 验证: bkcrack --version,输出版本号即成功 |
| Windows(新手首选) | 1. 前往bkcrack GitHub Releases下载Windows预编译版 2. 解压到无中文、无空格的路径(如 D:\Tools\bkcrack)3. 按下Win+R,输入 cmd打开命令提示符,执行cd D:\Tools\bkcrack进入目录4. 验证: bkcrack.exe --version,输出版本号即成功 |
| macOS | 1. 安装:brew install bkcrack2. 验证: bkcrack --version |
2. 核心操作1:完整明文攻击全流程(最常用,成功率100%)
前置场景说明
加密压缩包encrypted.zip内有2个文件:
flag.txt:目标加密文件,需要破解;readme.txt:已知完整内容的文件,内容为Hello CTF 2026!,无任何修改。
Step 1:确认ZIP加密类型(必做,否则会失败)
- 用7-Zip打开
encrypted.zip,右键点击文件→属性; - 查看「加密方式」:必须显示ZipCrypto,如果是AES-256,此工具完全不支持,直接放弃。
Step 2:准备明文文件
- 新建文本文档,命名为
known_readme.txt; - 写入和压缩包内
readme.txt完全一致的内容(包括换行、空格、编码、标点符号,一个字符都不能差); - 保存文件,放到终端当前工作目录。
Step 3:提取加密密钥(核心步骤)
执行命令,关联加密包、包内已知文件、本地明文文件,提取加密密钥:
# Linux/macOS 核心命令
bkcrack -C encrypted.zip -c readme.txt -p known_readme.txt
# Windows 核心命令
bkcrack.exe -C encrypted.zip -c readme.txt -p known_readme.txt
- 参数解释:
-C encrypted.zip:指定目标加密ZIP包的路径;-c readme.txt:指定压缩包内,内容已知的文件名;-p known_readme.txt:指定本地保存的明文文件路径。
- 成功输出示例:
复制3个Key的值,后续步骤必须使用。bkcrack 1.6.0 - (c) 2022-2024 Kimci86 [i] Input: ZLIB compressed data [i] Minimum overlap: 8 bytes [i] Attack on 32 bytes of compressed data [+] Keys found! Key 0: 1a2b3c4d Key 1: 5e6f7g8h Key 2: 9i0j1k2l [i] Time elapsed: 00:00:02
Step 4:用密钥生成无密码解密包
执行命令,用提取到的密钥,生成一个无密码的解密ZIP包,可直接解压:
# Linux/macOS 核心命令(替换3个Key为你自己的)
bkcrack -C encrypted.zip -k 1a2b3c4d 5e6f7g8h 9i0j1k2l -U decrypted.zip
# Windows 核心命令
bkcrack.exe -C encrypted.zip -k 1a2b3c4d 5e6f7g8h 9i0j1k2l -U decrypted.zip
- 参数解释:
-k 密钥1 密钥2 密钥3:填入Step3提取到的3个密钥,空格分隔;-U decrypted.zip:指定生成的无密码ZIP包的名称。
Step 5:解压获取flag
直接解压生成的decrypted.zip,无需密码,即可打开flag.txt获取目标flag。
3. 核心操作2:部分明文攻击全流程(进阶场景,CTF高频)
前置场景说明
不知道压缩包内文件的完整内容,仅知道文件开头的固定内容(CTF最常见:flag.txt的固定前缀flag{,长度6个字符)。
详细操作步骤
- 确认加密类型为ZipCrypto,步骤同上;
- 新建明文文件
partial_known.txt,写入已知的固定内容flag{,保存; - 执行提取密钥命令,添加
-x 0参数,指定明文从文件开头偏移0位开始:# 核心命令 bkcrack -C encrypted.zip -c flag.txt -p partial_known.txt -x 0 - 等待密钥提取成功,后续生成解密包、解压的步骤和完整明文攻击完全一致。
技巧:已知明文长度越长,密钥提取速度越快、成功率越高,优先找尽可能长的已知内容。
4. 核心参数速查表
| 参数 | 详细作用 | 使用场景 |
|---|---|---|
-C 加密ZIP路径 |
指定目标加密ZIP压缩包的路径 | 所有场景,必选参数 |
-c 包内已知文件名 |
指定压缩包内,内容已知的文件名称(必须和压缩包里的文件名完全一致) | 所有场景,必选参数 |
-p 本地明文文件路径 |
指定本地保存的、已知内容的明文文件路径 | 所有场景,必选参数 |
-k 密钥1 密钥2 密钥3 |
填入提取到的3个加密密钥 | 生成无密码解密包时使用,必选参数 |
-U 解密包输出路径 |
指定生成的无密码ZIP包的路径和名称 | 生成解密包时使用,必选参数 |
-x 偏移量 |
指定已知明文在包内文件中的起始字节位置,默认0 | 部分明文攻击场景使用,必选参数 |
5. 避坑指南(新手必看)
- 明文内容必须和压缩包内的文件100%一致,包括空格、换行、编码、标点符号,哪怕差一个字符都无法提取密钥。
- 仅支持ZipCrypto加密,AES-256加密完全不支持,先确认加密类型再操作。
- 压缩包内的文件必须是未压缩存储或ZLIB压缩,其他压缩格式不支持。
- 部分明文攻击时,已知明文长度至少8个字节,成功率才会有保障。
- 密钥输入时不要输错顺序,3个密钥的顺序不能调换,否则会生成不能调换,否则会生成损坏的压缩包。
四、crunch:定制化字典生成辅助神器
核心定位
轻量开源的密码字典生成工具,可精准控制密码的长度、字符集、前缀/后缀,生成高度定制化的密码字典,配合JtR、Hashcat使用,大幅提升已知密码规则场景的破解成功率。
1. 全平台详细安装步骤
| 平台 | 详细安装&验证步骤 |
|---|---|
| Kali Linux(首选) | 1. 系统默认自带,验证:crunch --version,输出版本号即成功2. 无自带则安装: sudo apt update && sudo apt install crunch -y |
| Windows | 1. 前往SourceForge下载Windows版 2. 解压到无中文路径,CMD进入目录执行 crunch.exe --version验证3. 推荐用WSL(Linux子系统)运行,兼容性更好 |
| macOS | 1. 安装:brew install crunch2. 验证: crunch --version |
2. 核心语法&详细使用方法
基础固定语法(必记)
crunch <最小长度> <最大长度> [自定义字符集] [可选参数] -o 字典输出路径
- 核心参数解释:
<最小长度>:生成的密码的最小字符长度,必填;<最大长度>:生成的密码的最大字符长度,必填;[自定义字符集]:可选,指定密码包含的字符(如数字、字母、符号),不指定则默认用小写字母a-z;-o 字典输出路径:指定生成的字典文件的保存路径和名称,必填。
技巧:生成固定长度的密码时,最小长度和最大长度设为相同值即可。
3. CTF高频场景详细命令示例
所有示例均可直接复制使用,替换对应参数即可。
场景1:生成固定长度纯数字字典(最常用)
- 需求:生成4位纯数字密码字典(0000-9999),保存为
4digit.txt
# 核心命令
crunch 4 4 0123456789 -o 4digit.txt
- 解释:4 4=固定4位长度,0123456789=字符集为0-9数字,生成10000个密码。
场景2:生成小写字母+数字混合字典
- 需求:生成6位小写字母+数字混合的密码字典,保存为
6mix.txt
# 核心命令
crunch 6 6 abcdefghijklmnopqrstuvwxyz0123456789 -o 6mix.txt
- 扩展:需加大写字母,字符集添加
ABCDEFGHIJKLMNOPQRSTUVWXYZ即可。
场景3:生成带固定前缀的字典(CTF高频)
- 需求:密码固定前缀为
CTF,后接4位数字(如CTF1234),总长度7位,保存为ctf_prefix.txt
# 核心命令
crunch 7 7 0123456789 -p CTF -o ctf_prefix.txt
- 关键:总长度必须包含前缀的长度(CTF3位+4位数字=7位),否则会报错。
场景4:生成带固定后缀的字典
- 需求:密码固定后缀为
@2026,前接3位小写字母(如abc@2026),总长度8位,保存为suffix.txt
# 核心命令
crunch 8 8 abcdefghijklmnopqrstuvwxyz -s @2026 -o suffix.txt
场景5:生成指定字符集的精简字典
- 需求:已知密码仅包含
ctf1236个字符,长度5位,生成精简字典,避免冗余,提升破解速度
# 核心命令
crunch 5 5 ctf123 -o custom.txt
场景6:限制字典大小,避免生成超大文件
- 需求:生成8位数字字典,限制字典最大为100M,避免占用过多磁盘空间
# 核心命令
crunch 8 8 0123456789 -b 100M -o 8digit.txt
4. 核心参数速查表
| 参数 | 详细作用 | 使用场景 |
|---|---|---|
-o 输出路径 |
指定生成的字典文件的保存路径和名称 | 所有场景,必选参数 |
-p 固定前缀 |
指定密码的固定前缀,前缀会自动添加到每个密码开头 | 已知密码前缀时使用 |
-s 固定后缀 |
指定密码的固定后缀,后缀会自动添加到每个密码结尾 | 已知密码后缀时使用 |
-b 大小限制 |
限制生成的字典文件的最大大小,单位K/M/G | 生成大字典时,避免磁盘占满 |
-z 压缩格式 |
生成字典后自动压缩,支持gzip/bzip2/7z | 保存大字典时节省磁盘空间 |
5. 避坑指南&联动使用方法
避坑指南
- 不要盲目生成超大字典:8位混合字符(大小写+数字+符号)的字典体积超过100G,普通电脑根本跑不完,优先根据线索缩小字符集和长度。
- 前缀/后缀必须算入总长度,否则会报错或生成错误的密码。
- 字符集不要写错,比如需要小写字母却写了大写,会导致生成的字典完全无效。
- Windows平台优先用WSL运行,原生Windows版容易出现字符编码问题。
与JtR/Hashcat联动使用(核心)
生成字典后,直接替换破解命令中的rockyou.txt路径即可:
# 配合John使用
john --wordlist=生成的字典.txt zip.hash
# 配合Hashcat使用
hashcat -m 13600 -a 0 clean_hash.txt 生成的字典.txt
五、CTF压缩包破解工具选择决策树(新手必看)
拿到一个压缩包题目,按以下顺序操作,可90%以上的场景高效解决:
- 用7-Zip打开压缩包,判断是否为伪加密(能看到文件列表,解压提示加密)→ 用ZipCenOp/十六进制编辑器修复,无需破解;
- 确认是真加密后,查看加密方式:
- 是ZipCrypto加密的ZIP,且有已知明文线索 → 优先用bkcrack明文攻击,无需暴力破解;
- 是RAR5/AES加密,或无已知明文线索 → 进入下一步;
- 有密码格式/长度线索 → 用crunch生成定制化字典,配合HashcatGPU加速破解;
- 无任何线索,尝试通用密码 → 用John the Ripper配合rockyou.txt字典破解;
- John破解无果,且有GPU环境 → 换Hashcat重新跑字典/掩码攻击。
4款工具破解范围、哈希提取命令与可提取哈希场景全说明
先明确4款工具的核心定位边界,避免功能混淆:
- John the Ripper(JtR):通用型哈希破解工具,自带全场景哈希提取能力,是提取哈希的核心工具;
- Hashcat:极致GPU加速的哈希破解工具,本身不具备哈希提取能力,完全复用JtR提取的哈希,破解范围覆盖JtR所有场景,且支持更多高强度加密格式;
- bkcrack:ZipCrypto加密ZIP的专项破解工具,无需提取哈希、无需暴力破解,仅通过已知明文恢复加密密钥,破解范围极聚焦;
- crunch:纯字典生成辅助工具,无任何破解、哈希提取能力,仅为JtR/Hashcat提供定制化密码字典。
一、4款工具完整可破解范围
1. John the Ripper(JtR):全场景通用破解
JtR是CTF赛场的「万能破解工具箱」,支持超过400种加密格式,核心可破解范围覆盖CTF90%以上的密码类场景,具体如下:
| 场景分类 | 可破解的具体格式/内容 |
|---|---|
| 压缩包类(核心) | ZIP、RAR3、7Z、ARJ、ACE、TAR.GZ、BZIP2、XZ、CAB、LZH等几乎所有主流压缩格式 |
| 办公文档类(CTF高频) | 加密PDF、全系列Office文档(Word/Excel/PPT 97-2024)、WPS加密文档、RTF加密文档 |
| 系统账户凭证类 | Linux /etc/shadow 系统用户密码、Windows SAM/NTLM哈希、macOS用户密码、Docker容器凭证、LDAP认证哈希 |
| 网络认证类 | WiFi WPA/WPA2/WPA3握手包、SSH私钥加密密码、OpenVPN/PPTP VPN凭证、HTTP Basic/Digest认证哈希、FTP/SMB认证哈希 |
| 加密容器类 | Keepass/KeePassXC数据库、TrueCrypt加密卷、VeraCrypt加密卷、BitLocker分区(基础支持)、ZIP加密分卷 |
| 其他CTF高频场景 | 加密Python脚本、Linux PAM认证、MySQL/PostgreSQL数据库密码、Apache .htpasswd凭证、压缩包伪加密修复辅助 |
2. Hashcat:GPU加速高强度破解
Hashcat支持超过450种哈希类型,JtR能破解的场景它全部支持,且对高强度加密格式的兼容性、破解速度远超JtR,核心补充可破解范围:
- 完美支持RAR5格式(JtR对RAR5兼容性极差);
- 全系列AES加密格式(ZIP AES-256、7Z AES加密、Office 2016+高强度加密);
- 专业加密容器:BitLocker、VeraCrypt、LUKS全系列、FileVault2;
- 高迭代KDF算法加密:PBKDF2、bcrypt、scrypt、Argon2等现代加密算法;
- 无线类:WPA/WPA3 PMKID、WPA Enterprise、WEP密钥。
3. bkcrack:专项破解工具
破解范围极度聚焦,无任何扩展能力:
- 仅支持ZipCrypto(传统PKZIP流加密) 格式的ZIP压缩包;
- 不支持AES加密的ZIP、不支持RAR/7Z/ARJ等任何其他压缩格式;
- 核心破解逻辑:利用ZipCrypto加密算法漏洞,通过已知压缩包内文件的部分/全部明文,直接恢复加密密钥,无需暴力猜密码、无需提取哈希。
4. crunch:纯辅助工具
- 本身无任何破解、哈希提取能力,仅用于生成高度定制化的密码字典;
- 适配所有需要字典攻击的场景,生成的字典可直接给JtR、Hashcat等所有破解工具使用。
二、全场景哈希提取核心命令大全
核心前提说明
所有哈希提取工具,均为John the Ripper套件自带的*2john系列工具,安装JtR后即可直接使用:
- Linux/macOS:安装后全局直接调用;
- Windows:解压后在
john/run目录下,用xxx2john.exe调用; - Hashcat完全复用这些提取的哈希,仅需清理掉文件名等冗余内容,保留纯哈希字符串即可使用。
以下为CTF高频场景的提取命令,全部可直接复制使用:
1. 压缩包类(核心高频)
| 压缩格式 | 核心提取命令 | 补充说明 |
|---|---|---|
| ZIP(含分卷) | zip2john encrypted.zip > zip.hash |
分卷包指定第一个分卷:zip2john encrypted.zip.001 > zip_split.hash |
| RAR/RAR5(含分卷) | rar2john encrypted.rar > rar.hash |
分卷包指定第一个分卷:rar2john encrypted.part01.rar > rar_split.hash;新版JtR完美支持RAR5 |
| 7Z | 7z2john encrypted.7z > 7z.hash |
支持LZMA2压缩、AES加密的7Z包 |
| ARJ | arj2john encrypted.arj > arj.hash |
CTF冷门考点,老压缩格式 |
| GZIP | gzip2john encrypted.gz > gzip.hash |
支持gzip加密压缩包 |
| BZIP2 | bzip2john encrypted.bz2 > bz2.hash |
支持bzip2加密压缩包 |
2. 办公文档类(CTF高频)
| 文档格式 | 核心提取命令 | 补充说明 |
|---|---|---|
| 加密PDF | pdf2john encrypted.pdf > pdf.hash |
支持所有版本PDF加密,包括用户密码、所有者密码 |
| Office 97-2003(.doc/.xls/.ppt) | office2john encrypted.doc > office.hash |
老版Office二进制格式 |
| Office 2007+(.docx/.xlsx/.pptx) | office2john encrypted.docx > office.hash |
新版Office OOXML格式,支持高强度加密 |
| WPS加密文档 | wps2john encrypted.wps > wps.hash |
支持WPS全系列加密文档 |
3. 系统账户凭证类
| 凭证类型 | 核心提取命令 | 补充说明 |
|---|---|---|
| Linux系统用户密码 | unshadow /etc/passwd /etc/shadow > linux_hash.txt |
unshadow是JtR自带工具,需同时传入passwd和shadow文件 |
| Windows SAM哈希 | samdump2 SYSTEM SAM > windows_hash.txt |
需导出Windows的SYSTEM和SAM注册表文件 |
| macOS用户密码 | mac2john user.plist > mac_hash.txt |
需导出用户的plist配置文件 |
| .htpasswd Web凭证 | htpasswd2john .htpasswd > htpasswd.hash |
Apache/Nginx Web认证凭证 |
4. 网络认证类
| 认证类型 | 核心提取命令 | 补充说明 |
|---|---|---|
| SSH加密私钥 | ssh2john id_rsa > ssh_hash.txt |
支持RSA/ECDSA/ED25519加密私钥 |
| WiFi WPA/WPA2握手包 | hcx2john capture.hccapx > wifi_hash.txt |
需先用hcxpcapngtool将pcap包转为hccapx格式 |
| OpenVPN加密配置 | openvpn2john encrypted.ovpn > vpn_hash.txt |
支持带密码的OpenVPN配置文件 |
| 加密RAR/RSA密钥 | rsa2john private.key > rsa_hash.txt |
支持加密的RSA私钥文件 |
5. 其他CTF高频场景
| 加密类型 | 核心提取命令 | 补充说明 |
|---|---|---|
| Keepass数据库 | keepass2john database.kdbx > keepass.hash |
支持KeePass 1.x/2.x数据库 |
| TrueCrypt/VeraCrypt加密卷 | truecrypt2john volume.tc > tc_hash.txt |
支持TrueCrypt全系列、基础VeraCrypt格式 |
| 加密Python脚本 | python2john encrypted.pyc > py.hash |
支持加密的Python字节码文件 |
| ZIP伪加密辅助 | zipinfo encrypted.zip |
非提取哈希,用于查看ZIP加密标志位,判断伪加密 |
三、可提取哈希的全场景分类总结
*2john系列工具可提取哈希的核心逻辑:只要是「通过密码派生密钥完成加密/认证」的场景,几乎都能提取出用于暴力破解的哈希值,核心可提取的哈希分为5大类:
- 压缩包加密哈希:ZIP、RAR、7Z等所有主流压缩格式的加密验证数据;
- 文档加密哈希:PDF、Office、WPS等办公文档的密码验证哈希;
- 账户凭证哈希:操作系统、数据库、Web服务的用户密码哈希;
- 密钥/容器加密哈希:SSH私钥、VPN配置、加密数据库、加密磁盘卷的密码验证哈希;
- 网络认证哈希:WiFi、HTTP/FTP/SMB认证的密码哈希。
高频场景Hashcat对应类型码(破解必用)
提取哈希后,给Hashcat使用时需匹配对应的类型码,CTF高频场景速查表:
| 加密格式 | Hashcat类型码(-m参数) |
|---|---|
| ZIP 标准加密 | 13600 |
| ZIP AES-256加密 | 23001 |
| RAR5 标准加密 | 12500 |
| 7Z 标准加密 | 11600 |
| PDF 1.4-1.6 加密 | 10500 |
| PDF 1.7+ 加密 | 10600 |
| Office 2007-2019 | 9600 |
| Linux shadow SHA512 | 1800 |
| Windows NTLM哈希 | 1000 |
| WiFi WPA/WPA2 | 2500 |
| SSH 私钥加密 | 22911 |
| Keepass 数据库 | 13400 |
四、关键注意事项
- 哈希清理规则:给Hashcat使用的哈希,必须删除
文件名:等前缀冗余内容,仅保留$xxx$开头的纯哈希字符串,否则会提示「无效哈希格式」; - 格式匹配要求:Hashcat的
-m类型码必须100%匹配加密格式,错误的类型码会导致破解失败、误报结果; - 工具边界明确:bkcrack无需提取哈希,crunch不具备破解/提取哈希能力,不要混淆工具用途;
- 文件完整性要求:提取哈希时,必须保证源文件完整,损坏、分卷缺失的文件无法提取有效哈希;
- 加密类型限制:ZipCrypto加密的ZIP优先用bkcrack,AES加密、RAR5格式优先用Hashcat,通用场景优先用JtR。
分卷压缩包哈希提取全教程(CTF实战专用)
本文档针对CTF高频的分卷压缩包场景,提供零跳步、可直接复制、避坑拉满的哈希提取方法,覆盖RAR/ZIP/7Z全主流分卷格式,解决90%新手遇到的分卷识别失败、哈希无效、破解无结果等问题。
一、核心前提与必做前置准备(90%的失败都源于此)
1. 核心原理(新手必懂)
分卷压缩包的加密密钥、加密验证信息仅存储在第一个分卷中,其余分卷仅存储压缩数据。因此:
✅ 正确做法:提取哈希时,仅需指定第一个分卷文件,工具会自动识别同目录下的其余连续分卷;
❌ 绝对禁止:用cat/copy命令手动合并分卷后再提取哈希,会破坏分卷结构,导致提取的哈希完全无效、无法破解。
2. 必做前置检查(缺一不可)
(1)分卷完整性检查
- 所有分卷文件必须全部放在同一个文件夹内,不能缺卷、不能拆分目录;
- 分卷编号必须连续(如part01-part05、zip.001-zip.003),缺卷会导致工具无法识别完整结构,提取哈希失败。
(2)分卷命名规范检查(最容易踩坑)
分卷前缀必须100%完全一致,仅编号不同,否则工具无法识别关联分卷,CTF常见规范如下:
| 分卷格式 | 正确命名示例 | 错误命名示例 |
|---|---|---|
| RAR新版分卷 | flag.part01.rar、flag.part02.rar、flag.part03.rar |
flag.part1.rar、flag_02.rar、flag(2).rar |
| RAR老版分卷 | flag.rar(主文件)、flag.r00、flag.r01、flag.r02 |
flag.rar、flag01.r00、flag_1.r01 |
| ZIP/7Z分卷 | flag.zip.001、flag.zip.002、flag.zip.003 |
flag_001.zip、flag.zip.01、flag(1).zip.001 |
Windows用户额外注意:必须先打开「文件资源管理器→查看→显示→文件扩展名」,避免隐藏后缀导致实际文件名是
flag.part01.rar.rar,工具无法识别。
(3)路径与文件有效性检查
- 所有分卷、工具所在路径不能有中文、空格、特殊符号(如括号、 emoji);
- 预验证分卷有效性:用7-Zip打开第一个分卷,能正常看到压缩包内的文件列表,说明分卷结构完整、可被识别;若提示“分卷缺失”“文件损坏”,先修复分卷再提取哈希。
(4)工具版本要求
必须使用最新版John the Ripper(JtR),老版本不支持RAR5分卷、7Z高强度分卷,会导致提取失败。
- Kali更新命令:
sudo apt update && sudo apt install john -y - Windows:从JtR官网下载最新OpenCL预编译版
二、分格式详细哈希提取命令(CTF高频全覆盖)
所有命令均为CTF实战可直接复制使用,区分Linux/macOS与Windows环境,永远仅指定第一个分卷文件。
1. RAR分卷(CTF最常考,分两种命名格式)
RAR分卷是CTF分卷题的绝对主流,分为新版partxx命名和老版rxx命名,提取命令有差异,必须对应使用。
场景1:新版RAR分卷(part01/part02命名,最常见)
- 分卷示例:
flag.part01.rar、flag.part02.rar、flag.part03.rar - 核心提取命令:
# Linux/macOS 核心命令(指定第一个分卷part01)
rar2john flag.part01.rar > rar_split.hash
# Windows 核心命令(john/run目录下执行)
rar2john.exe flag.part01.rar > rar_split.hash
场景2:老版RAR分卷(r00/r01命名)
- 分卷示例:
flag.rar(主文件,必选)、flag.r00、flag.r01、flag.r02 - 注意:老版分卷的主文件是.rar后缀的文件,不是.r00,必须指定.rar主文件,否则提取失败
- 核心提取命令:
# Linux/macOS 核心命令(指定.rar主文件)
rar2john flag.rar > rar_old_split.hash
# Windows 核心命令
rar2john.exe flag.rar > rar_old_split.hash
补充说明
- 完美支持RAR5分卷,新版JtR可直接提取,无需额外参数;
- 提取成功后,哈希文件内会以
$rar$/$rar5$开头,代表格式正确。
2. ZIP分卷(CTF次高频)
ZIP分卷通常为xxx.zip.001/xxx.zip.002命名格式,也有部分是xxx.z01/xxx.z02/xxx.zip格式,对应命令如下:
场景1:标准ZIP分卷(zip.001/zip.002命名)
- 分卷示例:
flag.zip.001、flag.zip.002、flag.zip.003 - 核心提取命令:
# Linux/macOS 核心命令(指定第一个分卷zip.001)
zip2john flag.zip.001 > zip_split.hash
# Windows 核心命令
zip2john.exe flag.zip.001 > zip_split.hash
场景2:老版ZIP分卷(z01/z02命名)
- 分卷示例:
flag.zip(主文件)、flag.z01、flag.z02、flag.z03 - 核心提取命令:
# Linux/macOS 核心命令(指定.zip主文件)
zip2john flag.zip > zip_old_split.hash
# Windows 核心命令
zip2john.exe flag.zip > zip_old_split.hash
补充说明
- 支持ZipCrypto、AES-256加密的ZIP分卷;
- 提取成功后,哈希文件内会以
$zip2$开头,代表格式正确。
3. 7Z分卷(CTF冷门但必考)
7Z分卷命名格式为xxx.7z.001/xxx.7z.002,提取命令如下:
- 分卷示例:
flag.7z.001、flag.7z.002、flag.7z.003 - 核心提取命令:
# Linux/macOS 核心命令(指定第一个分卷7z.001)
7z2john flag.7z.001 > 7z_split.hash
# Windows 核心命令
7z2john.exe flag.7z.001 > 7z_split.hash
补充说明
- 支持LZMA2压缩、AES加密的7Z分卷;
- 提取成功后,哈希文件内会以
$7z$开头,代表格式正确。
三、提取后哈希验证与清理(适配John/Hashcat破解)
1. 验证哈希提取是否成功
执行以下命令,若能正常识别哈希格式,说明提取有效:
# 验证RAR分卷哈希
john --show rar_split.hash
# 验证ZIP分卷哈希
john --show zip_split.hash
# 验证7Z分卷哈希
john --show 7z_split.hash
- 正常输出:提示
0 password hashes cracked, 1 left,代表哈希有效,可正常破解; - 异常输出:提示
No password hashes loaded,代表提取失败,回头检查前置准备、分卷命名、命令是否正确。
2. 给Hashcat使用的哈希清理方法
Hashcat仅识别纯哈希字符串,必须清理冗余内容,步骤如下:
- 用vim/记事本打开提取的
.hash文件; - 删除行首的文件名+冒号(如
flag.part01.rar:); - 仅保留
$rar$/$rar5$/$zip2$/$7z$开头,到行尾的完整哈希字符串; - 保存为
clean_split_hash.txt,即可给Hashcat使用。
3. 破解复用方法
清理后的哈希,破解方法和单文件压缩包完全一致,直接套用之前的命令即可:
# John破解分卷哈希
john --wordlist=rockyou.txt rar_split.hash
# Hashcat破解RAR5分卷哈希(-m 12500为RAR5类型码)
hashcat -m 12500 -a 0 clean_split_hash.txt rockyou.txt
分卷哈希对应的Hashcat类型码,和单文件完全一致:ZIP=13600、RAR5=12500、7Z=11600。
四、CTF高频踩坑与解决方案
| 常见问题 | 核心原因 | 解决方案 |
|---|---|---|
| 执行提取命令后,提示“找不到分卷”“分卷缺失” | 1. 分卷命名前缀不一致;2. 分卷未放在同一目录;3. 指定了错误的第一个分卷 | 1. 统一所有分卷前缀,仅保留编号差异;2. 所有分卷放在同一文件夹;3. 新版分卷指定part01,老版RAR指定.rar主文件 |
| 提取的哈希破解无结果,单密码测试也提示失败 | 1. 手动合并了分卷,哈希无效;2. 分卷不完整,提取了错误哈希;3. 哈希清理错误,格式无效 | 1. 禁止合并分卷,用原生分卷重新提取;2. 补全所有分卷,用7-Zip验证可正常打开;3. 严格按照步骤清理哈希,仅保留纯哈希字符串 |
| RAR5分卷提取失败,提示“不支持的格式” | JtR版本过旧,不支持RAR5格式 | 更新JtR到最新版,Kali执行sudo apt update && sudo apt install john --upgrade |
| 提取的哈希长度过短,John提示“无效哈希” | 分卷文件损坏,加密头信息丢失 | 用7-Zip的“修复压缩包”功能修复分卷,或用MultiPar通过PAR2恢复记录修复 |
| 分卷后缀名被篡改(如zip.001改成了zip.001.jpg) | 工具无法识别分卷格式 | 先把所有分卷的后缀名改回标准格式(如flag.zip.001),保证命名规范,再执行提取 |
五、CTF特殊场景处理
1. 分卷被嵌入到其他文件中
CTF常考“分卷藏在图片/其他文件里”的场景,处理步骤:
- 用
binwalk -e 目标文件提取嵌入的分卷文件; - 把提取出的所有分卷放在同一文件夹,修正命名规范;
- 用7-Zip打开第一个分卷,验证可正常识别文件列表;
- 按上述标准命令提取哈希。
2. 分卷缺失/损坏,有PAR2恢复记录
若题目提供了.par2恢复记录文件,可修复缺失/损坏的分卷:
- 用
MultiPar(Windows)/par2(Linux)工具加载par2文件; - 执行修复,补全缺失的分卷、修复损坏的分卷;
- 修复完成后,再按标准步骤提取哈希。
3. 分卷压缩包是伪加密
分卷压缩包也可能设置伪加密,特征:7-Zip打开能看到文件列表,解压提示加密,提取哈希后破解无结果:
- 把所有分卷文件用十六进制编辑器打开;
- 定位第一个分卷的目录区文件头
50 4B 01 02,将其后第11位字节的09/01改为00; - 保存修改后,直接解压即可,无需破解哈希。
浙公网安备 33010602011771号