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