简介
crunch是一款运行在linux中的字典生成工具,可以灵活的定制自己的密码字典文件。kali系统中默认安装有crunch工具。
crunch可以按照指定的规则生成密码字典,生成的字典字符序列可以输出到屏幕、文件或重定向到另一个程序中,crunch可以参数可能的组合和排列。并具备如下特征:
- Crunch可以以组合和排列的方式生成字典
- 它可以通过行数或文件大小中止输出
- v3.6开始支持恢复
- v3.6开始支持数字和符号模式
- v3.6开始分别支持大小写字符模式
- 在生成多个文件时添加状态报告
- v3.6开始-l选项支持@,%^
- v3.6开始-d选项可以限制重复的字符,可以通过man文件查看详细信息
- v3.6开始现在支持unicode
crunch其实最厉害的是知道密码的一部分细节后,可以针对性的生成字典,这在渗透中就特别有用,比如知道用户密码的习惯是jonny1998(名字+数字年),这可以通过crunch生成名字+数字年字典,用来进行暴力破解攻击其效果尤佳!
安装
linux下可以添加kali源后直接install crunch
来下载,或者https://sourceforge.net/projects/crunch-wordlist/ 上下载后进行编译下载
使用
syntax
crunch <min-len> <max-len> [<charset string>] [options]
参数解释
min-len
开始的最小长度字符串(这个选项是必须的)max-len
结束的最大长度字符串(这个选项是必须的)charset string
要生成密码包含的字符集(小写字符、大写字符、数字、符号),这个选项是可选的,如果你不写这个选项,将使用默认字符集(默认为小写字符)。
options
大致包括:
-b
按指定的大小单位分割字典文件成若干个指定的大小的字典,避免一个字典文件过大单位有kb, mb, gb, kib, mib, gib,前三个单位是以1000单位计算的,后三个是以1024计算的。注意数字和单位之间没有空格。-b参数必须和-o参数结合使用。
-c
指定要写入字典文件中的行数,单个字典超过指定的行数会被分割成两个或多个字典文件。只在有-o参数时才生效
-d
限制同一字符连续出现的数量-e
定义到那个字符串就停止生成密码比如-e 222222:到222222停止生成密码
-f
调用密码库文件比如/usr/share/crunch/charset.lst
-i
改变输出格式原本输入为aaa,aab,aac,aad再使用了-i之后,就会变成aaa,baa,caa,daa的格式了
-l
与-t搭配使用-l选项的作用就是把想要crunch的@ , % ^ 按正常的字符显示出来(用到了占位符的功能),前提是-l后面的参数跟-t的长度一致
-m
与-p搭配使用-o
保存为-p
定义密码元素-q
读取字典-r
定义从某一个地方重新开始-s
第一个密码,从xxx开始-t
定义输出格式@代表小写字母
,代表大写字母
%代表数字
^代表符号
-z
打包压缩,格式支持 gzip, bzip2, lzma, 7z-u
This option disables the print percentage thread. This should be the last option.
示例
生成最小1位,最大8位,由26个小写字母为元素的所有组合
1
crunch 1 8
生成最小为1,最大为6.由abcdefg为元素的所有组合
1
crunch 1 6 abcdefg
生成最小为1,最大为6.由abcdefg和空格为元素的所有组合
1
crunch 1 6 "abcdefg "
调用密码库 charset.lst,生成最小为1,最大为8,元素为密码库 charset.lst中 mixalpha-numeric-all-space的项目,并保存为 wordlist.txt
1
crunch 1 8 -f charset.lst mixalpha-numeric-all-space -o lybbnwordlist.txt
charset.lst在kali_linux的目录为 /usr/share/crunch/charset.lst, charset.lst中 mixalpha-numeric-all-space项目包含最常见的元素组合(即大小写字母+数字+常见符号)
定义密码格式为“两个小写字母+dog+三个小写字母”,密码为8位,并且第一个密码为cbdogaaa,生成指定的文件名的字典文件
1
crunch 8 8 -f charset.lst mixalpha-numeric-all-space -o wordlist.txt -t @@dog@@@ -s cbdogaaa
格式为“两个小写字母+dog+三个小写字母”,并以cbdogaaa开始(@代表小写字母)
调用密码库charset.lst,生成2位和3位密码
1
crunch 2 3 -f charset.lst ualpha -s BB
元素为密码库charset.lst中ualpha(大写字母)的项;并且以BB开头
生成abc, acb, bac, bca, cab, cba
1
crunch 4 5 -p abc
虽然数字4和5这里没用,但必须有
生成 dog cat bird 三个单词任意组合
1
crunch 4 5 -p dog cat bird
将生成以“dog”“cat”“bird”为元素的所有密码组合:birdcatdog,birddogcat,catbirddog, catdogbird, dogbirdcat, dogcatbird
虽然数字4和5这里没用,但必须有
生成最小为1位,最大为5位元素为所有小写字母的密码字典,其中每一个字典文件包含6000个密码,并将密码文件保存为bz2文件
1
crunch 1 5 -o START -c 6000 -z bzip2
文件名将以 “first_word-last_word.txt.bz2” 保存(比如000-999.txt.bz2)
生成最小为4位,最大为5位元素为所有小写字母的密码字典,并以20M进行分割
1
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
生成3位密码,其中格式为“1个小写字母”+“一个数字”+“一个常见符号”,字母,数字和符号均为指定的字符
1
crunch 3 3 abc + 123 \!@# -t @%^
linux命令行中’ ! ‘是个特殊字符,所以要加反斜杠
生成4位密码,其中格式为“数字+数字+小写字母+常用特殊字符”,字母和常用字符范围都在+号中留空表示 使用默认的字符集,数字范围为 1 2 3 , 字母范围为a b c
1
crunch 4 4 + + 123 + -t %%@^
默认的字符集如下:
abcdefghijklmnopqrstuvwxyz
ABCDEFGHIJKLMNOPQRSTUVWXYZ
123
!@#$%^&*()-_+=~`[]{}|:;”‘<>,.?/生成5个元素组成的密码,其中前三个为 dog cat bird任意组合,后两个为两个小写字母的任意组合
1
crunch 5 5 -t ddd@@ -o j -p dog cat bird
生成7位密码,格式为“字符p@ss”+大写字母+数字+符号
1
crunch 7 7 -t p@ss,%^
可见如果不加-l选项来显示特殊符号,@会变成a
在这里想生成想要的密码,需要使用-l选项
1
crunch 7 7 -t p@ss,%^ -l a@aaaaa
生成5位密码,格式为“小写字母+数字+符号+大写字母+数字”,并以 “@4#S2”开始,出现”小写字母”+”8 Q2”就结束,分割为10k大小
1
crunch 5 5 -s @4#S2 -t @%^,2 -e @8 Q2 -b 10KB -o START
生成5位密码,格式为三个字母+两个数字,并限制小写字母最多连续出现2次
1
crunch 5 5 -d 2@ -t @@@%%
生成10位密码,格式为“三个小写字母+一个符号+四个数字+两个符号”,限制每个小写字母最多连续出现2次,数字最多连续出现3次
1
crunch 10 10 -t @@@^%%%%^^ -d 2@ -d 3% -b 20mb -o START
生成8位密码,每个小写字母最多连续出现两个
1
crunch 8 8 -d 2@