密碼字典生成工具Crunch
1.1簡介
1.Crunch簡介
Crunch是一種創(chuàng)建密碼字典工具,按照指定的規(guī)則生成密碼字典,可以靈活的制定自己的字典文件。使用Crunch工具生成的密碼可以輸出到屏幕,保存到文件、或另一個程序。知道密碼的一部分細節(jié)后,可以針對性的生成字典,目前版本3.6。其開源代碼地址:
https://github.com/jaalto/external-sf--crunch-wordlist
https://github.com/crunchsec/crunch
2.特點
- Crunch可以以組合和排列的方式生成字典
- 它可以通過行數(shù)或文件大小中止輸出
- 支持恢復
- 支持數(shù)字和符號模式
- 分別支持大小寫字符模式
- 在生成多個文件時添加狀態(tài)報告
- 新的-l選項支持@,%^
- 新的-d選項可以限制重復的字符,可以通過man文件查看詳細信息
- 支持unicode
1.2安裝及使用
1.安裝
(1)kali默認安裝
apt-get install crunch
(2)centos安裝
git clone https://github.com/crunchsec/crunch.git
cd crunch
sudo make install
說明:
(1)如果是基于32版本編譯,需要安裝相應(yīng)的組件,否則編譯會出錯,如下圖所示。
圖 編譯出錯
(2)分別安裝相應(yīng)的庫文件
yum install glibc-devel.i686 libgcc.i686 //centos
sudo apt-get install gcc-multilib g++-multilib // Ubuntu
gcc -Wall -pedantic -std=c99 crunch.c -lm -o crunch //只編譯64位版本
2.基本語法
crunch <min-len> <max-len> [<charset string>] [options]
crunch 密碼最小長度 密碼最大長度 [字符集] [命令選項]
[命令選項]
-b number[type] 指定輸出文件的大小,只有在使用 -o START 時才有效,例如:60MB,輸出文件將以起始字母-結(jié)束字母的格式命名,例如:./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。注意數(shù)字和類型之間沒有空格。例如 500mb 是正確的,而 500 mb 是不正確的。
-c number 指定寫入輸出文件的行數(shù),只有在使用 -o START 時才有效,例如:60,輸出文件將以起始字母-結(jié)束字母的格式命名,例如:./crunch 1 1 -f /pentest/password/crunch/charset.lst mixalpha-numeric-all-space -o START -c 60 將生成2個文件:a-7.txt 和 8-\ .txt。第二個文件名中的斜杠是因為結(jié)束字符是空格,ls 必須轉(zhuǎn)義它才能打印出來。當指定文件名時,確實需要輸入 \,因為最后一個字符是空格。
-d numbersymbol 限制重復字符的數(shù)量。-d 2@ 會將小寫字母限制為輸出類似 aab 和 aac。aaa 不會被生成,因為這是3個連續(xù)的 a 字母。格式是數(shù)字后跟符號,其中數(shù)字是最大連續(xù)字符數(shù),符號是你想要限制的字符集的符號,例如 @,%^
-e string 指定 crunch 應(yīng)該提前停止的時間點。
-f /path/to/charset.lst charset-name 指定一個來自 charset.lst 的字符集。
-i 反轉(zhuǎn)輸出,所以不是 aaa,aab,aac,aad, 等等,而是得到aaa,baa,caa,daa,aba,bba, 等等。
-l 當使用 -t 選項時,此選項告訴 crunch 哪些符號應(yīng)被視為字面量。這允許你在模式中將占位符用作字母。-l 選項的長度應(yīng)該與 -t 選項相同。參見示例15。
-m 已合并到 -p 中。請改用 -p。
-o wordlist.txt 指定要寫入輸出的文件,例如:wordlist.txt
-p charset 或 -p word1 word2 ... 告訴 crunch 生成沒有重復字符的單詞。默認情況下,crunch 會生成一個字符集中的字符數(shù)量的冪次方(#of_chars_in_charset ^ max_length)大小的單詞表。此選項將生成字符集中的字符數(shù)量的階乘(#of_chars_in_charset!)。! 表示階乘。例如,如果字符集是 abc,最大長度是 4,crunch 默認會生成 3^4 = 81 個單詞。此選項將生成 3! = 3x2x1 = 6 個單詞(abc, acb, bac, bca, cab, cba)。這必須是最后一個選項!此選項不能與 -s 一起使用,并且它忽略了最小和最大長度,但你仍然必須指定兩個數(shù)字。
-q filename.txt 告訴 crunch 讀取 filename.txt 并排列讀取的內(nèi)容。這類似于 -p 選項,但它從 filename.txt 獲取輸入。
-r 告訴 crunch 從中斷的地方繼續(xù)生成單詞。-r 僅在使用 -o 時有效。你必須使用與最初生成單詞時相同的命令。唯一的例外是 -s 選項。如果你最初的命令使用了 -s 選項,在恢復會話之前你必須移除它。只需在原始命令的末尾添加 -r 即可。
-s startblock 指定一個起始字符串,例如:03god22fs
-t @,%^ 指定一個模式,例如:@@god@@@@,其中只有 @, , %, 和 ^ 會發(fā)生變化。
@ 將插入小寫字母
, 將插入大寫字母
% 將插入數(shù)字
^ 將插入符號
-u -u 選項禁用打印百分比線程。這應(yīng)該是最后一個選項。
-z gzip, bzip2, lzma, 和 7z 壓縮 -o 選項的輸出。有效的參數(shù)是 gzip, bzip2, lzma, 和 7z。gzip 是最快的,但壓縮率最低。bzip2 比 gzip 稍慢,但有更好的壓縮效果。7z 最慢,但有最好的壓縮效果。
1.3默認示例
crunch man命令后可以獲取crunch中提供的20個使用實例。
1.示例 1
crunch 1 8
crunch 將顯示一個從 a 開始到 zzzzzzzz 結(jié)束的單詞列表。
2.示例 2
crunch 1 6 abcdefg
crunch 將使用字符集 abcdefg 顯示一個從 a 開始到 gggggg 結(jié)束的單詞列表。
3.示例 3
crunch 1 6 abcdefg\
字符串末尾有一個空格。為了使 crunch 使用這個空格,你需要使用 \ 字符來轉(zhuǎn)義它。在這個例子中,你也可以將字母放在引號里,而不需要 \,即 "abcdefg "。crunch 將使用字符集 abcdefg 生成一個從 a 開始到 (6 個空格) 結(jié)束的單詞列表。
4.示例 4
crunch 1 8 -f charset.lst mixalpha-numeric-all-space -o wordlist.txt
crunch 將使用 charset.lst 中的 mixalpha-numeric-all-space 字符集,并將單詞列表寫入名為 wordlist.txt 的文件。文件將從 a 開始,以 " " 結(jié)束。
5.示例 5
crunch 8 8 -f charset.lst mixalpha-numeric-all-space -o wordlist.txt -t @@dog@@@ -s cbdogaaa
crunch 將使用 charset.lst 中的 mixalpha-numeric-all-space 字符集生成一個 8 個字符的單詞列表,并將單詞列表寫入名為 wordlist.txt 的文件。文件將從 cbdogaaa 開始,以 " dog " 結(jié)束。
6. 示例 6
crunch 2 3 -f charset.lst ualpha -s BB
crunch 將從 BB 開始生成單詞列表,以 ZZZ 結(jié)束。這在你需要中途停止生成單詞列表時很有用。只需執(zhí)行 `tail wordlist.txt` 并將 -s 參數(shù)設(shè)置為序列中的下一個單詞。開始前確保重命名原始單詞列表,因為 crunch 會覆蓋現(xiàn)有的單詞列表。
7.示例 7
crunch 4 5 -p abc
crunch 將生成 abc, acb, bac, bca, cab, cba。
8.示例 8
crunch 4 5 -p dog cat bird
crunch 將生成 birdcatdog, birddogcat, catbirddog, catdogbird, dogbirdcat, dogcatbird。
9.示例 9
crunch 1 5 -o START -c 6000 -z bzip2
crunch 將生成每個包含 6000 個單詞的 bzip2 壓縮文件。壓縮文件的文件名將是 first_word-last_word.txt.bz2。
10.示例 10
crunch 4 5 -b 20mib -o START
將生成 4 個文件:aaaa-gvfed.txt, gvfee-ombqy.txt, ombqz-wcydt.txt, wcydu-zzzzz.txt。前三個文件是 20MB(實際為 2 的冪次兆字節(jié)),最后一個文件是 11MB。
11.示例 11
crunch 3 3 abc + 123 !@# -t @%^
將生成一個 3 個字符長的單詞,第一個字符是一個字母,第二個字符是一個數(shù)字,第三個字符是一個符號。你指定想要使用的字符的順序很重要。你必須按小寫字母、大寫字母、數(shù)字和符號的順序指定。如果你不打算使用特定的字符集,你可以使用加號作為占位符。如上所示,我未使用大寫字母集,因此我使用了加號占位符。這將從 a1! 開始,以 c3# 結(jié)束。
12.示例 12
crunch 3 3 abc + 123 !@# -t ^%@
將生成從 !1a 開始到 #3c 結(jié)束的 3 個字符的單詞。
13. 示例 13
crunch 4 4 + + 123 + -t %%@^
加號 (+) 是一個占位符,因此你可以為字符類型指定字符集。當 crunch 在命令行中遇到加號時,它將使用默認的字符集。你必須為每個字符類型指定值或使用加號。所以在這個例子中,字符集將是:
abcdefghijklmnopqrstuvwxyz
ABCDEFGHIJKLMNOPQRSTUVWXYZ
123
!@#$%^&*()-_+=~`[]{}|\:;"'<>,.?/
字符串末尾有一個空格
輸出將從 11a! 開始,以 "33z " 結(jié)束。引號顯示了字符串末尾的空格。
14.示例 14
crunch 5 5 -t ddd@@ -o j -p dog cat bird
任何除了 @,%^ 之外的字符都是用于排列的單詞的占位符。@,%^ 符號具有與 -t 相同的功能。
如果你想在輸出中使用 @,%^,你可以使用 -l 選項來指定你希望 crunch 將哪個字符視為字面量。
所以結(jié)果是
birdcatdogaa
birdcatdogab
birdcatdogac
<省略>
dogcatbirdzy
dogcatbirdzz
15.示例 15
crunch 7 7 -t p@ss,%^ -l a@aaaaa
crunch 將把 @ 符號視為字面量字符,而不是用大寫字母替換它。
這將生成
p@ssA0!
p@ssA0@
p@ssA0#
p@ssA0$
<省略>
p@ssZ9
16.示例 16
crunch 5 5 -s @4#S2 -t @%^,2 -e @8 Q2 -l @dddd -b 10KB -o START
crunch 將生成從 @4#S2 開始到 @8 Q2 結(jié)束的 5 個字符的字符串。輸出將被分割成 10KB 大小的文件,文件名基于文件的起始和結(jié)束字符串。
17.示例 17
crunch 5 5 -d 2@ -t @@@%%
crunch 將生成從 aab00 開始到 zzy99 結(jié)束的 5 個字符的字符串。注意 aaa 和 zzz 不會出現(xiàn)。
18.示例 18
crunch 10 10 -t @@@^%%%%^^ -d 2@ -d 3% -b 20mb -o START
crunch 將生成從 aab!0001!! 開始到 zzy 9998 結(jié)束的 10 個字符的字符串。輸出將寫入 20MB 的文件中。
19.示例 19
crunch 8 8 -d 2@
crunch 將生成限制相同數(shù)量的小寫字母為 2 個的 8 個字符。Crunch 將從 aabaabaa 開始,以 zzyzzyzz 結(jié)束。
20.示例 20
crunch 4 4 -f unicode_test.lst japanese -t @@%% -l @xdd
crunch 將從 unicode_test 字符集文件中加載一些日文字符。輸出將從 @日00 開始,以 @語99 結(jié)束。
1.4比較有用的示例
1.生成簡單字典
(1)生成長度為 4 到 6 的所有小寫字母組合。
crunch 4 6 abcdefghijklmnopqrstuvwxyz -o dict.txt 或者
crunch 4 6 -f /usr/share/crunch/charset.lst lalpha -o dict2.txt
執(zhí)行完畢后會顯示字典大小為2132MB,一共有321254128個密碼,接著會顯示生成的進度條,如圖2所示。
圖2 生成6位小寫字母組合
(2)生成長度為 4 到 6 的密碼,使用小寫字母和數(shù)字
crunch 4 6 -f /usr/share/crunch/charset.lst lalpha-numeric
(3)生成長度為 4 到 6 的密碼,使用所有字符(包括符號)
crunch 4 6 -f /usr/share/crunch/charset.lst all
2.特殊用法
(1)生成包含特定字符的密碼
生成長度為 4 到 6 的密碼,包含特定字符 "abc123"
crunch 4 6 abc123
(2)某個字符的所以組合
crunch 4 6 -p admin # 生成abc的組合的字典
(3)生成包含特定字符組合的密碼
生成長度為 4 到 6 的密碼,包含特定字符組合 "abc123" 和 "def456"
crunch 4 6 -p abc123 def456
3.不生成實際字典,只計算字典大小
(1)crunch 1 3 -f /usr/share/crunch/wordlists/english.txt -o /dev/null
1 3 指定最小和最大長度。
-f 指定使用的字典文件(根據(jù)您的需求選擇)。
-o /dev/null 表示不實際輸出文件。
(2)crunch 1 3 -o /dev/null -s
(3)計算包含#字符+大小寫字母+數(shù)字八位字符的字典大小
網(wǎng)上一堆人聲稱該工具非常好用,確實好用,需要自定義規(guī)則,在以前估計算一個不錯的工具,但國人比較聰明,實用,操作簡單。后續(xù)會繼續(xù)對一些密碼工具進行實際使用和測試。喜歡的朋友可以收藏。