欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  网络运营

彩虹表破解hash密码

程序员文章站 2022-03-29 14:24:49
彩虹表是一个非常庞大的、针对各种可能的字母、数字等字符组合预先计算好的hash的集合,用来破解各种hash加密的密码。网上有很多彩虹表可供我们下载,当然也可以自己生成,rainbowcrack...

彩虹表是一个非常庞大的、针对各种可能的字母、数字等字符组合预先计算好的hash的集合,用来破解各种hash加密的密码。网上有很多彩虹表可供我们下载,当然也可以自己生成,rainbowcrack就是这样的工具。

RainbowCrack是利用内存时间交换技术加速口令破解过程,官方地址http://project-rainbowcrack.com/#download下载。RainbowCrack使用了彩虹表,通过预先花费时间创建这样的彩虹表,能够在以后破解口令时节约大量的时间。RainbowCrack包括下面三个程序

rtgen.exe……彩虹表生成工具,生成口令、散列值对照表。

rtsort.exe……排序彩虹表,为rcrack.exe提供输入。

rcrack.exe……使用排好序的彩虹表进行口令破解。

首先使用彩虹表生成器(rtgen.exe)生成自己的彩虹表。其命令行格式为:

rtgen hash_algorithm \

plain_charset plain_len_min plain_len_max \

rainbow_table_index \

rainbow_chain_length rainbow_chain_count \

file_title_suffix

rtgen hash_algorithm \

plain_charset plain_len_min plain_len_max \

rainbow_table_index \

-bench www.2cto.com

Hash_algorithm包括lm, md5, sha1,mysqlsha1等,指定密码的加密算法,其中lm是windows密码的加密算法。

plain_charset指定密码的字符集一般有大写字母、小写字母、数字和特殊字符。详细参数信息如下:

numeric = [0123456789]

alpha = [ABCDEFGHIJKLMNOPQRSTUVWXYZ]
alpha-numeric = [ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789]

loweralpha = [abcdefghijklmnopqrstuvwxyz]
loweralpha-numeric = [abcdefghijklmnopqrstuvwxyz0123456789]

mixalpha = [abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ]
mixalpha-numeric = [abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789]

ascii-32-95 = [ !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~]
ascii-32-65-123-4 = [ !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`{|}~]
alpha-numeric-symbol32-space = [ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*()-_+=~`[]{}|\:;”‘<>,.?/ ]

oracle-alpha-numeric-symbol3 = [ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789#$_]

plain_len_min 指定密码的最小长度。

plain_len_max指定密码的最大长度。

rainbow_table_index指定彩虹表的索引。

rainbow_chain_length指定彩虹链的长度。

rainbow_chain_count指定要生成彩虹链的个数。

file_title_suffix指定生成的彩虹表文件名的注释。

-bench 用户性能测试。

下面是使用彩虹表生成器的几个命令行示例:

rtgen lm alpha 1 7 0 100 16 test

rtgen md5 byte 4 4 0 100 16 test

rtgen sha1 numeric 1 10 0 100 16 test

rtgen lm alpha 1 7 0 -bench

建议使用默认值来创建自己的彩虹表。如下面的例子创建一个128M的大写字母md5加密的彩虹表,密码最短1位,最长7位。

C:yeetrac>rtgen md5 alpha 1 7 0 2100 8000000 yeetrack

hash routine: lm

hash length: 8

plain charset: ABCDEFGHIJKLMNOPQRSTUVWXYZ

plain charset in hex: 41 42 43 44 45 46 47 48 49 4a 4b 4c 4d 4e 4f 50 51 52 53 54 55 56 57 58 59 5a

plain length range: 1 – 7

plain charset name: alpha

plain space total: 8353082582

rainbow table index: 0

reduce offset: 0

generating…

done.

创建比较大的彩虹表可能要花费很久的时间,几小时甚至几天,跟硬件有关。在生成了彩虹表之后,我们会在当前目录下找到一个名称为lm_alpha#1-7_0_2100x8000000_yeetrack.rt的文件,其中yeetrack是我们在命令中输入的文件名注释。

接下来的工作是使用彩虹表排序程序(rtsort.exe)进行排序,目的是加快彩虹表的查找速度。这个命令的语法很简单,格式为:

rtsort rainbow_table_pathname

其中rainbow_table_pathname是要排序彩虹表的文件名。例如,排序前面创建的彩虹表,可以使用下面的命令:

C:\yeetrack>rtsort lm_alpha#1-7_0_2100x8000000_all.rt

这个命令需要执行几分钟的时间。

最后,使用彩虹表破解程序(rcrack.exe)破解散列值。破解md5命令很简单,如下面的破解结果:

C:\yeetrack\rainbowcrack-1.5-win64>rcrack.exe md5_alpha#1
0x8000000_0.rt -h 8A9A33314944325F77B68F754029EEDB

2549403648 bytes memory available
1 x 128000000 bytes memory allocated for table buffer
33600 bytes memory allocated for chain traverse
disk: md5_alpha#1-7_0_2100x8000000_0.rt: 128000000 bytes read
searching for 1 hash…
disk: finished reading all files
plaintext of 8a9a33314944325f77b68f754029eedb is ZCXVB

statistics
——————————————————-
plaintext found: 1 of 1
total time: 0.42 s
time of chain traverse: 0.26 s
time of alarm check: 0.14 s
time of wait: 0.00 s
time of other operation: 0.02 s
time of disk read: 0.08 s
hash & reduce calculation of chain traverse: 2202900
hash & reduce calculation of alarm check: 1449527
number of alarm: 2066
speed of chain traverse: 8.28 million/s
speed of alarm check: 10.21 million/s

result
——————————————————-
8a9a33314944325f77b68f754029eedb ZCXVB hex:5a43585642

成功破解出明文密码。彩虹表越大破解的概率就越高,如今比较流行的彩虹表大小为120G。如果想破解windows密码,就需要生成lm彩虹表,命令:rtgen lm alpha 1 7 0 2100 8000000 yeetrack,其他步骤一样,不过windows的密码hash一般保存在c:/windows/system32/config/sam中,需要从中获取hash,工具有pwdump,lc4,lc5等。