密码字典生成工具:crunch

        现在网络安全的设备层出不穷,各种网络安全设备不管是对于内网还是对于外网的防护达到了细致入微。社会工程学作为渗透中非常重要的一环,有着非常大的威力,社会工程学最重要的就是密码的暴力破解,暴力破解最重要的就是密码字典。字典的质量直接影响到最终的暴力破解速度,对整个渗透工作起着十分重要的作用。

        这里就来介绍一款按照指定规律生成具有针对性字典的工具——crunch

crunch简介

        crunch是一种创建密码字典工具,按照指定的规则生成密码字典,可以灵活地制定自己的字典文件。使用crunch工具生成的密码可以输出到屏幕,保存到文件、或另一个程序。

crunch安装

        现在的kali系统是默认自带crunch的。如果你使用其他系统,可以通过从github的这个地址下载源码:

https://github.com/crunchsec/crunch

crunch参数

        一般拿到这种命令行的工具,都会用参数-h看以下帮助说明:

crunch -h

         可以看到基本的使用语法:

# min:设定最小字符长度
# max:设定最大字符长度
crunch   [options]

        如果要看完整的说明文档,要用man命令:

密码字典生成工具:crunch_第1张图片 man crunch

         最简单的使用就是生成一串固定英文字符跟一串固定数字:

密码字典生成工具:crunch_第2张图片 crunch 14 14 -t zhangsan%%%%%% -o aa.txt

         其中-t参数用于指定输出完整字符串的格式,后面跟的一些固定的字符和有特殊意义的字符,其中有特殊意义的字符对应具体用处如下:

@ 代表小写字母
, 代表大写字母
% 代表数字
^ 代表特殊字符

        除了这些有特殊意义的字符,还可以直接指定要使用的字符,比如这样:

密码字典生成工具:crunch_第3张图片 crunch 1 2 abc

         在设定长度后直接跟一个字符串,输出的字典中的字符串都会用命令中传入的字符进行构造。

        -o参数用于指定将生成的字符串存入到特定的文档。可以直接传文件名,表示输出文件的名称。也可以跟一些参数,让工具自动生成文件名,比如:

密码字典生成工具:crunch_第4张图片 crunch 1 2 abc -o START

         遇到字典特别大,需要限制每个字典文件大小的时候,可以使用-b参数:

密码字典生成工具:crunch_第5张图片 crunch 14 14 -t zhangsan%%%%%% -o START -b 5mb

         除了指定输出字典文件大小外,也可以指定文件中字符串的个数(行数),使用-c参数:

密码字典生成工具:crunch_第6张图片 crunch 14 14 -t zhangsan%%%%%% -o START -c 400000

         当确认字典中的字符串不存在两个连续字符连续的时候(例如是5位的两个中文拼音,中文拼音不会存在两个相同的拼音字符),可以使用-d参数,表示限制相同字符出现的次数,如果传1就表示不会出现连续两个相同的字符:

密码字典生成工具:crunch_第7张图片 crunch 5 5 -t @@@@@ -o START -d 1

         kali提供了一些常用的字符集用于制作字典,字符集文件:

密码字典生成工具:crunch_第8张图片 cat /usr/share/crunch/charset.lst

         crunch可以通过-f参数使用这个字符集:

密码字典生成工具:crunch_第9张图片 crunch 5 5 -t @@@@@ -o START -d 1 -f /usr/share/crunch/charset.lst hex-lower

         -f参数后不仅要传字符集文件,还要传文件中具体的字符集名称。

        当你已经知道目标字符串的组成内容,但是不知道排列顺序时,可以使用-p参数,它的作用是通过指定的字符串,输出所有可能的组合方式:

密码字典生成工具:crunch_第10张图片 crunch 8 8 -p 12345@cy > aa.txt

         需要注意两点,当使用-p参数的时候,入参中的最小、最大字符长度其实是不会生效的,但是必须传;另一个需要注意的是,-p参数必须放在命令行的最后。

        -p参数还有种用法,将特定字符串作为也给整体进行组合:

密码字典生成工具:crunch_第11张图片 crunch 1 1 -p zhang san 123 > aa.txt

         crunch的组合规律其实是能猜测出来的,当你觉得crunch输出的字典在某一个字符串前面的内容是有问题的,不想让这些有问题的字符串出现在字典中,可以使用-s参数,比如这样:

密码字典生成工具:crunch_第12张图片 crunch 8 8 12345@cy -s 1212121c -o aa.txt

         -s参数和-p参数两者是互斥的,虽然同时使用也不会报错,但是-s参数的功能会失效。

        当目标字符串其中的几个字符串是有特殊意义的,肯定是组合在一起使用的,可以使用-q参数,读取一个文件,里面的每一行都会作为一个整体进行组合,例如这样:

密码字典生成工具:crunch_第13张图片 crunch 1 1 -q pass.txt > aa.txt

         如果按照设定的规律生成的字典文件非常大,除了前面的-b参数,将一个字典文件拆分成多个文件,还可以使用-z参数,将字典文件压缩,支持对压缩方式有以下几种:

  • gzip
  • bzip2
  • lzma
  • 7z

        其中7z的压缩比例是最大的。

密码字典生成工具:crunch_第14张图片 crunch 1 1 -q pass.txt -o aa.txt -z 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的使用过程中除了几个互斥的参数,其他参数都是可以组合使用的。根据收集到的信息,制定合理的字典生成规则,最终得到的字典文件能够帮助我们更快、更高效地达成目的。

你可能感兴趣的:(安全,测试工具,安全性测试)