hashcat之Mask Attack性能测评

这周以来一直都在研究hashcat,逐渐认识到Mask Attack是比字典攻击更为有效的手段,只用输入巧妙的占位符组合,便可以完全取代字典,而且没有字典的臃肿,不会有存储与转移方面的不便。记得前几天测试字典攻击时,我最大的——10G——9.4亿的字典,hashcat只用了7分钟就跑完了。而9.4亿,在数量级上相当于6位的小写字母和数字组成的密码的所有组合,相对于整个密码空间而言,不过是沧海一粟。使用Mask,可以很容易地构造出足够大的密码空间来,如“?a?a?a?a?a?a”便是千亿级别的密码空间,若是制作这么大的字典,字典大小可能会超过1TB。

问题便是Mask过于强大,轻易构造很大的密码空间,跑完这些密码,花费的时间可能超过了我们的等待极限。为了能在实际使用中更好的选择Mask,需要对不同的Mask花费的时间有一个感性的认识,所以我测试了各种Mask的耗时,记录于此。

在测试中,统一破解同一个sha1值:54477ac9fdce357a05e7f68694a0b29c068c3b50,它是这么来的:

    >>> import hashlib
    >>> hashlib.sha1("123GB^*HE@R*G@&DF$^!#@^").hexdigest()
    '54477ac9fdce357a05e7f68694a0b29c068c3b50'

很明显这个sha1值几乎不可能被破解,这样做是为了保证整个密码空间都被跑遍,而不是中途停掉。统计时间的方式有两种,一是耗时较短的,直接让它跑完,统计实际耗时,二是耗时很长的,查看hashcat的估计时间,以估计时间为耗时。破解时使用的命令均为:

    hashcat -w 3 -a 3 -m 4500 54477ac9fdce357a05e7f68694a0b29c068c3b50 Mask

统计结果如下表所示:

Mask 密码长度 密码空间大小 数量级 耗时 统计方式
?d?d?d?d?d?d 6 1000000 1.0×106 4s 实际
?l?l?l?l?l?l 6 308915776 3.1×108 6s 实际
?l?l?l?l?l?l?l 7 8031810176 8.0×109 23s 实际
?l?l?l?l?l?l?l?l 8 208827064576 2.1×1011 11m28s 实际
?s?s?s?s?s?s 6 1838265625 1.8×109 26s 实际
?a?a?a?a?a?a 6 735091890625 7.4×1011 39m48s 实际
?a?a?a?a?a?a?a 7 69833729609375 7.0×1013 1d19h 估计
?a?a?a?a?a?a?a?a 8 6634204312890625 6.6×1015 178d7h 估计
?a?a?a?a?a?a?a?a?a 9 630249409724609375 6.3×1017 41y338d 估计

上面的测试都是在我自己的电脑上进行的,且都只进行了一次,难以说明问题,但我们的目的一开始便是为了得到“感性的认识”,所以,这是足够的。

同时,我们也知道了,一个好的密码至少应包含大写字母、小写字母、数字和标点符合,且长度不小于8位。

发表评论

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