1.1简介
1.Crunch简介
Crunch是一种创建密码字典工具,按照指定的规则生成密码字典,可以灵活的制定自己的字典文件。使用Crunch工具生成的密码可以输出到屏幕,保存到文件、或另一个程序。知道密码的一部分细节后,可以针对性的生成字典,目前版本3.6。其开源代码地址:
https://github.com/jaalto/external-sf--crunch-wordlist
https://github.com/crunchsec/crunch
2.特点
- Crunch可以以组合和排列的方式生成字典
- 它可以通过行数或文件大小中止输出
- 支持恢复
- 支持数字和符号模式
- 分别支持大小写字符模式
- 在生成多个文件时添加状态报告
- 新的-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版本编译,需要安装相应的组件,否则编译会出错,如下图所示。
图 编译出错
(2)分别安装相应的库文件
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,输出文件将以起始字母-结束字母的格式命名,例如:./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 是不正确的。
-c number 指定写入输出文件的行数,只有在使用 -o START 时才有效,例如:60,输出文件将以起始字母-结束字母的格式命名,例如:./crunch 1 1 -f /pentest/password/crunch/charset.lst mixalpha-numeric-all-space -o START -c 60 将生成2个文件:a-7.txt 和 8-\ .txt。第二个文件名中的斜杠是因为结束字符是空格,ls 必须转义它才能打印出来。当指定文件名时,确实需要输入 \,因为最后一个字符是空格。
-d numbersymbol 限制重复字符的数量。-d 2@ 会将小写字母限制为输出类似 aab 和 aac。aaa 不会被生成,因为这是3个连续的 a 字母。格式是数字后跟符号,其中数字是最大连续字符数,符号是你想要限制的字符集的符号,例如 @,%^
-e string 指定 crunch 应该提前停止的时间点。
-f /path/to/charset.lst charset-name 指定一个来自 charset.lst 的字符集。
-i 反转输出,所以不是 aaa,aab,aac,aad, 等等,而是得到aaa,baa,caa,daa,aba,bba, 等等。
-l 当使用 -t 选项时,此选项告诉 crunch 哪些符号应被视为字面量。这允许你在模式中将占位符用作字母。-l 选项的长度应该与 -t 选项相同。参见示例15。
-m 已合并到 -p 中。请改用 -p。
-o wordlist.txt 指定要写入输出的文件,例如:wordlist.txt
-p charset 或 -p word1 word2 ... 告诉 crunch 生成没有重复字符的单词。默认情况下,crunch 会生成一个字符集中的字符数量的幂次方(#of_chars_in_charset ^ max_length)大小的单词表。此选项将生成字符集中的字符数量的阶乘(#of_chars_in_charset!)。! 表示阶乘。例如,如果字符集是 abc,最大长度是 4,crunch 默认会生成 3^4 = 81 个单词。此选项将生成 3! = 3x2x1 = 6 个单词(abc, acb, bac, bca, cab, cba)。这必须是最后一个选项!此选项不能与 -s 一起使用,并且它忽略了最小和最大长度,但你仍然必须指定两个数字。
-q filename.txt 告诉 crunch 读取 filename.txt 并排列读取的内容。这类似于 -p 选项,但它从 filename.txt 获取输入。
-r 告诉 crunch 从中断的地方继续生成单词。-r 仅在使用 -o 时有效。你必须使用与最初生成单词时相同的命令。唯一的例外是 -s 选项。如果你最初的命令使用了 -s 选项,在恢复会话之前你必须移除它。只需在原始命令的末尾添加 -r 即可。
-s startblock 指定一个起始字符串,例如:03god22fs
-t @,%^ 指定一个模式,例如:@@god@@@@,其中只有 @, , %, 和 ^ 会发生变化。
@ 将插入小写字母
, 将插入大写字母
% 将插入数字
^ 将插入符号
-u -u 选项禁用打印百分比线程。这应该是最后一个选项。
-z gzip, bzip2, lzma, 和 7z 压缩 -o 选项的输出。有效的参数是 gzip, bzip2, lzma, 和 7z。gzip 是最快的,但压缩率最低。bzip2 比 gzip 稍慢,但有更好的压缩效果。7z 最慢,但有最好的压缩效果。
1.3默认示例
crunch man命令后可以获取crunch中提供的20个使用实例。
1.示例 1
crunch 1 8
crunch 将显示一个从 a 开始到 zzzzzzzz 结束的单词列表。
2.示例 2
crunch 1 6 abcdefg
crunch 将使用字符集 abcdefg 显示一个从 a 开始到 gggggg 结束的单词列表。
3.示例 3
crunch 1 6 abcdefg\
字符串末尾有一个空格。为了使 crunch 使用这个空格,你需要使用 \ 字符来转义它。在这个例子中,你也可以将字母放在引号里,而不需要 \,即 "abcdefg "。crunch 将使用字符集 abcdefg 生成一个从 a 开始到 (6 个空格) 结束的单词列表。
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 开始,以 " " 结束。
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 " 结束。
6. 示例 6
crunch 2 3 -f charset.lst ualpha -s BB
crunch 将从 BB 开始生成单词列表,以 ZZZ 结束。这在你需要中途停止生成单词列表时很有用。只需执行 `tail wordlist.txt` 并将 -s 参数设置为序列中的下一个单词。开始前确保重命名原始单词列表,因为 crunch 会覆盖现有的单词列表。
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 的幂次兆字节),最后一个文件是 11MB。
11.示例 11
crunch 3 3 abc + 123 !@# -t @%^
将生成一个 3 个字符长的单词,第一个字符是一个字母,第二个字符是一个数字,第三个字符是一个符号。你指定想要使用的字符的顺序很重要。你必须按小写字母、大写字母、数字和符号的顺序指定。如果你不打算使用特定的字符集,你可以使用加号作为占位符。如上所示,我未使用大写字母集,因此我使用了加号占位符。这将从 a1! 开始,以 c3# 结束。
12.示例 12
crunch 3 3 abc + 123 !@# -t ^%@
将生成从 !1a 开始到 #3c 结束的 3 个字符的单词。
13. 示例 13
crunch 4 4 + + 123 + -t %%@^
加号 (+) 是一个占位符,因此你可以为字符类型指定字符集。当 crunch 在命令行中遇到加号时,它将使用默认的字符集。你必须为每个字符类型指定值或使用加号。所以在这个例子中,字符集将是:
abcdefghijklmnopqrstuvwxyz
ABCDEFGHIJKLMNOPQRSTUVWXYZ
123
!@#$%^&*()-_+=~`[]{}|\:;"'<>,.?/
字符串末尾有一个空格
输出将从 11a! 开始,以 "33z " 结束。引号显示了字符串末尾的空格。
14.示例 14
crunch 5 5 -t ddd@@ -o j -p dog cat bird
任何除了 @,%^ 之外的字符都是用于排列的单词的占位符。@,%^ 符号具有与 -t 相同的功能。
如果你想在输出中使用 @,%^,你可以使用 -l 选项来指定你希望 crunch 将哪个字符视为字面量。
所以结果是
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 结束的 5 个字符的字符串。输出将被分割成 10KB 大小的文件,文件名基于文件的起始和结束字符串。
17.示例 17
crunch 5 5 -d 2@ -t @@@%%
crunch 将生成从 aab00 开始到 zzy99 结束的 5 个字符的字符串。注意 aaa 和 zzz 不会出现。
18.示例 18
crunch 10 10 -t @@@^%%%%^^ -d 2@ -d 3% -b 20mb -o START
crunch 将生成从 aab!0001!! 开始到 zzy 9998 结束的 10 个字符的字符串。输出将写入 20MB 的文件中。
19.示例 19
crunch 8 8 -d 2@
crunch 将生成限制相同数量的小写字母为 2 个的 8 个字符。Crunch 将从 aabaabaa 开始,以 zzyzzyzz 结束。
20.示例 20
crunch 4 4 -f unicode_test.lst japanese -t @@%% -l @xdd
crunch 将从 unicode_test 字符集文件中加载一些日文字符。输出将从 @日00 开始,以 @語99 结束。
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
执行完毕后会显示字典大小为2132MB,一共有321254128个密码,接着会显示生成的进度条,如图2所示。
图2 生成6位小写字母组合
(2)生成长度为 4 到 6 的密码,使用小写字母和数字
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 指定使用的字典文件(根据您的需求选择)。
-o /dev/null 表示不实际输出文件。
(2)crunch 1 3 -o /dev/null -s
(3)计算包含#字符+大小写字母+数字八位字符的字典大小
网上一堆人声称该工具非常好用,确实好用,需要自定义规则,在以前估计算一个不错的工具,但国人比较聪明,实用,操作简单。后续会继续对一些密码工具进行实际使用和测试。喜欢的朋友可以收藏。