所謂的密碼字典主要是配合密碼破解軟件所使用,密碼字典裏包括許多人們習慣性設置的密碼。這樣能夠提升密碼破解軟件的密碼破解成功率和命中率,縮短密碼破解的時間。固然,若是一我的密碼設置沒有規律或很複雜,未包含在密碼字典裏,這個字典就沒有用了,甚至會延長密碼破解所須要的時間。在Linux中有Crunch和rtgen兩個工具,能夠來建立密碼字典。爲方便用戶的使用,本節將介紹這兩個工具的使用方法。算法
Crunch是一種建立密碼字典工具,該字典一般用於暴力破解。使用Crunch工具生成的密碼能夠發送到終端、文件或另外一個程序。下面將介紹使用Crunch工具建立密碼字典。c#
使用Crunch生成字典。具體操做步驟以下所示。工具
(1)啓動crunch命令。執行命令以下所示。post
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 <min> <max> [options] where min and max are numbers Please refer to the man page for instructions and examples on how to use crunch.
輸出的信息顯示了crunch命令的版本及語法格式。其中,使用crunch命令生成密碼的語法格式以下所示:code
crunch [minimum length] [maximum length] [character set] [options]
crunch命令經常使用的選項以下所示。blog
(2)建立一個密碼列表文件,並保存在桌面上。其中,生成密碼列表的最小長度爲8,最大長度爲10,並使用ABCDEFGabcdefg0123456789爲字符集。執行命令以下所示:排序
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
從以上輸出的信息中,能夠看到將生成659TB大的文件,總共有66155263819776行。以上命令執行完成後,將在桌面上生成一個名爲generatedCrunch.txt的字典文件。因爲組合生成的密碼較多,因此須要很長的時間。ip
(3)以上密碼字典文件生成後,使用Nano命令打開。執行命令以下所示:md5
root@kali:~# nano /root/Desktop/generatedCrunch.txt
執行以上命令後,將會打開generatedCrunch.txt文件。該文件中保存了使用crunch命令生成的全部密碼。
rtgen工具用來生成彩虹表。彩虹表是一個龐大的和針對各類可能的字母組合預先計算好的哈希值的集合。彩虹表不必定是針對MD5算法的,各類算法都有,有了它能夠快速的破解各種密碼。越是複雜的密碼,須要的彩虹表就越大,如今主流的彩虹表都是100G以上。
使用rtgen工具生成彩虹表。具體操做步驟以下所示:
(1)切換到rtgen目錄。執行命令以下所示。
root@kali:~# cd /usr/share/rainbowcrack/
(2)使用rtgen命令生成一個基於MD5的彩虹表。執行命令以下所示:
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)
以上信息顯示了彩虹表的參數及生成過程。例如,生成的彩虹表文件名爲md5_loweralpha-numeric#1-5_0_3800x33554432_0.rt;該表使用MD5散列算法加密的;使用的字符集abcdefghijklmnopqrstuvwxyz0123456789等。
(3)爲了容易使用生成的彩虹表,使用rtsort命令對該表進行排序。執行命令以下 所示:
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…
輸出以上信息表示生成的彩虹表已成功進行排序。