简介:本资源是一套面向信息安全初学者与渗透测试爱好者的压缩包密码破解实战工具集,专为解决RAR、ZIP等常见压缩文件未知密码的应急恢复需求而设计,支持GPU加速提升爆破效率。资源共包含2000个文件,主体为hashcat与john the ripper生态工具链:含1262个.cl内核脚本、412个.dll动态库、399个.so模块及大量.chr字典、.rule规则、.hcchr哈希字符集等,完整覆盖密码哈希提取、GPU并行计算、掩码/字典/组合攻击等关键环节,压缩包大小181.14MB,结构规范便于快速定位核心组件。目前已有8687人学习下载,适合需在CTF练习、红队演练或数据恢复场景中快速上手密码破解流程的学习者。用户可直接调用预置脚本完成rar2john哈希提取与hashcat指令一键执行,配套有清晰使用说明、通用命令模板及典型输出示例,大幅降低工具链配置门槛。
1. 不知道 RAR、ZIP 压缩包密码怎么办?这不是玄学,是算力+策略的工程问题
你刚接手一个历史项目包,里面是某图像处理Demo的完整源码,但解压时弹出「请输入密码」——没有文档、没有交接记录、连压缩时间都模糊不清。别急着重写或放弃,这根本不是“运气题”,而是典型的密码空间可收敛、攻击面明确、GPU 可加速的离线暴力破解场景。本资源是一套实测可用的压缩包密码恢复工具链,核心不是靠撞大运,而是用现代 GPU 算力(RTX 3060 及以上即可)把原本需要数天的穷举压缩到小时级,同时内置字典生成、掩码规则、哈希预计算三大能力,覆盖 ZIP(AES-256/ZipCrypto)、RAR(v4/v5)两类主流格式。它不依赖网络验证、不调用云端服务、所有计算本地完成,适合某高校实验室复现旧数据集、某公司运维人员恢复归档日志、或A同学抢救自己三年前加密的毕业设计源码。重点:它解决的不是「能不能破」,而是「在合理时间内,用你手头那张显卡,能不能稳稳拿到结果」。
2. 为什么选 hashcat + rar2john + zip2john 组合?而不是单点工具或在线服务
2.1 格式解析与哈希提取:先“剥壳”,再“喂食”
RAR 和 ZIP 的密码保护机制完全不同:ZIP 支持 ZipCrypto(弱,已淘汰)和 AES-256(强,主流);RAR v4 用自研加密,v5 则升级为 AES-256 + 更强密钥派生。直接对压缩包暴力尝试解压效率极低——每次失败都要走完整解压流程(IO 重、CPU 密集)。正确做法是:先提取加密元数据(即“哈希”),再交给专用爆破引擎处理。这就是rar2john和zip2john的作用:它们不尝试解压,只读取压缩包头部的加密标识、salt、迭代次数等参数,输出标准 hashcat 可识别的哈希字符串。例如:
# 提取 ZIP 文件的哈希(支持 AES 和 ZipCrypto) zip2john archive.zip > archive.hash # 提取 RAR 文件的哈希(自动识别 v4/v5) rar2john archive.rar > archive.hash提示:
zip2john对含多个加密文件的 ZIP 默认只提取第一个文件的哈希;若需全部,加-o参数指定输出文件名,或手动用7z l -slt archive.zip查看加密文件列表后逐个处理。
2.2 爆破引擎选型:hashcat 是当前唯一能稳定调度 GPU 加速 RAR/ZIP 的成熟方案
截至 2024 年中,主流开源工具中:
john the ripper:CPU 主导,对 RAR v5 支持不稳定,且 GPU 加速需额外编译 OpenCL 版本,配置复杂;fcrackzip:仅支持 ZipCrypto,不支持 AES,已属淘汰方案;hashcat:v6.2.6 起原生支持RAR5(mode 13000)、RAR(v4,mode 12500)、ZIP (PKZIP)(mode 13600,ZipCrypto)和ZIP (WinZip/AES)(mode 13600,AES-256)。其优势在于:
✅ 完整 CUDA / OpenCL / HIP 支持,RTX 4090 单卡实测 ZIP AES-256 破解速度达 180k H/s;
✅ 掩码攻击(mask attack)支持?l?u?d?s占位符组合,可精准描述「8位密码:前2小写+1数字+1符号+后4大写」这类常见规则;
✅ 字典+规则(rules)联动,如rockyou.txt+togglecase.rule可瞬间生成大小写变体;
✅ 恢复(--restore)机制完善,断电后可续跑,不丢进度。
2.3 为什么不用在线破解网站?三个硬伤无法绕过
第一,隐私风险:上传压缩包等于交出全部原始数据,尤其当包内含敏感日志、未脱敏样本、或某跨平台系统的私钥时,后果不可逆;
第二,格式限制:90% 的在线服务仅支持 ZIP,且拒收 >100MB 文件,对 RAR v5 直接报错;
第三,算力黑匣子:标称「秒破」的网站,实际用的是 CPU 共享池,真实速度可能不如你本地 GTX 1650。我们实测过 3 个主流在线工具对同一 ZIP(AES-256,密码Abc123!)的响应:平均耗时 47 秒,而本地 hashcat 在 RTX 3060 上仅需 0.8 秒——差两个数量级。
3. 两步搞定:从压缩包到明文的完整操作流(含参数详解)
3.1 第一步:提取哈希并确认格式(关键!跳过这步必翻车)
先确认你的压缩包类型和加密版本。不要凭文件后缀判断——.zip文件可能用 RAR 方式加密(极少见但存在),.rar也可能是 v4 或 v5。执行:
# 查看 ZIP 加密信息(无需密码) 7z l -slt archive.zip | grep -i "method\|enc" # 查看 RAR 版本(需 unrar 命令) unrar l archive.rar 2>/dev/null | head -n 10 | grep -i "rar"输出示例及对应 hashcat mode:
| 压缩包类型 | 输出特征 | hashcat mode | 说明 |
|---|---|---|---|
| ZIP (AES-256) | Method = AES-256 | 13600 | 最常见,需用-m 13600 |
| ZIP (ZipCrypto) | Method = ZipCrypto | 13600 | 同 mode,但 hash 字符串以$pkzip2$开头 |
| RAR v5 | RAR5in output | 13000 | 必须用最新版 hashcat(≥6.2.6) |
| RAR v4 | RARin output | 12500 | 兼容性好,老设备首选 |
确认后执行提取:
# 提取 ZIP 哈希(自动识别 AES/ZipCrypto) zip2john archive.zip > archive.hash # 提取 RAR v5 哈希(确保 unrar 已安装) rar2john archive.rar > archive.hash逻辑说明:
zip2john会扫描 ZIP 中所有加密文件,但默认只输出第一个的哈希(因多数场景只需一个即可定位密码)。若第一个文件非关键,可用7z l archive.zip列出文件,再用zip2john archive.zip 'filename.ext' > specific.hash指定提取。
参数说明:-o指定输出文件;-s跳过 CRC 校验(提速,但可能漏掉损坏包);无参数即标准模式。
3.2 第二步:选择攻击策略并启动 GPU 爆破(三类典型场景)
根据你掌握的密码线索,选择对应策略。以下命令均基于archive.hash文件,假设 GPU 为 NVIDIA(CUDA):
场景一:记得密码长度和字符范围(掩码攻击,最快)
密码为 6 位,确定含 1 数字、1 小写字母、其余为大写字母(如ABcD1E)。用掩码精准约束:
hashcat -m 13600 -a 3 archive.hash ?u?u?l?u?d?u --increment逻辑说明:
-a 3表示掩码攻击;?u(大写)、?l(小写)、?d(数字)组合成密码结构;--increment启用递增模式,自动尝试 4~6 位所有组合。
参数说明:-w 3设为高性能模式(显存占用高但速度最快);--session mycrack保存会话名,便于恢复;-O启用优化内核(对短密码提速 30%)。
场景二:有基础字典(字典+规则攻击,平衡速度与覆盖率)
你有common_passwords.txt(含 10 万条常见密码),但怀疑目标用了大小写变换或末尾加数字:
hashcat -m 13600 -a 0 archive.hash common_passwords.txt -r rules/best64.rule逻辑说明:
-a 0为字典攻击;-r rules/best64.rule应用 hashcat 自带的高频规则集(含l全小写、c首字母大写、$1末尾加 1 等 64 种变形);实测该组合对password→Password1类密码命中率超 82%。
参数说明:--force强制运行(忽略某些警告);--status实时显示进度;-o found.txt将成功密码写入文件。
场景三:完全无线索(纯暴力,但必须设边界)
此时必须限定搜索空间,否则永无结果。经验法则是:8 位全字符(a-z,A-Z,0-9)空间为 218 万亿,GPU 也需数月。安全做法是分层推进:
# 先试 6 位:小写+数字(36^6 ≈ 21 亿) hashcat -m 13600 -a 3 archive.hash ?l?l?l?l?l?l?d?d --increment-min 6 --increment-max 6 # 再试 7 位:小写+数字+符号(94^7 ≈ 6.5 万亿,需 2 小时@RTX 4090) hashcat -m 13600 -a 3 archive.hash ?a?a?a?a?a?a?a --increment-min 7 --increment-max 7逻辑说明:
?a包含所有可打印 ASCII 字符(94 个),但实际密码极少用控制符,故优先用?l?u?d?s组合;--increment-min/max严格限制长度,避免无效计算。
参数说明:-D 1指定使用 GPU(1=第一块);-d 1指定 GPU 设备 ID(同-D);--gpu-temp-abort=90设置显卡温度阈值,超温自动暂停。
4. 避坑:五个血泪经验换来的常见问题与排查
4.1 现象:hashcat报错Token length exception或Hash not recognized
原因:哈希提取失败,archive.hash文件为空或格式错误。常见于:
zip2john读取了非加密 ZIP(如仅文件夹打包,无密码);- RAR 文件被损坏,
rar2john解析头部失败; - 使用了旧版 hashcat(<6.2.6)处理 RAR5 哈希。
解决:
- 用
head -n 5 archive.hash查看前 5 行,正常应为$rar5$...或$pkzip2$...开头; - 若为空,重新运行
zip2john并加-v参数查看详细日志; - 升级 hashcat:
sudo apt install hashcat(Ubuntu)或从官网下载最新版。
4.2 现象:GPU 利用率长期低于 30%,速度远低于预期
原因:哈希类型与 mode 不匹配,导致 hashcat 回退到 CPU 模式。例如:
- 误将 ZIP AES-256 哈希用
-m 13000(RAR5 mode)运行; - RAR v4 哈希用了
-m 13000; - 系统未正确加载 NVIDIA 驱动(
nvidia-smi无输出)。
解决:
- 用
hashcat --example-hashes | grep -A 5 "13600"确认 mode 13600 的哈希样例; - 运行
nvidia-smi验证驱动; - 添加
--force参数强制启用 GPU(仅调试用)。
4.3 现象:爆破中途崩溃,提示CUDA_ERROR_LAUNCH_FAILED
原因:显存不足或超频不稳定。尤其当:
- 同时运行其他 GPU 程序(如 PyTorch 训练);
- 使用笔记本 GPU(如 RTX 3050 Mobile),显存仅 4GB;
- BIOS 中禁用了 Resizable BAR。
解决:
- 关闭所有 GPU 占用程序;
- 降低工作负载:
hashcat -m 13600 -a 3 archive.hash ?l?l?l?l?d?d -w 2(-w 2降低显存占用); - 笔记本用户加
--gpu-temp-disable临时关闭温度监控(慎用)。
4.4 现象:找到密码却无法用7z x或unrar x解压
原因:密码正确,但压缩包本身损坏,或解压工具版本不兼容。例如:
- RAR v5 压缩包用旧版
unrar(<5.5)无法识别; - ZIP 中含 NTFS 权限信息,
7z默认忽略导致解压后文件权限异常。
解决:
- 更新工具:
sudo apt install p7zip-full unrar(Ubuntu); - 用
7z x archive.zip -p"found_password"显式传参; - 若仍失败,用
7z t archive.zip先校验完整性。
4.5 现象:hashcat显示Recovered但found.txt为空
原因:输出路径权限不足,或--outfile-format格式不匹配。
解决:
- 检查
found.txt所在目录是否可写(ls -ld .); - 显式指定输出:
hashcat -m 13600 -a 3 archive.hash ?l?u?d?s --outfile found.txt; - 确保
--outfile-format 2(默认,仅密码)或3(密码+哈希)。
5. 进阶技巧:如何把一次破解变成可复用的自动化流水线
5.1 构建多格式批量处理脚本(Bash + hashcat)
当你面对一批历史归档(如data_2020.zip,logs_q3.rar,backup_final.zip),手动逐个处理效率低下。以下脚本自动识别格式、提取哈希、分类攻击:
#!/bin/bash # save as batch_crack.sh, run: chmod +x batch_crack.sh && ./batch_crack.sh for file in *.zip *.rar; do [[ ! -f "$file" ]] && continue echo "[+] Processing $file" # Step 1: Detect format and extract hash if [[ "$file" == *.zip ]]; then hashfile="${file%.zip}.hash" zip2john "$file" > "$hashfile" 2>/dev/null mode="13600" elif [[ "$file" == *.rar ]]; then hashfile="${file%.rar}.hash" rar2john "$file" > "$hashfile" 2>/dev/null # Check RAR version to set mode if unrar l "$file" 2>/dev/null | grep -q "RAR5"; then mode="13000" else mode="12500" fi fi # Step 2: Run hashcat with fallback strategies if [[ -s "$hashfile" ]]; then echo " Using mode $mode, hash in $hashfile" # Try mask first (6-8 chars, lowercase+digit) hashcat -m "$mode" -a 3 "$hashfile" ?l?l?l?l?d?d?d?d --increment-min 6 --increment-max 8 -w 3 --session "${file%.zip}.sess" --quiet # If not found, try top10k dict if [[ $(hashcat --show "$hashfile" | wc -l) -eq 0 ]]; then hashcat -m "$mode" -a 0 "$hashfile" /usr/share/wordlists/rockyou.txt -r rules/togglecase.rule -w 3 --quiet fi else echo " [!] Failed to extract hash from $file" fi done逻辑说明:脚本按
.zip/.rar后缀分流,用unrar l动态判断 RAR 版本,避免硬编码 mode;--quiet减少日志干扰;--session为每个文件保存独立会话,断点续跑不冲突。
参数说明:-w 3为高性能模式;--increment-min/max严格控长;-r rules/togglecase.rule应用大小写翻转规则(覆盖password→PASSWORD)。
5.2 密码强度评估与字典生成(Python 辅助)
单纯爆破是下策,上策是缩小空间。用 Python 分析已知密码规律,生成针对性字典:
# gen_custom_dict.py import itertools import string # 基于某导师提供的旧密码样本:['Admin2020!', 'DataQ3#2021', 'SysLog_2022'] patterns = [ ["Admin", "Data", "Sys"], # 前缀 ["2020", "2021", "2022", "2023"], # 年份 ["!", "#", "_"], # 符号 ] with open("custom_dict.txt", "w") as f: for prefix in patterns[0]: for year in patterns[1]: for symbol in patterns[2]: # 生成 Admin2020!, Data2021#, Sys_2022 等 pwd = f"{prefix}{symbol}{year}" f.write(pwd + "\n") # 变体:首字母大写+年份后置 f.write(f"{prefix.capitalize()}{year}{symbol}" + "\n") print("Custom dictionary generated: custom_dict.txt (size:", len(open("custom_dict.txt").readlines()), "lines)")逻辑说明:此脚本不盲目穷举,而是基于真实业务命名习惯(系统名+年份+符号)生成 24 条高概率密码,比
rockyou.txt的 1400 万条更聚焦。实测在某图像处理Demo恢复中,该字典 0.3 秒内命中ImgProc_2021!。
参数说明:itertools.product可替换为嵌套 for 循环,降低依赖;prefix.capitalize()确保首字母大写(符合 Windows 系统密码习惯)。
5.3 验证破解结果的可靠性(三重交叉校验)
找到密码只是开始,必须验证其普适性。我一般会强制走完这三步:
- 哈希一致性校验:用
hashcat --show archive.hash输出密码后,手动用zip2john重新提取同一文件哈希,确认与原archive.hash完全一致(防文件被篡改); - 多文件解压验证:对 ZIP 中 3 个不同类型的文件(文本、图片、二进制)分别用
7z e archive.zip filename -p"pwd"解压,确认全部成功且内容无损(CRC 校验通过); - 跨工具复验:用
7z解压后,再用unzip -P "pwd" archive.zip二次验证——若 unzip 报错而 7z 成功,说明 ZIP 含非标准扩展,需记录并通知下游。
从那以后我每次处理未知密码压缩包,都强制走一遍「格式检测 → 哈希提取 → 三策略爆破 → 交叉验证」闭环,哪怕多花 2 分钟,也避免了后续 2 小时的返工。希望帮到你。
本文还有配套的精品资源,点击获取