用 rar2john+hashcat 破解 RAR 文件密码

2010-06 from–https://mysock.net/index.php/archives/724

准备工作

rar2john 工具下载地址:http://openwall.info/wiki/_media/john/johntheripper-v1.8.0.12-jumbo-1-bleeding-e6214ceab-2018-02-07-win-x64.7z
hashcat 下载地址:https://hashcat.net/files/hashcat-4.1.0.7z

下载并解压这两个工具,放到同级目录,方便以后使用,目录结构如下所示:
D:Tool
├─hashcat
│ ├─MyCrackRAR.bat
│ ├─testfile.rar
├─JohnTheRipper

过程

testfile.rar 是测试用的文件,密码为1234。示例中的 hash 值仅演示用,并非真正的 hash。
1. 用 rar2john.exe 获取 rar 压缩文件的 hash 值:

D:\Tool\JohnTheRipper\run>rar2john.exe testfile.rar
testfile.rar:$RAR3$*0*5ba3dd697a8706fa*919ad1d7a1c42bae4a8d462c8537c9cb:0::::testfile.rar

2. 用 hashcat 破解:

hashcat64.exe -m 12500 -a3 $RAR3$*0*5ba3dd697a8706fa*919ad1d7a1c42bae4a8d462c8537c9cb ?d?d?d?d

3. 方便起见,写一个 MyCrackRAR.bat 脚本,放在 hashcat 目录中,内容如下:

@echo off
rem szRarFile rar文件名
set szRarFile="testfile.rar"
echo RAR文件:[%szRarFile%]
rem for 循环作用为截取两个冒号中的内容
for /f "delims=:, tokens=2" %%i in ('..\JohnTheRipper\run\rar2john.exe %szRarFile%') do (
     set szHash="%%i"
)
rem 去掉字符串的前后双引号
set szHash=%szHash:~1,-1%
echo RAR文件hash值为[%szHash%]
@echo on
hashcat64.exe -m 12500 -a3 %szHash% ?d?d?d?d
pause

注意事项

hashcat 支持 RAR3-hp 和 RAR5,官方示例如下:

-m 参数类型示例 hash
12500RAR3-hp$RAR3$*0*45109af8ab5f297a*adbf6c5385d7a40373e8f77d7b89d317
13000RAR5$rar5$16$74575567518807622265582327032280$15$f8b4064de34ac02ecabfe9abdf93ed6a$8$9843834ed0f7c754

注意 hash 中,RAR3-hp 值为$RAR3$*0*xxx,中间的数值是0(-hp)而不是1(-p),-p尚未得到支持,只支持-hp

本例中使用的就是 RAR3-hp,因为没有新版 WinRAR 所以没测试 RAR5 类型。

关于 RAR 参数-p-hp的区别
-p:只对 RAR 文件加密,里面的目录和文件名没加密;
-hp:对目录中的文件名和子目录都进行加密处理。

上一篇
下一篇