hashcat 是一款免费的密码破解工具。它支持使用 AMD 和 NVidia 显卡运算,同时也保留使用 cpu 计算的版本。hashcat 号称是世界上最快的密码破解工具,同时也是世界上第一款和唯一一款使用通用图形处理器的工具。它支持 windows 和 linux 操作系统,同时支持 OpenCL 和 CUDA。hashcat 可以支持破解包括 MD5,sha1 等 150 多种加密算法生成的密码。
使用 hashcat 破解 office 密码的时候需要指定加密方式,Office 03 - 2013 一共有 9 种 hash 方式,分别如下:
Office 97-03(MD5+RC4,oldoffice$0,oldoffice$1): flag -m 9700
Office 97-03(MD5+RC4,collider-mode#1): flag -m 9710
Office 97-03(MD5+RC4,collider-mode#2): flag -m 9720
Office 97-03(SHA1+RC4,oldoffice$3,oldoffice$4): flag -m 9800
Office 97-03(SHA1+RC4,collider-mode#1): flag -m 9810
Office 97-03(SHA1+RC4,collider-mode#2): flag -m 9820
Office 2007: flag -m 9400
Office 2010: flag -m 9500
Office 2013: flag -m 9600
破解步骤
获取文件 hash 值
首先,我们需要获取文件的 hash 值,使用office2john.py可以提取文件的 hash 值。
在命令行中执行:
python office2john.py test.xls
得到的 hash 结果为:
test.xls:$oldoffice$0*2031e09b28a2a13a891dff99bae0927d*65264ab10fdde25b22146e2c94778c50*981ec9419aa5dd88c0340491ed07f38c:::936 111 730895 936 11112798626794 12798538993 12932656957 Microsoft Excel 1::test.xls
第一个:号前边是文件名,紧跟着的是加密方式,这里是oldoffice$0。然后在 hashcat 官网的
wiki页面的 options 中Generic hash types 找到对应的代号,这里oldoffice$0的代号是 9700。我们用 hashcat 只需要第一个冒号和第二个冒号之间的内容。
因此得到hash为:
$oldoffice$0*2031e09b28a2a13a891dff99bae0927d*65264ab10fdde25b22146e2c94778c50*981ec9419aa5dd88c0340491ed07f38c
将得到的 hash 值保存到文本文件中,这里保存到 hash.txt 里。
使用 hashcat GPU破解:
hashcat 可以使用字典或者掩码对密码进行攻击。一开始我使用掩码,但是使用较短位数密码时它不断警告字典空间过小,无法发挥 GPU 的并行运算能力。所以我这里使用了字典。
因为这个文件是我同学交给我让我帮忙找回密码的,我猜测密码可能是纯数字的,并且有可能在 8 位以下。我首先生成了一个 4 到 8 位数字密码的字典。
在 hashacat 目录下打开命令行,输入下面的命令开始破解:
cudaHashcat64.exe -a 0 -m 9700 -o found.txt hash.txt F:wordlistwordlist
- cudaHashcat64.exe 是在英伟达显卡电脑上要运行的版本。
- -a 参数指定攻击方式,这里的 0 表示使用字典攻击,1代表组合攻击,3代表掩码攻击。
- -m 参数指定密码加密方式,这里使用我们查到的 9700,代表我们的 excel2003 加密。
- -o 指定结果输出的位置,这里指定输出到 found.txt。接下来 hash.txt 是保存 hash 值的文件名,F:wordlistwordlist是字典的位置和文件名。
如果使用 hashcat CPU破解,命令如下:
hashcat.exe -a 3 -m 9700 -o found.txt hash.txt
在经过系统自动计算后,文件的密码被算出。屏幕上输出状态,程序结束运行。结果将输出到 found.txt 中。