Linux密碼生成工具crunch使用攻略
原創【51CTO.com原創稿件】crunch是一款linux下的壓縮后僅僅38k的小程序,crunch程序在2004年及以前由email為的作者編寫mimayin@aciiid.ath.cx,后續版本由bofh28@gmail.com負責維護,因此在github上有兩個版本:
crunch默認安裝在kali環境中(05-Password Attacks),Crunch可以按照指定的規則生成密碼字典,生成的字典字符序列可以輸出到屏幕、文件或重定向到另一個程序中,Crunch可以參數可能的組合和排列,其最新版本為3.6。并具備如下特征:
- Crunch可以以組合和排列的方式生成字典
- 它可以通過行數或文件大小中止輸出
- 現在支持恢復
- 現在支持數字和符號模式
- 現在分別支持大小寫字符模式
- 在生成多個文件時添加狀態報告
- 新的-l選項支持@,%^
- 新的-d選項可以限制重復的字符,可以通過man文件查看詳細信息
- 現在支持unicode
Crunch其實最厲害的是知道密碼的一部分細節后,可以針對性的生成字典,這在滲透中就特別有用,比如知道用戶密碼的習慣是taobao2013(taobao+數字年),這可以通過Crunch生成taobao+所有的年份字典,用來進行暴力破解攻擊其效果尤佳!
1. crunch下載及編譯
可以手動下載最新3.6版本:https://sourceforge.net/projects/crunch-wordlist/
也可以自行以下命令進行下載、解壓和編譯
- wget https://sourceforge.net/projects/crunch-wordlist/files/crunch-wordlist/crunch-3.6.tgz
- tar -zxvf crunch-3.6.tgz
- cd crunch-3.6/
- make
手動編譯會比kali自動安裝的程序多一個unicode_test.lst,可以將手動編譯中的該文件復制到kali中的/usr/share/crunch/文件夾下。
- cp unicode_test.lst /usr/share/crunch/
2. crunch命令格式
- crunch <min-len> <max-len> [<charset string>] [options]
參數:
- min-len crunch要開始的最小長度字符串。即使不使用參數的值,也需要此選項
- max-len crunch要開始的最大長度字符串。即使不使用參數的值,也需要此選項
charset string 在命令行使用crunch你可能必須指定字符集設置,否則將使用缺省的字符集設置。缺省的設置為小寫字符集,大寫字符集,數字和特殊字符(符號),如果不按照這個順序,你將得到自己指定結果。必須指定字符類型或加號的值。注意:如果你想在你的字符集中包含空格特征,你必須使用“\”字符或用引號括起來你的字符集,例如"abc "。見示例3,11,12,和13。如果有“+”指定,則后續格式中出現的類型從其中取值!
選項
(1)-b 數字[類型] 指定輸出文件的大小,僅僅使用“-o”選項時生效;例如60mb,例如格式:“./crunch 4 5 -b 20mib -o START”或者“crunch 4 5 -b 20mib -o START”會生成4個文件:aaaa-gvfed.txt,gvfee-ombqy.txt,ombqz-wcydt.txt,wcydu-zzzzz.txt,其中每一個文件的開始和最后字符串將作為文件的文件命名;類型有效值為KB、MB、GB、KIB,MIB,和GIB。前三種類型是基于1000,而最后三種類型是基于1024,注意數字與類型之間沒有空格。例如“500mb”正確,而“500 MB”則不正確,執行命令后如圖1所示。aaaa-gvfed.txt,gvfee-ombqy.txt,ombqz-wcydt.txt大小將是20M,以1024為基數,也即20480kb,一般以MIB為參數。
圖1指定文件大小輸出
“crunch 4 5 -b 20MB -o START”和“crunch 4 5 -b 20MIB -o START”命令生成文件僅僅是以文件大小有區別,查看其生成的文件大小:
- -rw-r--r-- 1 root root 20000000 Jun 3 03:19 aaaa-glzql.txt //20MB
- -rw-r--r-- 1 root root 20971520 Jun 3 03:26 aaaa-gvfed.txt //20MIB
- -rw-r--r-- 1 root root 19999998 Jun 3 03:19 glzqm-ntqpo.txt //20MB
- -rw-r--r-- 1 root root 20971518 Jun 3 03:26 gvfee-ombqy.txt //20MIB
- -rw-r--r-- 1 root root 19999998 Jun 3 03:19 ntqpp-vbhor.txt //20MB
- -rw-r--r-- 1 root root 20971518 Jun 3 03:26 ombqz-wcydt.txt //20MIB
- -rw-r--r-- 1 root root 13573140 Jun 3 03:19 vbhos-zzzzz.txt //20MIB
- -rw-r--r-- 1 root root 10658580 Jun 3 03:26 wcydu-zzzzz.txt //20MB
(2)-c 數字 指定寫入輸出文件的行數,也即包含密碼的個數,例如使用字符規則mixalpha-numeric-all-space,生成最小和最大字符串為1的且每一個文件保存60個字符串的密碼字典:
- crunch 1 1 -f /usr/share/crunch/charset.lst mixalpha-numeric-all-space -o START -c 60
(3)-d 數字符號,限制出現相同元素的個數(至少出現元素個數),“-d 2@”限制小寫字母輸出像aab和aac,aaa不會產生,因為這是連續3個字母,格式是數字+符號,數字是連續字母出現的次數,符號是限制字符串的字符,例如@,%^(“@”代表小寫字母,“,”代表大寫字符,“%”代表數字,“^”代表特殊字符)
(4)-e 字符串,定義停止生成密碼 ,比如-e 222222:到222222停止生成密碼
(5)-f /path/to/charset.lst charset-name,從charset.lst指定字符集,也即調用密碼庫文件,比如kali中的charset.lst 在/usr/share/crunch/charset.lst,則參數為“-f /usr/share/crunch/charset.lst”
(6)-i 改變出格式。例如將格式aaa,aab,aac,aad,更換為格式aaa,baa,caa,daa,aba,bba等
(7)- l 跟t搭配使用,告訴crunch那些符號被當成文字 這將允許使用占位符作為模式中的字母,l選項應與t選項的長度相同,參見例子15。
(8)-m,m跟p選項合并使用,請用“-p”代替。
(9)-o wordlist.txt,指定輸出文件的名稱,例如wordlist.txt
(10)-p 字符串 或者-p 單詞1 單詞2 ...以排列組合的方式來生成字典。
(11)-q filename.txt,讀取filename.txt
(12)-r 告訴crunch繼續從它離開的地方恢復生產密碼字典。如果你使用“-o”選項,“-r”選項僅僅工作。你必須使用跟原命令一樣的命令來恢復,唯一的例外是“-s”選項。如果在原始命令使用了該選項,則必須在恢復會話之前刪除它,只需添加R到原始命令結束。
(13)-s startblock,指定一個開始的字符。
(14)-t @,%^,指定模式,@,%^分別代表意義如下:
- @ 插入小寫字母
- , 插入大寫字母
- % 插入數字
- ^ 插入特殊符號
(14)-u,必須是最后一個選項,禁止打印百分比
(15)-z gzip, bzip2, lzma, and 7z,從-o選項壓縮輸出結果,支持gzip, bzip2, lzma, and 7z格式,gzip是最快壓縮率最低,bzip2是稍微慢于gzip,但比其壓縮率搞,7z最慢,但壓縮率最高。
3. crunch使用實例
(1) 案例1生成字母組合
- runch 1 8
生成最小1位,最大8位,由26個小寫字母為元素的所有組合
(2) 案例2生成指定字符組合
- crunch 1 6 abcdefg
生成最小為1,最大為6,由字符串abcdefg開頭,以字符串gggggg為結束的所有字符組合
(3) 案例3指定字符串加特殊字符的組合
- crunch 1 6 abcdefg\
生成最小為1,最大為6,由abcdefg和空格為元素的所有組合(/代表空格)
(4) 案例4
- crunch 1 8 -f charset.lst mixalpha-numeric-all-space -o wordlist.txt
調用密碼庫charset.lst,生成最小為1,最大為8,元素為密碼庫charset.lst中 mixalpha-numeric-all-space的項目,并保存為 wordlist.txt;其中 charset.lst在kali_linux的目錄為 /usr/share/crunch/charset.lst, charset.lst中mixalpha-numeric-all-space項目包含最常見的元素組合(即大小寫字母+數字+常見符號);使用cat /usr/share/crunch/charset.lst 查看所有密碼庫
(5) 案例5生成兩位小寫字母+dog+三位小寫字母
- crunch 8 8 -f charset.lst mixalpha-numeric-all-space -o wordlist.txt -t @@dog@@@ -s cbdogaaa
調用密碼庫charset.lst,生成8位密碼;其中元素為密碼庫 charset.lst中 mixalpha-numeric-all-space的項;格式為“兩個小寫字母+dog+三個小寫字母”,并以cbdogaaa字符串開始字典生成。mixalpha-numeric-all-space的值為:
- [abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*()-_+=~`[]{}|\:;"'<>,.?/ ]
@取值為mixalpha-numeric-all-space中的值。
(6) 案例6生成以BB開頭的2位和3位大寫字符串
- crunch 2 3 -f charset.lst ualpha -s BB
調用密碼庫charset.lst,生成2位和3位密碼;其中元素為密碼庫charset.lst中ualpha的項;并且以BB開頭,其中ualpha = [ABCDEFGHIJKLMNOPQRSTUVWXYZ],表示全部大寫。注意charset.lst必須在當前運行程序目錄,否則必須指定完整的路徑地址。
(7) 案例7—生成某個字符串的所有數學組合
- crunch 4 5 -p abc
crunch將會生成abc的所有位置變換,例如abc, acb, bac, bca, cab, cba,雖然數字4和5可以是其它值,但必須是后者大于前者,也可以是1 2,其本質意義是某一個單詞的所有組合,流入crunch 1 1 –p password,將生成password中所有的排列組合。8*7*6*5*4*3*2*1=40320個單詞。
(8) 案例8—生成單詞的所有組合
- crunch 4 5 -p dog cat bird
crunch將生成以“dog”“cat”“bird”為元素的所有密碼組合:birdcatdog,birddogcat,catbirddog, catdogbird, dogbirdcat, dogcatbird,其大小有字母的排列數決定,在本例中為3×2×1=6個密碼。
(9) 案例9生成6000個密碼且生成文件壓縮為bzip2格式
- crunch 1 5 -o START -c 6000 -z bzip2
生成最小為1位,最大為5位元素為所有小寫字母的密碼字典,其中每一個字典文件包含6000個密碼,并將密碼文件保存為bz2文件,文件名將以 "第一個密碼" + " - " + "最后一個密碼" + " .txt.bz2 " 保存(比如000-999.txt.bz2);下面是生成幾種格式的壓縮文件所用的時間和體積大小對比:
- # time ./crunch 1 4 -o START -c 6000 -z gzip
- real 0m2.729s
- user 0m2.216s
- sys 0m0.360s
- # time ./crunch 1 4 -o START -c 6000 -z bzip2
- real 0m3.414s
- user 0m2.620s
- sys 0m0.580s
- # time ./crunch 1 4 -o START -c 6000 -z lzma
- real 0m43.060s
- user 0m9.965s
- sys 0m32.634s
- size filename
- 30K aaaa-aiwt.txt
- 12K aaaa-aiwt.txt.gz
- 3.8K aaaa-aiwt.txt.bz2
- 1.1K aaaa-aiwt.txt.lzma
(10) 案例10
- crunch 4 5 -b 20mib -o START
生成最小為4位,最大為5位元素為所有小寫字母的密碼字典,并以20M進行分割;這時會生成4個文件:aaaa-gvfed.txt, gvfee-ombqy.txt, ombqz-wcydt.txt, wcydu-zzzzz.txt:其中前三個大概每個20M,最后一個10M左右(因為總共70M)
(11) 案例11
生成4位密碼,其中格式為“兩個數字”+“一個小寫字母”+“常見符號”(其中數字這里被指定只能為123組成的所有2位數字組合)。比如12f#,32j^,13t$......,換句話說-t選項后面出現的%只能從123中取值。
(12) 案例12
- crunch 3 3 abc + 123 !@# -t ^%@
生成3位密碼,其中第一位由“a,b,c”中的一個;第二位為“1,2,3”中的一個;第三位為“!,@,#”中的一個。比如1a!、2a#、3b@......(此命令在實際測試中存在問題,!在linux為特殊命令).
(13) 案例13
- crunch 4 4 + + 123 + -t %%@^
生成4位密碼,其中格式為“兩個數字”+“一個小寫字母”+“常見符號”(其中數字這里被指定只能為123組成的所有2位數字組合)。比如12f#,32j^,13t$......
加號(+)是一個占位符,以便為字符類型指定一個字符集。crunch將使用默認字符集的字符類型,當crunch遇到一個+(加號)的命令行。您必須為每個字符類型指定值或使用加號。也就是說,如果你有兩個字符類型,你要么為每個類型指定值,要么使用加號。“-t %%@^”指定第一和第二位插入數字,第三位插入小寫字符,最后一位插入特殊字符,所以在這個例子中設置為:
- abcdefghijklmnopqrstuvwxyz
- ABCDEFGHIJKLMNOPQRSTUVWXYZ
- 123
- !@#$%^&*()-_+=~`[]{}|\:;"'<>,.?/
生成的結果將會是以11a!開頭,以 "33z "結束的字典。
(14) 案例14
- crunch 5 5 -t ddd@@ -o j -p dog cat bird
生成5個元素組成的密碼,其中前三個為 dog,cat,bird任意組合,后兩個為兩個小寫字母的任意組合。比如birddogcatuz,catdogbirdab,birdcatdogff , ......
(15) 案例15
- crunch 7 7 -t p@ss,%^ -l a@aaaaa
加-l選項是將字符串中的@作為文字字符集,而不是做為小寫字母進行替換。生成7位密碼,格式為“字符p@ss”+大寫字母+數字+符號,比如p@ssZ9>......
(16) 案例16
- crunch 5 5 -s @4#S2 -t @%^,2 -e @8*Q2 -l @dddd -b 10KB -o START
生成5位密碼,以 @4#S2開始,結束于@8*Q2.,并分割為10k大小,格式為小寫字母+數字+符號+大寫字母+數字。
(17) 案例17
- crunch 5 5 -d 2@ -t @@@%%
- crunch will generate 5 character strings staring with aab00 and ending at zzy99. Notice that aaa and zzz are not present.
生成5位密碼,格式為三個小寫字母+兩個數字,并限制每個密碼最少出現2種字母,以aab00開頭,以zzy99結束。“-d 2@”表示字母重復最多2次。
(18) 案例18
- crunch 10 10 -t @@@^%%%%^^ -d 2@ -d 3% -b 20mb -o START
- crunch will generate 10 character strings starting with aab!0001!! and ending at zzy 9998 The output will be written to 20mb files.
生成10位密碼,格式為三個小寫字母+一個符號+四個數字+兩個符號,限制每個密碼至少2種字母和至少3種數字,文件大小為20MB。
(19) 案例19
- crunch 8 8 -d 2@
生成8位密碼,每個密碼至少出現兩種字母
(20) 案例20
- crunch 4 4 -f unicode_test.lst japanese -t @@%% -l @xdd
- crunch will load some Japanese characters from the unicode_test character set file. The output will start at @日00 and end at @語99
調用密碼庫unicode_test.lst中的 japanese項目字符,生成4位密碼,其中格式為兩小寫字母+兩數字。
4. 比較有用的命令
(1)生成pass01-pass99所有數字組合
- crunch 6 6 -t pass%% >>newpwd.txt
(2)生成六位小寫字母密碼,其中前四位為pass
- crunch 6 6 -t pass@@ >>newpwd.txt
(3)生成六位密碼,其中前四位為pass,后二位為大寫
- crunch 6 6 -t pass,, >>newpwd.txt
(4)生成六位密碼,其中前四位為pass,后二位為特殊字符
- crunch 6 6 -t pass^^ >>newpwd.txt
(5)制作8為數字字典
- crunch 8 8 charset.lst numeric -o num8.dic
(6)制作6為數字字典
- crunch 6 6 0123456789 –o num6.dic
(7)制作139開頭的手機密碼字典
- crunch 11 11 +0123456789 -t 139%%%%%%%% -o num13.dic
文件大小為1144 MB,還可以每次生成文件大小為20M,自動生成文件:
- crunch 11 11 +0123456789 -t 139%%%%%%%% -b 20mib -o START
(8)在線使用生成的密碼
不用把龐大的字典保存在硬盤上,生成一個密碼用一個,不過消耗的時間多,比較占用cpu,參數最后面的-表示引用crunch生成的密碼,例如無線密碼在線破解:
- crunch 2 4 0123456789 | aircrack -ng a,cap -e MyESSID -w -
- crunch 10 1012345 --stodout | airolib -ng testdlb -import passwd –
- crunch 1 6 0123456789 | john pwd.txt --stdin -
【51CTO原創稿件,合作站點轉載請注明原文作者和出處為51CTO.com】