如何高效使用CTF压缩包题型中的4款核心工具?

摘要:一、John the Ripper(JtR):通用压缩包破解入门工具 核心定位 开源跨平台密码破解工具,CTF压缩包暴力破解的入门首选,支持ZIPRAR7Z等几乎所有主流压缩格式,核心逻辑为提取加密哈希→破解哈希,兼容性强、操作门槛低,
一、John the Ripper(JtR):通用压缩包破解入门工具 核心定位 开源跨平台密码破解工具,CTF压缩包暴力破解的入门首选,支持ZIP/RAR/7Z等几乎所有主流压缩格式,核心逻辑为提取加密哈希→破解哈希,兼容性强、操作门槛低,适合无GPU环境、简单密码的快速破解。 1. 全平台详细安装步骤 平台 详细安装&验证步骤 Kali Linux(首选) 1. 系统默认自带,直接打开终端验证:john --version,输出版本号即安装成功 2. 无自带则执行安装命令: sudo apt update && sudo apt install john -y 3. 解压必备通用字典rockyou.txt(CTF必用): sudo gunzip /usr/share/wordlists/rockyou.txt.gz 4. 验证字典路径: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 john 3. 验证: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 completed 其中123456就是压缩包的明文密码。 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 -y 3. 验证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 hashcat 2. 验证: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%) Digests 其中冒号后的123456就是明文密码。 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 -y 2. 克隆源码编译: git clone https://github.com/kimci86/bkcrack.git cd bkcrack && mkdir build && cd build cmake .. && make && sudo make install 3. 验证: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 bkcrack 2. 验证: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:指定本地保存的明文文件路径。 成功输出示例: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 复制3个Key的值,后续步骤必须使用。 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 crunch 2. 验证: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; 保存修改后,直接解压即可,无需破解哈希。