密码字典是一种与密码破解软件配合使用的工具,其中包含了人们常用的密码。使用密码字典可以提高密码破解软件的成功率和命中率,从而缩短破解密码所需的时间。然而,如果一个人的密码设置没有规律或者非常复杂,不包含在密码字典中,那么密码字典就无法发挥作用,甚至可能延长破解密码所需的时间。在Linux系统中,有两个工具可以用来创建密码字典,它们分别是Crunch和rtgen。下面将介绍这两个工具的使用方法。
8.7.1 Crunch工具
Crunch是一种用于创建密码字典的工具,通常用于暴力破解。使用Crunch工具生成的密码可以输出到终端、文件或其他程序中。下面是使用Crunch工具创建密码字典的具体步骤:
(1)启动crunch命令,执行以下命令:
执行上述命令后,将显示crunch命令的版本和语法格式。使用crunch命令生成密码的语法格式如下:
root@kali:~# crunch
crunch version 3.4
Crunch can create a wordlist based on criteria you specify. The outout from crunch can be sent to the screen, file, or to another program.
Usage: crunch [options]
where min and max are numbers
Please refer to the man page for instructions and examples on how to use crunch.
crunch [minimum length] [maximum length] [character set] [options]
root@kali:~# crunch 8 10 ABCDEFGabcdefg0123456789 –o /root/Desktop/
generatedCrunch.txt
Notice: Detected unicode characters. If you are piping crunch output
to another program such as john or aircrack please make sure that program
can handle unicode input.
Do you want to continue? [Y/n] y
Crunch will now generate the following amount of data: 724845943848960 bytes
691266960 MB
675065 GB
659 TB
0 PB
Crunch will now generate the following number of lines: 66155263819776
AAAAAAAA
AAAAAAAB
AAAAAAAC
AAAAAAAD
AAAAAAAE
AAAAAAAF
AAAAAAAG
AAAAAAAa
AAAAAAAb
AAAAAAAc
……
AAdb6gFe
AAdb6gFf
AAdb6gFg
AAdb6gF0
AAdb6gF1
AAdb6gF2
AAdb6gF3
AAdb6gF4
AAdb6gF5
(2)创建一个密码列表文件,并将其保存在桌面上。生成的密码列表的最小长度为8,最大长度为10,并使用ABCDEFGabcdefg0123456789作为字符集。执行以下命令:
从上述输出中可以看到,将生成一个大小为659TB的文件,总共有66155263819776行。由于生成的密码组合较多,所以需要很长的时间。
root@kali:~# nano /root/Desktop/generatedCrunch.txt
(3)生成的密码字典文件生成后,可以使用Nano命令打开。执行以下命令:
root@kali:~# cd /usr/share/rainbowcrack/
执行上述命令后,将打开名为generatedCrunch.txt的字典文件。该文件中保存了使用crunch命令生成的所有密码。
8.7.2 rtgen工具
rtgen工具用于生成彩虹表。彩虹表是一个包含了各种可能的字母组合预先计算好的哈希值的庞大集合。彩虹表不仅适用于MD5算法,还适用于其他各种算法,通过彩虹表可以快速破解各种类型的密码。复杂的密码需要更大的彩虹表,目前主流的彩虹表大小都超过100G。
使用rtgen工具生成彩虹表的具体步骤如下:
(1)切换到rtgen目录,执行以下命令:
root@kali:/usr/share/rainbowcrack# ./rtgen md5 loweralpha-numeric 1 5 0 3800 33554432 0
rainbow table md5_loweralpha-numeric#1-5_0_3800x33554432_0.rt parameters
hash algorithm: md5
hash length: 16
charset: abcdefghijklmnopqrstuvwxyz0123456789
charset in hex: 61 62 63 64 65 66 67 68 69 6a 6b 6c 6d 6e 6f 70 71 72 73 74 75 76 77 78 79 7a 30 31 32 33 34 35 36 37 38 39
charset length: 36
plaintext length range: 1 - 5
reduce offset: 0x00000000
plaintext total: 62193780
sequential starting point begin from 0 (0x0000000000000000)
generating…
131072 of 33554432 rainbow chains generated (0 m 42.5 s)
262144 of 33554432 rainbow chains generated (0 m 39.2 s)
393216 of 33554432 rainbow chains generated (0 m 41.6 s)
524288 of 33554432 rainbow chains generated (0 m 42.0 s)
655360 of 33554432 rainbow chains generated (0 m 39.1 s)
786432 of 33554432 rainbow chains generated (0 m 40.1 s)
917504 of 33554432 rainbow chains generated (0 m 39.9 s)
1048576 of 33554432 rainbow chains generated (0 m 38.8 s)
1179648 of 33554432 rainbow chains generated (0 m 39.2 s)
1310720 of 33554432 rainbow chains generated (0 m 38.2 s)
.....
33161216 of 33554432 rainbow chains generated (0 m 40.2 s)
33292288 of 33554432 rainbow chains generated (0 m 38.9 s)
33423360 of 33554432 rainbow chains generated (0 m 38.1 s)
33554432 of 33554432 rainbow chains generated (0 m 39.1 s)
root@kali:/usr/share/rainbowcrack# rtsort md5_loweralpha-numeric#1-5_0_
3800x33554432_0.rt
md5_loweralpha-numeric#1-5_0_3800x33554432_0.rt:
1351471104 bytes memory available
loading rainbow table…
sorting rainbow table by end point…
writing sorted rainbow table…
(2)使用rtgen命令生成一个基于MD5的彩虹表,执行以下命令:
以上信息显示了生成彩虹表的参数和过程。例如,生成的彩虹表文件名为md5loweralpha-numeric#1-503800×335544320.rt,该表使用MD5散列算法进行加密,字符集包括小写字母和数字。
(3)为了方便使用生成的彩虹表,可以使用rtsort命令对其进行排序,执行以下命令: