前言

HashCat支持对多种hash散列算法等和密码进行破解。本文主要记录了HashCat的入门级使用。
电脑配置如下:

名称型号/规格
CPUIntel i9-9980HK
RAM32GB
GPUNvidia GeForce RTX 3060 Ti (OpenCL 3.0 CUDA 12.2.138)
OSWindows 11

环境配置

在系统中配置HashCat十分简单,对于Windows来说,在HashCat网站下载HashCat的二进制文件即可,建议将这些文件拷贝到一个较短的目录,例如C:\hashcat
在Windows上,直接将C:\hashcat添加到系统环境变量可能无法直接调用hashcat,会收到类似:

PS C:\Users\> hashcat -I
 hashcat (v6.2.6) starting in backend information mode

./OpenCL/: No such file or directory

的问题,因此最好从hashcat的目录使用hashcat命令。

对于Nvidia显卡,需要下载CUDA (9.0 or later)和440.64版本以上的GPU驱动程序。

基础使用

新版本的hashcat默认使用GPU进行攻击(attack),但建议加上-D 2选项,该选项指定hashcat使用二号设备(GPU)。
对于更多命令的使用方法,请执行hashcat -help进行查看。
这是一个例子:

hashcat -a 3 -m 0 5ace0b2afd7e22aa7533421def0e7f9c -O -D 2 ?u?u?u?d?d?d?d?d

在这条命令中,-a 3指定hashcat的攻击模式(attack mode)为3,在hashcat中,-a 0代表字典攻击,-a 1 代表组合攻击;-a 3代表掩码攻击。

-m 0则指定了Hash-Mode的类型,在hashcat中,0代表Hash类型是MD5,受限于篇幅,所有的哈希类型对照表可以从Generic hash types查询。
-a-m是hashcat中必不可少的两个参数
-o 指定破解成功后的hash及所对应的明文密码的存放位置,可以用它把破解成功的hash写到指定的文件中。

?u?u?u?d?d?d?d?d则是hashcat中的Built-in charsets,用它可以帮助hashcat更快地攻击,这一部分是可选的,但如果去掉这一部分再执行上文的例子,攻击时间将变长很多。

## Built-in charsets
?l = abcdefghijklmnopqrstuvwxyz
?u = ABCDEFGHIJKLMNOPQRSTUVWXYZ
?d = 0123456789
?h = 0123456789abcdef
?H = 0123456789ABCDEF
?s = «space»!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~
?a = ?l?u?d?s
?b = 0x00 - 0xff

hashcat攻击成功完成后,-O会将解密出的hash保存在profile内,在这串命令后添加--show即可输出结果

PS C:\hashcat>  hashcat -a 3 -m 0 5ace0b2afd7e22aa7533421def0e7f9c -O -D 2 ?u?u?u?d?d?d?d?d --show
5ace0b2afd7e22aa7533421def0e7f9c:ABC12345

其他

在执行hashcat攻击命令时,可能会输出以下日志:

CUDA API (CUDA 12.2)
====================
* Device #1: NVIDIA GeForce RTX 3060 Ti, 7142/8191 MB, 38MCU

OpenCL API (OpenCL 3.0 CUDA 12.2.138) - Platform #1 [NVIDIA Corporation]
========================================================================
* Device #2: NVIDIA GeForce RTX 3060 Ti, skipped

在这种情况下,hashcat实际上已经使用Device #1,因此它跳过了Device #2,无需担心。

文章目录