hashcat解所有字符,只要是utf-8的字符,包括中文日文英文韩文日文都可以解

Hashcat用法举例

Hashcat具有良好的可扩展性,例如可以自定义字符集等。下面,让我们利用这个可定制的特性,来传递针自定义的西里尔 hex字符集,这个字符集取自我们见面介绍的字符表。 虽然Hashcat 3.0在参数要求进行了一些扩展,允许在命令行中最多使用四个自定义字符集,但我们这里只需创建两个即可。 请记住,对于UTF-8字符集中的西里尔字符来说,在使用十六进制表示的时候,实际上可以分为两部分——基本编码和字符编码,所以我们需要表示该范围所有可能的组合。这里,我们的”基本编码”定制字符集为d0d1d2d3d4,而“字符编码”定制字符集为808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebf。这个字符范围将涵盖西里尔字符的所有可能的代表性组合。

下面,我们给出完整的hashcat命令行,它将对我们的UTF-8 西里尔字母组成的密码的MD5哈希值进行蛮力攻击:

./hashcat –potfile-disable -m 0 -a 3 ../ru_charset.txt –hex-charset -1 d0d1d2d3d4 -2 808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebf -i ?1?2?1?2?1?2?1?2

下面对Hashcat的参数进行相应的说明:

–pot-disable(我们不希望将破解的哈希值添加到hashcat的potfile中)

-m 0(设置哈希值类型,对于MD5算法来说,将其设置为0)

-a 3(设置攻击模式,这里设为3表示暴力破解)

../ru_charset.txt (保存MD5哈希值的文本文件的路径)

–hex-charset(假设字符集以十六进制值表示)

-1 d0d1d2d3d4(设置我们的第一个字符集的基本编码)

-2 808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebf(设置字符编码的范围)

-i ?1?2?1?2?1?2?1?2 (让hashcat根据掩码1?2?1?2?1?2?1?2对1-4个字符可能组合进行暴力猜解)

对于上面的设置来说,关键要记住将掩码设置为?1?2?1?2?1?2?1?2是针对双字节字符的,它的作用是告诉hashcat首先从1号自定义字符集和2号自定义字符集中取值,然后将它们合并。 例如,在进行暴力破解的时候,根据当前的自定义字符集来看,尝试的第一个组合很可能是“d080”(?1?2)。 下一次将会尝试“d081”,依此类推,hashcat将逐次遍历所有可能组合,直到尝试了四个字符(双字节字符)的UTF-8十六进制编码d4bcd4bdd4bed4bf(?1?2?1?2?1?2?1?2)为止。

 

中文密码破解

相信大家最感兴趣的应该是中文密码的破解了,所以在此先演示中文密码的破解方法。实际上,破解原理和方法在文章中已经介绍到了,各种语言的破解过程其实也大同小异。

汉字的UTF-8编码占三个字节,例如汉字“一”的UTF-8编码为“E4 B8 80”。根据常用汉字的UTF-8编码[编码表传送门],“-1”参数应该设置成“e4e5e6e7e8e9”,“-2”和“-3”参数均为“808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebf”,这个编码范围足够覆盖常用的汉字了,其中还包括常用繁体字。

除此之外,还有一些其他的设置参数需要简单介绍一下:

–pot-disable:禁止Hashcat将已破解的哈希添加到potfile中,添加该参数可以避免测试过程中出现某些问题。

–outfile-autohex-disable:将破解出的密码结果以明文形式显示出来,如果不输入这个参数的话,密码破解的结果将以十六进制的形式输出。如果密码结果输出为乱码的话,可以去掉该参数,以便得到密码的原始十六进制数值。

-m 0:设置待破解数据的哈希类型,“0”即为MD5。

-a 3:设置攻击模式,“模式3”代表暴力破解。

**_cypher.txt:存放待破解密码哈希的文件。

在破解中文的示例中,我们的参数命令应该如下所示(假设待破解密码为两个汉字):

./hashcat --potfile-disable --outfile-autohex-disable -m 0 -a 3 ../zh_cypher.txt  --increment --increment-min 6 --increment-max 6 --hex-charset -1 e3e4e5e6e7e8e9 -2 808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebf -3 808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebf -i ?1?2?3?1?2?3

这里 –increment –increment-min 6 –increment-max 6是为了让hashcat跑的时候只跑两个中文,一个中文3位。如果不加这句的话会从1位开始跑到6位,1位根本不是中文,只有跑到3位的时候是一个中文,6位的时候是两个中文。

韩语密码破解

假设待破解密码为“”,中文即“安全”的意思。该字符串由两个韩语字组成,每个韩语字的UTF-8编码占三个字节

参数命令如下:

./hashcat --potfile-disable --outfile-autohex-disable -m 0 -a 3 ../korean_cypher.txt --hex-charset -1 eaebecedee -2 808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebf -3 808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebf -i ?1?2?3?1?2?3

俄语密码破解

虽然俄语字母是西里尔字母的变体….

参数命令如下:

./hashcat --potfile-disable --outfile-autohex-disable -m 0 -a 3 ../cyrillic_cypher.txt --hex-charset -1 d0d1d2d3d4 -2 808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebf -i ?1?2?1?2?1?2?1?2

注意事项

如果Hashcat无法输出正确的明文密码时,可以去掉命令中的“–outfile-autohex-disable”参数。

 

打赏

发表评论

电子邮件地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据