Hashcat 简要使用教程

By | 2023年7月16日

0.序言

在官网上,Hashcat 对自己的描述是一款世界最快的密码破解软件。除了免费之外,还支持超过350种类型的密码破解,例如 MS Office,RAR,PDF 等。当然我们今天并不是要探究 Hashcat 到底是不是最快的密码破解软件,毕竟单就免费和支持 GPU 加速这两点就已经足够好了。

不过 Hashcat 官方并没有提供图形界面,也不支持直接读取加密文件进行解密,上手存在一定门槛。所以本文的主要目的是快速带大家过一遍 Hashcat 的基础用法,如果还想要更深入的了解一些高级用法可以移步官方在线文档。

1.下载

Hashcat 发文时的最新版本为6.2.6,更新于2022年9月。由于是一款绿色软件,下载后解压至任意目录即可。本文中将使用 D:\hashcat-6.2.6 这一地址作为范例。

下载地址:https://hashcat.net/hashcat/#download

2.运行

打开开始菜单并键入 CMD 回车,新建一个命令提示符窗口。在命令提示符窗口中依次执行以下命令来运行 Hashcat 。(#号及其后的内容为注释)

D:  #切换到D盘
cd hashcat-6.2.6  #进入 hashcat 所在文件夹
hashcat.exe -h  #输出帮助信息

当然我们运行 Hashcat 肯定不止是为了查看帮助信息,下面是一个典型的用于密码破解的命令。先不要实际运行它,我们会逐一的了解各部分的作用和写法。

hashcat.exe -m 13000 -a 3 hash.txt ?d?d?d?d?d?d --increment --increment-min=1 --increment-max=6
  • -m 设定加密类型
  • -a 设定密码破解模式
  • hash.txt 待破解的 hash
  • ?d?d?d?d?d?d 密码掩码
  • –increment 使用自增模式

3.加密类型

由于 Hashcat 支持的加密类型非常多,在使用时我们必须手动指定待破解的加密类型。常用的有:13000(rar5),9600(office 2013) 等,完整的加密类型代号在下面链接中可以查到:

https://hashcat.net/wiki/doku.php?id=hashcat

在使用时通过 -m 传入即可,如 -m 6600 。部分文件格式可能存在有多个加密类型的情况,如 rar 就可能为 rar3 或 rar5 。这种情况需要通过 Hash 值来确定,参考第5小节。

4.破解模式

Hashcat 提供了字典模式,暴力模式及组合模式等多种破解模式可供选择,不过最常用的还是暴力模式。我们直接指定 -a 3 就好,如有需要了解其他破解模式的使用方法可以查阅官网相关文档。

5.Hash

与一般的密码破解软件不同,Hashcat 并不支持直接读取加密文件进行破解,而采用的是加密文件 Hash 值。在前一篇文章中,我们已经介绍了计算加密文件 Hash 值的方法,这里只需要在 hashcat 文件夹中新建一个空白 txt 文件,并将 Hash 值填入即可。如果有多个文件需要破解,每行填写一个 Hash 。

对于同一个文件后缀存在多种密码类型的情况,我们也需要通过 Hash 来判断。例如 Office 文档,如果计算后得到的 Hash 为:

$office$*2013*100000*256*16*35e293890e1e9fef1f724ea0cedbe146*291acb5a6e6d10e8131d06a6cf5da61b*f84c89440cef4efe15b99cf69a9dd91e35f6903a2eaf1d99d1b819c6928467d7

说明该文件的加密类型为 Office 2013 ,对应的命令为:-m 9600

6.密码掩码

如果使用暴力破解模式,我们需要为 Hashcat 指定密码掩码,这样程序才能跑起来。简单的说,密码掩码就是告诉程序猜解密码时,使用纯数字、数字+字符还是字符+特殊符号。

Hashcat 中内置了一些掩码字符集可以直接使用,如:

  • ?l = abcdefghijklmnopqrstuvwxyz
  • ?d = 0123456789
  • ?h = 0123456789abcdef

举例来说,如果需要猜解所有6位数的纯数字密码,使用 ?d?d?d?d?d?d 即可。如果已知前六位为 reizhi ,后三位为小写字符,使用 reizhi?l?l?l 即可。

限于篇幅,更多有关密码掩码的信息可以前往官方文档查看:https://hashcat.net/wiki/doku.php?id=mask_attack

7.自增模式

在上一小节中,我们已经介绍了密码掩码的使用方法,但同时也引出了一个问题:如果密码可能是1~6位的纯数字,是否我们需要运行六次才能将所有的可能猜解一遍?

答案当然是否定的,如果不确定密码的长度,只需要使用自增模式即可:

--increment --increment-min=1 --increment-max=6

其中 --increment 代表启用自增模式,--increment-min=1 代表密码的最小长度为1位,--increment-max=6 代表密码的最大长度为6位。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

滑动到最右以进行验证 *