crunch简介
crunch是一款运行在linux中的字典生成工具,可以灵活的定制自己的密码字典文件。kali系统中默认安装有crunch工具
crunch安装
下载地址
https://sourceforge.net/projects/crunch-wordlist/
安装方法
1. tar zxvf crunch-3.6.tgz
2.cd crunch-3.6
3.gcc -Wall -lm -pthread -std=c99 -m64 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 crunch.c -o crunch -lm
4.make install
进入crunch的安装目录下面可以看到里面有一个charset.lst文件,里面定义了一些名词 用于简写用于制作字典的字符 如:
numeric 表示0123456789
Lalpha表示26位小写字母
Ualpha表示26为大写字母
crunch使用语法及参数
crunch [] [options]
参数解释
min-len 开始的最小长度字符串(这个选项是必须的)
max-len 结束的最大长度字符串(这个选项是必须的)
charset string 要生成密码包含的字符集(小写字符、大写字符、数字、符号),这个选项是可选的,如果你不写这个选项,将使用默认字符集(默认为小写字符)。如果你想生成的密码包含空格字符,你可以使用来代替,
如:123abc
你可以把带有空格的字符集放在双引号“”中,如“123abc ”
OPTIONS
-b 按指定的大小单位分割字典文件成若干个指定的大小的字典,避免一个字典文件过大,如:
./crunch 4 5 -b 20mib -o START 按每个文件20mib分割字典文件。
说明:单位有 kb, mb, gb, kib, mib, gib ,前三个单位是以1000单位计算的,后三个是以1024计算的。
注意数字和单位之间没有空格,例如:500mb 是正确的, 500 mb 格式是不对的(中间有空格),-b参数必须和-o START结合使用
-c 指定要写入字典文件中的行数,只在有 -o START参数时才生效,单个字典超过指定的行数会被分割成两个或多个字典文件。例如: -c 5000
-d 限制同一字符连续出现的数量, -d 2 表示限制一个字符最多连续出现2次如 aabd,ccda。aaab就表示超过了2个字符连续的限制了。
-e 定义到那个字符串就停止生成密码,例如: -e 999999 就表示在生成密码到99999时就停止生成密码
-f 调用密码库文件,例如:/usr/share/crunch/charset.lst
-i 改变输出格式,例如: 原本输入为aaa,aab,aac,aad再使用了-i之后,就会变成aaa,baa,caa,daa的格式了
-l When you use the -t option this option tells crunch which symbols should be treated as literals. This will allow you to use the placeholders as letters in the pattern. The -l option should be the same length as the -t option. See example 15.
-m 与-p搭配使用
-o 输出生成的密码到指定的文件,如: -o lybbnwordlist.txt
-p 定义密码元素
-q 读取密码元素
-r 定义从某一个地方重新开始
-s 第一个密码,从自己定义的密码xxx开始
-t 定义密码输出格式
1.@代表插入小写字母
2.,代表插入大写字母
3. %代表插入数字
4.^代表插入符号
-u The -u option disables the printpercentage thread. This should be the last option.
-z 压缩生成的字典文件,有效的参数是gzip, bzip2, lzma, and 7z,其中gzip压缩最快,bzip2压缩速度比gzip慢单压缩效率比gzip好,7z压缩速度最慢,但是压缩效率最高。
crunch案例讲解
(1)生成一个字典文件(小写字母),密码长度从1到3位
crunch 1 3
(2)生成一个包含字符集abcdefg,密码长度是1到6位的字典文件
crunch 1 6 abcdefg
将会使用字符集 abcdefg ,并且以 a 开始以 gggggg 结束的字典文件
(3)生成一个包含字符集abcdefg和空格,密码长度是1到6位的字典文件
crunch 1 6 abcdefg
将会使用字符集 abcdefg 包含空格 以a 开始 并且以6个空格结束的字典文件,abcdefg也可以写成 "abcdefg "形式
(4)生成一个指定文件名并且包含大小写字母、数字、常见字符的密码文件,密码长度为1到8位
crunch 1 8 -f charset.lst mixalpha-numeric-all-space -o lybbnwordlist.txt
将会调用密码库 charset.lst, 生成最小为1,最大为8,元素为密码库 charset.lst中 mixalpha-numeric-all-space的项目,并保存为 lybbnwordlist.txt;其中 charset.lst在kali_linux的目录为 /usr/share/crunch/charset.lst, charset.lst中 mixalpha-numeric-all-space项目包含最常见的元素组合(即大小写字母+数字+常见符号)
(5)定义密码格式为“两个小写字母+dog+三个小写字母”,密码为8位,并且第一个密码为cbdogaaa,生成指定的文件名的字典文件
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开始(@代表小写字母)
密码以 cbdogaaa 开始 以 3个空格dog3个空格 结束
(6)调用密码库charset.lst,生成2位和3位密码;其中元素为密码库charset.lst中ualpha(大写字母)的项;并且以BB开头
crunch 2 3 -f charset.lst ualpha -s BB
将会以BB开头ZZZ结尾
(7)生成abc, acb, bac, bca, cab, cba
crunch 4 5 -p abc
这里注意,虽然4 和 5 密码长度是没用的无效的,但是必须要写,-p是定义密码的元素
(8)生成 dog cat bird 三个单词任意组合
crunch 4 5 -p dog cat bird
合:birdcatdog,birddogcat,catbirddog, catdogbird, dogbirdcat, dogcatbird
这里注意,虽然4 和 5 密码长度是没用的无效的,但是必须要写
(9)生成1到5为字典文件并压缩成bzip2格式的文件,并且每个字典有6000个密码
crunch 1 5 -o START -c 6000 -z bzip2
crunch将会以 bzip2压缩字典, 每个字典有6000个密码,压缩成的文件名的格式是 first_word-last_word.txt.bz2,如:0_5.txt.bz2
如下是使用不同的压缩算法所消耗的时间
1. # time ./crunch 1 4 -o START -c 6000 -z gzip
2.r eal 0m2.729s
3. user 0m2.216s
4. sys 0m0.360s
5. # time ./crunch 1 4 -o START -c 6000 -z bzip2
6. real 0m3.414s
7. user 0m2.620s
8. sys 0m0.580s
9. # time ./crunch 1 4 -o START -c 6000 -z lzma
10. real 0m43.060s
11. user 0m9.965s
12. sys 0m32.634s
13. size filename
14. 30K aaaa-aiwt.txt
15. 12K aaaa-aiwt.txt.gz
16. 3.8K aaaa-aiwt.txt.bz2
17. 1.1K aaaa-aiwt.txt.lzma
(10)生成最小为4位,最大为5位元素为所有小写字母的密码字典,并以20M进行分割
crunch 4 5 -b 20mib -o START
将会生成4个文件: aaaa-gvfed.txt, gvfee-ombqy.txt, ombqz-wcydt.txt, wcydu-zzzzz.txt, 前三个文件是 20MBs (real power of 2 MegaBytes) 最后一个文件是 11MB.
(11)生成3位密码,其中格式为“1个小写字母”+“一个数字”+“一个常见符号”,字母,数字和符号均为指定的字符
crunch 3 3 abc + 123 !@# -t @%^
将以a1! 开始,以 c3# 结束
(12)生成3位密码,其中第一位由“a,b,c”中的一个;第二位为“1,2,3”中的一个;第三位为“!,@,#”中的一个,格式为“1个特殊字符+1个数字+1个小写字母”
crunch 3 3 abc + 123 !@# -t ^%@
将以 !1a 开始,以 #3c 结束
(13)生成4位密码,其中格式为“数字+数字+小写字母+常用特殊字符”,字母和常用字符范围都在+号中留空表示 使用默认的字符集,数字范围为 1 2 3 , 字母范围为a b c 比如!1c @3b @2a
crunch 4 4 + + 123 + -t %%@^
默认的字符集如下:
abcdefghijklmnopqrstuvwxyz
ABCDEFGHIJKLMNOPQRSTUVWXYZ
123
!@#$%^&*()-_+=~`[]{}|:;"'<>,.?/
there is a space at the end of the above string
将以 11a! 开始,以 "33z ",注意33z后面有个空格
(14)生成5个元素组成的密码,其中前三个为 dog cat bird任意组合,后两个为两个小写字母的任意组合
crunch 5 5 -t ddd@@ -o j -p dog cat bird
结果如下:
birdcatdogaa
birdcatdogab
birdcatdogac
dogcatbirdzy
dogcatbirdzz
(15)生成7位密码,格式为字符串“p@ss”+大写字母+数字+符号
crunch 7 7 -t p@ss,%^
可见如果不加-l选项来显示特殊符号的好,@会变成a
crunch 7 7 -t p@ss,%^ -l a@aaaaa
这样@符号就可以正常显示了,-l选项的作用就是把想要crunch的@,%等按正常的字符显示出来(用到了占位符的功能),前提是-l后面的参数跟-t的长度一致。
(16)生成5位密码,格式为“小写字母+数字+符号+大写字母+数字”,并以 @4#S2开始,出现小写字母+8 Q2就结束,分割为10k大小
crunch 5 5 -s @4#S2 -t @%^,2 -e @8 Q2 -b 10KB -o START
将以 @4#S2开始,以 @8 Q2 结束
(17)生成5位密码,格式为“三个字母+两个数字”,并限制小写字母最多连续出现2次。
crunch 5 5 -d 2@ -t @@@%%
将以aab00 开始,以 zzy99 结束
(18)生成10位密码,格式为“三个小写字母+一个符号+四个数字+两个符号”,限制每个小写字母最多连续出现2次,数字最多连续出现3次
crunch 10 10 -t @@@^%%%%^^ -d 2@ -d 3% -b 20mb -o START
将以aab!0001!! 开始,以 zzy 9998 结束,每个文件20mb
(19)生成8位密码,每个小写字母最多连续出现两个(@表示小写字母)
crunch 8 8 -d 2@