RainbowTable,这东西是至少我目前为止用过最棒的穷举爆破的工具了,其他东西不说,我们看看最新的1.4版是怎么用的。
先看看破解密码的命令工具。那个官方网站下载的里面是rcrack.exe,但是这个不支持.rti类型的彩虹表,但是因为这个格式的彩虹表体积比较小或者其他的原因吧,网上提供下载的都是这种,所以没办法了,只好用另外一个工具rcracki_mt,这个是个开源的东西,可以在sourceforge上搜索的。
其实这个比原版的高级,而且可以自己设置线程,所以我就顺便测试了一下。
先是自己机器:Athlon X2 5000+ 2G DDR2, Windows Server 2008 R2 ,用的是md5_hybrid(loweralpha#6-6,numeric#1-3)#0-0_1_10000x63248067_distrrtgen[p][i]_0.rti这个表,一个4个文件,每个490M左右。截了两个图,一个是单线程,一个是2线程跑的状态:
看了上图自然明白其中的差距,不过这个时候因为没有预先的准备,测试数据没什么可比性,我就不发了。单线程平均跑每个表大概是40秒,2线程大概是7.8秒,4线程大概是22秒。磁盘方面,读索引和表分别是1.5和14秒。以上数据都是左右。
接下来用一台比较厉害点的机器测试,同样的彩虹表,跑f96b697d7cb7938d525a2f31aaf161d0这个message digest的md5,显然不在这个表里面。就都跑了一遍,测试5次,分别1,2,4,8,16线程,机器配置是Intel Xeno E7330 @2.4g, 4核超线程,系统当成8个cpu了。3.24G的内存
下面就是测试的实际输出,可以看到,在多这太机器上,读写性能以及非常高了,而分析表的时间也都减低到了秒级,基本上可以说是秒出了。
D:/test>rcracki_mt.exe -h f96b697d7cb7938d525a2f31aaf161d0 *.rti Using 1 threads for pre-calculation and false alarm checking... Found 4 rainbowtable files... md5_hybrid(loweralpha#6-6,numeric#1-3)#0-0_0_10000x63130363_distrrtgen[p][i]_0.rti: reading index... 57605680 bytes read, disk access time: 0.84 s reading table... 505042904 bytes read, disk access time: 8.34 s verifying the file... ok searching for 1 hash... cryptanalysis time: 32.02 s md5_hybrid(loweralpha#6-6,numeric#1-3)#0-0_1_10000x63248067_distrrtgen[p][i]_0.rti: reading index... 57605581 bytes read, disk access time: 0.98 s reading table... 505984536 bytes read, disk access time: 7.53 s verifying the file... ok searching for 1 hash... cryptanalysis time: 31.97 s md5_hybrid(loweralpha#6-6,numeric#1-3)#0-0_2_10000x63196772_distrrtgen[p][i]_0.rti: reading index... 57605581 bytes read, disk access time: 0.94 s reading table... 505574176 bytes read, disk access time: 8.13 s verifying the file... ok searching for 1 hash... cryptanalysis time: 32.14 s md5_hybrid(loweralpha#6-6,numeric#1-3)#0-0_3_10000x63223300_distrrtgen[p][i]_0.rti: reading index... 57605614 bytes read, disk access time: 0.86 s reading table... 505786400 bytes read, disk access time: 8.25 s verifying the file... ok searching for 1 hash... cryptanalysis time: 31.88 s statistics ------------------------------------------------------- plaintext found: 0 of 1 (0.00%) total disk access time: 35.88 s total cryptanalysis time: 128.00 s total chain walk step: 199940004 total false alarm: 25587 total chain walk step due to false alarm: 94671091 result ------------------------------------------------------- f96b697d7cb7938d525a2f31aaf161d0 <notfound> hex:<notfound> D:/baopotest>rcracki_mt.exe -h f96b697d7cb7938d525a2f31aaf161d0 *.rti Using 2 threads for pre-calculation and false alarm checking... Found 4 rainbowtable files... md5_hybrid(loweralpha#6-6,numeric#1-3)#0-0_0_10000x63130363_distrrtgen[p][i]_0.rti: reading index... 57605680 bytes read, disk access time: 0.06 s reading table... 505042904 bytes read, disk access time: 0.58 s verifying the file... ok searching for 1 hash... cryptanalysis time: 16.03 s md5_hybrid(loweralpha#6-6,numeric#1-3)#0-0_1_10000x63248067_distrrtgen[p][i]_0.rti: reading index... 57605581 bytes read, disk access time: 0.08 s reading table... 505984536 bytes read, disk access time: 0.58 s verifying the file... ok searching for 1 hash... cryptanalysis time: 16.03 s md5_hybrid(loweralpha#6-6,numeric#1-3)#0-0_2_10000x63196772_distrrtgen[p][i]_0.rti: reading index... 57605581 bytes read, disk access time: 0.06 s reading table... 505574176 bytes read, disk access time: 0.56 s verifying the file... ok searching for 1 hash... cryptanalysis time: 16.06 s md5_hybrid(loweralpha#6-6,numeric#1-3)#0-0_3_10000x63223300_distrrtgen[p][i]_0.rti: reading index... 57605614 bytes read, disk access time: 0.06 s reading table... 505786400 bytes read, disk access time: 0.56 s verifying the file... ok searching for 1 hash... cryptanalysis time: 16.06 s statistics ------------------------------------------------------- plaintext found: 0 of 1 (0.00%) total disk access time: 2.55 s total cryptanalysis time: 64.19 s total chain walk step: 199940004 total false alarm: 25587 total chain walk step due to false alarm: 94671091 result ------------------------------------------------------- f96b697d7cb7938d525a2f31aaf161d0 <notfound> hex:<notfound> D:/baopotest>rcracki_mt.exe -h f96b697d7cb7938d525a2f31aaf161d0 *.rti Using 4 threads for pre-calculation and false alarm checking... Found 4 rainbowtable files... md5_hybrid(loweralpha#6-6,numeric#1-3)#0-0_0_10000x63130363_distrrtgen[p][i]_0.rti: reading index... 57605680 bytes read, disk access time: 0.08 s reading table... 505042904 bytes read, disk access time: 0.58 s verifying the file... ok searching for 1 hash... cryptanalysis time: 8.30 s md5_hybrid(loweralpha#6-6,numeric#1-3)#0-0_1_10000x63248067_distrrtgen[p][i]_0.rti: reading index... 57605581 bytes read, disk access time: 0.06 s reading table... 505984536 bytes read, disk access time: 0.58 s verifying the file... ok searching for 1 hash... cryptanalysis time: 8.42 s md5_hybrid(loweralpha#6-6,numeric#1-3)#0-0_2_10000x63196772_distrrtgen[p][i]_0.rti: reading index... 57605581 bytes read, disk access time: 0.06 s reading table... 505574176 bytes read, disk access time: 0.56 s verifying the file... ok searching for 1 hash... cryptanalysis time: 8.47 s md5_hybrid(loweralpha#6-6,numeric#1-3)#0-0_3_10000x63223300_distrrtgen[p][i]_0.rti: reading index... 57605614 bytes read, disk access time: 0.06 s reading table... 505786400 bytes read, disk access time: 0.59 s verifying the file... ok searching for 1 hash... cryptanalysis time: 8.34 s statistics ------------------------------------------------------- plaintext found: 0 of 1 (0.00%) total disk access time: 2.58 s total cryptanalysis time: 33.53 s total chain walk step: 199940004 total false alarm: 25587 total chain walk step due to false alarm: 94671091 result ------------------------------------------------------- f96b697d7cb7938d525a2f31aaf161d0 <notfound> hex:<notfound> D:/baopotest>rcracki_mt.exe -h f96b697d7cb7938d525a2f31aaf161d0 *.rti Using 8 threads for pre-calculation and false alarm checking... Found 4 rainbowtable files... md5_hybrid(loweralpha#6-6,numeric#1-3)#0-0_0_10000x63130363_distrrtgen[p][i]_0.rti: reading index... 57605680 bytes read, disk access time: 0.06 s reading table... 505042904 bytes read, disk access time: 0.56 s verifying the file... ok searching for 1 hash... cryptanalysis time: 4.13 s md5_hybrid(loweralpha#6-6,numeric#1-3)#0-0_1_10000x63248067_distrrtgen[p][i]_0.rti: reading index... 57605581 bytes read, disk access time: 0.06 s reading table... 505984536 bytes read, disk access time: 0.56 s verifying the file... ok searching for 1 hash... cryptanalysis time: 4.20 s md5_hybrid(loweralpha#6-6,numeric#1-3)#0-0_2_10000x63196772_distrrtgen[p][i]_0.rti: reading index... 57605581 bytes read, disk access time: 0.06 s reading table... 505574176 bytes read, disk access time: 0.56 s verifying the file... ok searching for 1 hash... cryptanalysis time: 4.09 s md5_hybrid(loweralpha#6-6,numeric#1-3)#0-0_3_10000x63223300_distrrtgen[p][i]_0.rti: reading index... 57605614 bytes read, disk access time: 0.06 s reading table... 505786400 bytes read, disk access time: 0.58 s verifying the file... ok searching for 1 hash... cryptanalysis time: 4.06 s statistics ------------------------------------------------------- plaintext found: 0 of 1 (0.00%) total disk access time: 2.52 s total cryptanalysis time: 16.48 s total chain walk step: 199940004 total false alarm: 25587 total chain walk step due to false alarm: 94671091 result ------------------------------------------------------- f96b697d7cb7938d525a2f31aaf161d0 <notfound> hex:<notfound> D:/baopotest>rcracki_mt.exe -h f96b697d7cb7938d525a2f31aaf161d0 *.rti Using 16 threads for pre-calculation and false alarm checking... Found 4 rainbowtable files... md5_hybrid(loweralpha#6-6,numeric#1-3)#0-0_0_10000x63130363_distrrtgen[p][i]_0.rti: reading index... 57605680 bytes read, disk access time: 0.06 s reading table... 505042904 bytes read, disk access time: 0.56 s verifying the file... ok searching for 1 hash... cryptanalysis time: 4.20 s md5_hybrid(loweralpha#6-6,numeric#1-3)#0-0_1_10000x63248067_distrrtgen[p][i]_0.rti: reading index... 57605581 bytes read, disk access time: 0.06 s reading table... 505984536 bytes read, disk access time: 0.55 s verifying the file... ok searching for 1 hash... cryptanalysis time: 4.23 s md5_hybrid(loweralpha#6-6,numeric#1-3)#0-0_2_10000x63196772_distrrtgen[p][i]_0.rti: reading index... 57605581 bytes read, disk access time: 0.06 s reading table... 505574176 bytes read, disk access time: 0.56 s verifying the file... ok searching for 1 hash... cryptanalysis time: 4.09 s md5_hybrid(loweralpha#6-6,numeric#1-3)#0-0_3_10000x63223300_distrrtgen[p][i]_0.rti: reading index... 57605614 bytes read, disk access time: 0.06 s reading table... 505786400 bytes read, disk access time: 0.58 s verifying the file... ok searching for 1 hash... cryptanalysis time: 4.11 s statistics ------------------------------------------------------- plaintext found: 0 of 1 (0.00%) total disk access time: 2.50 s total cryptanalysis time: 16.64 s total chain walk step: 199940004 total false alarm: 25587 total chain walk step due to false alarm: 94671091 result ------------------------------------------------------- f96b697d7cb7938d525a2f31aaf161d0 <notfound> hex:<notfound> D:/baopotest>rcracki_mt.exe -h f96b697d7cb7938d525a2f31aaf161d0 *.rti Using 32 threads for pre-calculation and false alarm checking... Found 4 rainbowtable files... md5_hybrid(loweralpha#6-6,numeric#1-3)#0-0_0_10000x63130363_distrrtgen[p][i]_0.rti: reading index... 57605680 bytes read, disk access time: 0.06 s reading table... 505042904 bytes read, disk access time: 0.56 s verifying the file... ok searching for 1 hash... cryptanalysis time: 4.05 s md5_hybrid(loweralpha#6-6,numeric#1-3)#0-0_1_10000x63248067_distrrtgen[p][i]_0.rti: reading index... 57605581 bytes read, disk access time: 0.06 s reading table... 505984536 bytes read, disk access time: 0.56 s verifying the file... ok searching for 1 hash... cryptanalysis time: 4.13 s md5_hybrid(loweralpha#6-6,numeric#1-3)#0-0_2_10000x63196772_distrrtgen[p][i]_0.rti: reading index... 57605581 bytes read, disk access time: 0.06 s reading table... 505574176 bytes read, disk access time: 0.56 s verifying the file... ok searching for 1 hash... cryptanalysis time: 4.09 s md5_hybrid(loweralpha#6-6,numeric#1-3)#0-0_3_10000x63223300_distrrtgen[p][i]_0.rti: reading index... 57605614 bytes read, disk access time: 0.06 s reading table... 505786400 bytes read, disk access time: 0.58 s verifying the file... ok searching for 1 hash... cryptanalysis time: 4.05 s statistics ------------------------------------------------------- plaintext found: 0 of 1 (0.00%) total disk access time: 2.52 s total cryptanalysis time: 16.31 s total chain walk step: 199940004 total false alarm: 25587 total chain walk step due to false alarm: 94671091 result ------------------------------------------------------- f96b697d7cb7938d525a2f31aaf161d0 <notfound> hex:<notfound>
最后,我用那个260G的彩虹表(488个表,每个表530M左右)做了另外一个测试,发现,实际上,在这么大的彩虹表中,每个表花费大约8秒左右。在分析每个表上耗费不到1秒,cpu也仅仅是想脉冲波一样轻轻跳动。
经过这个分析发现,其实,在这种大表的情况下,一次分析10个hash值能把读取时间和分析时间的比率降低。这个是我测试的截图:
所以,根据此时的cpu使用率的情况看,大部分时间还是空闲的,因此我们可以尝试批量每次超过100个hash值的爆破。
statistics ------------------------------------------------------- plaintext found: 10 of 10 (100.00%) total disk access time: 2280.48 s total cryptanalysis time: 589.04 s total chain walk step: -1963782476 total false alarm: 734339 total chain walk step due to false alarm: -1365452648