密码字典生成工具:crunch
Posted 会测试的鲸鱼
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了密码字典生成工具:crunch相关的知识,希望对你有一定的参考价值。
现在网络安全的设备层出不穷,各种网络安全设备不管是对于内网还是对于外网的防护达到了细致入微。社会工程学作为渗透中非常重要的一环,有着非常大的威力,社会工程学最重要的就是密码的暴力破解,暴力破解最重要的就是密码字典。字典的质量直接影响到最终的暴力破解速度,对整个渗透工作起着十分重要的作用。
这里就来介绍一款按照指定规律生成具有针对性字典的工具——crunch
crunch简介
crunch是一种创建密码字典工具,按照指定的规则生成密码字典,可以灵活地制定自己的字典文件。使用crunch工具生成的密码可以输出到屏幕,保存到文件、或另一个程序。
crunch安装
现在的kali系统是默认自带crunch的。如果你使用其他系统,可以通过从github的这个地址下载源码:
https://github.com/crunchsec/crunch
crunch参数
一般拿到这种命令行的工具,都会用参数-h看以下帮助说明:
可以看到基本的使用语法:
# min:设定最小字符长度
# max:设定最大字符长度
crunch <min> <max> [options]
如果要看完整的说明文档,要用man命令:
最简单的使用就是生成一串固定英文字符跟一串固定数字:
其中-t参数用于指定输出完整字符串的格式,后面跟的一些固定的字符和有特殊意义的字符,其中有特殊意义的字符对应具体用处如下:
@ 代表小写字母
, 代表大写字母
% 代表数字
^ 代表特殊字符
除了这些有特殊意义的字符,还可以直接指定要使用的字符,比如这样:
在设定长度后直接跟一个字符串,输出的字典中的字符串都会用命令中传入的字符进行构造。
-o参数用于指定将生成的字符串存入到特定的文档。可以直接传文件名,表示输出文件的名称。也可以跟一些参数,让工具自动生成文件名,比如:
遇到字典特别大,需要限制每个字典文件大小的时候,可以使用-b参数:
除了指定输出字典文件大小外,也可以指定文件中字符串的个数(行数),使用-c参数:
当确认字典中的字符串不存在两个连续字符连续的时候(例如是5位的两个中文拼音,中文拼音不会存在两个相同的拼音字符),可以使用-d参数,表示限制相同字符出现的次数,如果传1就表示不会出现连续两个相同的字符:
kali提供了一些常用的字符集用于制作字典,字符集文件:
crunch可以通过-f参数使用这个字符集:
-f参数后不仅要传字符集文件,还要传文件中具体的字符集名称。
当你已经知道目标字符串的组成内容,但是不知道排列顺序时,可以使用-p参数,它的作用是通过指定的字符串,输出所有可能的组合方式:
需要注意两点,当使用-p参数的时候,入参中的最小、最大字符长度其实是不会生效的,但是必须传;另一个需要注意的是,-p参数必须放在命令行的最后。
-p参数还有种用法,将特定字符串作为也给整体进行组合:
crunch的组合规律其实是能猜测出来的,当你觉得crunch输出的字典在某一个字符串前面的内容是有问题的,不想让这些有问题的字符串出现在字典中,可以使用-s参数,比如这样:
-s参数和-p参数两者是互斥的,虽然同时使用也不会报错,但是-s参数的功能会失效。
当目标字符串其中的几个字符串是有特殊意义的,肯定是组合在一起使用的,可以使用-q参数,读取一个文件,里面的每一行都会作为一个整体进行组合,例如这样:
如果按照设定的规律生成的字典文件非常大,除了前面的-b参数,将一个字典文件拆分成多个文件,还可以使用-z参数,将字典文件压缩,支持对压缩方式有以下几种:
- gzip
- bzip2
- lzma
- 7z
其中7z的压缩比例是最大的。
最后再罗列一些各个参数:
-b:指定文件输出的大小,避免字典文件过大
-c:指定文件输出的行数,即包含密码的个数
-d:限制相同元素出现的次数
-e:定义停止字符,即到该字符串就停止生成
-f:调用库文件(/etc/share/crunch/charset.lst)
-i:改变输出格式,即aaa,aab -> aaa,baa
-I:通常与-t联合使用,表明该字符为实义字符
-m:通常与-p搭配
-o:将密码保存到指定文件
-p:指定元素以组合的方式进行
-q:读取密码文件,即读取pass.txt
-r:定义重某一字符串重新开始
-s:指定一个开始的字符,即从自己定义的密码xxxx开始
-t:指定密码输出的格式
-u:禁止打印百分比(必须为最后一个选项)
-z:压缩生成的字典文件,支持gzip,bzip2,lzma,7z
总结
其实可以生成字典的工具很多,就连python都可以自己手写脚本来生成字典。但是kali中有预装的工具,为什么不用呢,而且crunch的使用也的确非常方便。
crunch的使用过程中除了几个互斥的参数,其他参数都是可以组合使用的。根据收集到的信息,制定合理的字典生成规则,最终得到的字典文件能够帮助我们更快、更高效地达成目的。
linux字典生成工具crunch
安装
- tar zxvf crunch-3.6.tgz
- cd crunch-3.6
- gcc -Wall -lm -pthread -std=c99 -m64 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 crunch.c -o crunch -lm
- make install
使用
- crunch 1 8
- #生成最小1位,最大8位,由26个小写字母为元素的所有组合
- crunch 1 6 abcdefg
- #生成 最小为1,最大为6.由abcdefg为元素的所有组合
- crunch 1 6 abcdefg\
- #生成 最小为1,最大为6.由abcdefg和空格为元素的所有组合(/代表空格)
- 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项目包含最常见的元素组合(即大小写字母+数字+常见符号)
- 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开始枚举(@代表小写字母)
- crunch 2 3 -f charset.lst ualpha -s BB
- #调用密码库charset.lst,生成2位和3位密码;其中元素为密码库charset.lst中ualpha的项;并且以BB开头
- crunch 4 5 -p abc
- #crunch将会生成abc, acb, bac, bca, cab, cba,虽然数字4和5这里没用,但必须有
- crunch 4 5 -p dog cat bird
- #crunch将生成以“dog”“cat”“bird”为元素的所有密码组合:birdcatdog,birddogcat,catbirddog, catdogbird, dogbirdcat, dogcatbird
- crunch 1 5 -o START -c 6000 -z bzip2
- # 生成最小为1位,最大为5位元素为所有小写字母的密码字典,其中每一个字典文件包含6000个密码,并将密码文件保存为bz2文件,文件名将以 "第一个密码" + " - " + "最后一个密码" + " .txt.bz2 " 保存(比如000-999.txt.bz2);下面是生成几种格式的压缩文件所用的时间和体积大小对比:
- 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)
- crunch 4 4 + + 123 + -t %%@^
- #生成4位密码,其中格式为“两个数字”+“一个小写字母”+“常见符号”(其中数字这里被指定只能为123组成的所有2位数字组合)。比如12f# 32j^ 13t$ ......
- crunch 3 3 abc + 123 @#! -t @%^
- #生成3位密码,其中第一位由“a,b,c”中的一个;第二位为“1,2,3”中的一个;第三位为“!,@,#”中的一个。比如1a! 2a# [email protected] ......
- crunch 3 3 abc + 123 @#! -t ^%@
- #生成3位密码,其中格式为“字符+数字+字母”,这里字符范围为!@# ,数字范围为 1 2 3 , 字母范围为a b c比如!1c @3b @2a ......
- crunch 5 5 -t [email protected]@ -p dog cat bird
- #生成5个元素组成的密码,其中前三个为 dog cat bird任意组合,后两个为两个小写字母的任意组合。比如birddogcatuz catdogbirdab birdcatdogff ......
- crunch 7 7 -t p@ss,%^ -l a@aaaaa
- #生成7位密码,格式为“字符[email protected]”+大写字母+数字+符号 比如 [email protected]> ......
- crunch 5 5 -s @4#S2 -t @%^,% -e @8 Q2 -l @dddd -b 10KB -o START
- #生成5位密码,格式为小写字母+数字+符号+大写字母+数字,并以 @4#S2开始,分割为10k大小。。。
- crunch 5 5 -d [email protected] -t @@@%%
- #生成5位密码,格式为三个字母+两个数字,并限制每个密码最少出现2种字母
- crunch 10 10 -t @@@^%%%%^^ -d [email protected] -d 3% -b 20mb -o START
- #生成10位密码,格式为三个小写字母+一个符号+四个数字+两个符号,限制每个密码至少2种字母和至少3种数字
- crunch 8 8 -d [email protected]
- #生成8位密码,每个密码至少出现两种字母
- crunch 4 4 -f unicode_test.lst the-greeks -t @@%% -l @xdd
- #调用密码库 unicode_test.lst中的 the-greeks项目字符,生成4位密码,其中格式为两小写字母+两数字,同样kali_linux中 unicode_test.lst 在/usr/share/crunch目录
- -b #体积大小,比如后跟20mib
- -c #密码个数(行数),比如8000
- -d #限制出现相同元素的个数(至少出现元素个数),-d 3就不会出现zzf ffffgggg之类的
- -e #定义停止生成密码 ,比如-e 222222:到222222停止生成密码
- -f #调用密码库文件,比如/usr/share/crunch/charset.lst
- -i #改变输出格式
- -l #与-t搭配使用
- -m #与-p搭配使用
- -o #保存为
- -p #定义密码元素
- -q #读取字典
- -r #定义从某一个地方重新开始
- -s #第一个密码,从xxx开始
- -t #定义输出格式
- @代表小写字母
- ,代表大写字母
- %代表数字
- ^代表符号
- -z #打包压缩,格式支持 gzip, bzip2, lzma, 7z
以上是关于密码字典生成工具:crunch的主要内容,如果未能解决你的问题,请参考以下文章