在某些情况下,我们需要找回自己或授权范围内文件的压缩密码。例如 RAR、ZIP 或 7z 压缩包被加密后无法访问。本文将介绍如何在 Windows 平台上使用 John the Ripper 和 Hashcat 工具提取并获取这些加密文件的密码。
支持类型
本教程涵盖以下文件格式的密码恢复:
- RAR 压缩文件
- ZIP 压缩文件
- 7z 压缩文件
所需工具
请准备以下官方编译版本(Windows):
- John the Ripper:用于提取加密哈希及字典攻击
- Hashcat:高速 GPU 密码破解工具
- Strawberry Perl:运行 Perl 脚本所需环境(针对 7z 处理)
- 7-Zip:辅助处理 7z 文件
一、破解 RAR 压缩文件密码
1. 提取哈希值
下载并解压 John the Ripper 包,进入 run 目录找到 rar2john.exe。在 PowerShell 中执行:
rar2john.exe test.rar
运行后将输出完整的哈希字符串,将其复制保存至 hash.txt 文件中。
2. 确定哈希模式 ID
访问 Hashcat 官方 Wiki 查找对应的 -m 参数。搜索 $rar5$16$ 可确认 RAR5 加密应使用模式 13000。
3. 开始破解
使用 Hashcat 进行掩码攻击,尝试数字组合:
hashcat -m 13000 -a 3 hash.txt ?d?d?d?d?d?d?d?d --increment --increment-min=4 --increment-max=8
其中 -a 3 代表掩码攻击模式,?d 表示数字字符。根据实际密码长度调整掩码范围。
二、破解 ZIP 压缩文件密码
1. 提取哈希值
同样在 John the Ripper 的 run 目录下找到 zip2john.exe,执行:
zip2john.exe test.zip
将输出的哈希值保存至 hash.txt。
2. 确定哈希模式 ID
在 Hashcat Wiki 中搜索 $zip2$,对应模式为 13600。
3. 开始破解
命令示例如下:
hashcat -m 13600 -a 3 hash.txt ?d?d?d?d?d?d?d?d --increment --increment-min=4 --increment-max=8
三、破解 7z 压缩文件密码
1. 安装 Perl 环境
由于 7z2john.pl 是 Perl 脚本,需先安装 Strawberry Perl。安装时建议勾选添加到系统环境变量选项。
2. 提取哈希值
在 PowerShell 中运行脚本:
perl 7z2john.pl test.7z
若遇到报错 Can't load 'Compress::Raw::Lzma.xs.dll',通常是因为环境变量未生效。请关闭终端,重新打开新的 PowerShell 窗口,并确保 Path 中包含 Perl 的 bin 目录,例如:
D:\Tools\strawberry-perl\perl\bin
D:\Tools\strawberry-perl\c\bin
3. 确定哈希模式 ID
搜索 $7z$,对应模式为 11600。
4. 开始破解
hashcat -m 11600 -a 3 hash.txt ?d?d?d?d?d?d?d?d --increment --increment-min=4 --increment-max=8
命令汇总
| 文件类型 | 提取哈希命令 | 破解命令 |
|---|---|---|
| RAR | rar2john.exe test.rar | hashcat -m 13000 -a 3 hash.txt ... |
| ZIP | zip2john.exe test.zip | hashcat -m 13600 -a 3 hash.txt ... |
| 7z | perl 7z2john.pl test.7z | hashcat -m 11600 -a 3 hash.txt ... |
注意事项
- 合法性提醒:请确保你有权访问目标文件,未经授权破解他人文件属违法行为。
- 性能建议:推荐使用支持 CUDA 或 OpenCL 的 GPU 来加速破解过程。
- 密码复杂度:密码越复杂,破解时间越长。建议结合字典攻击提高效率。
- 字典攻击:如果能获取部分信息(如生日、姓名等),建议使用字典攻击(
-a 0)配合字典文件。

