linux下用crunch工具生成密码
crunch是一款linux下的压缩后仅仅38k的小程序,crunch程序在2004年及以前由email为的作者编写mimayin@aciiid.ath.cx,后续版本由bofh28@gmail.com负责维护,因此在gtihub上有两个版本:
https://github.com/crunchsec/crunch
https://github.com/jaalto/external-sf--crunch-wordlist
crunch默认安装在kali环境中(05-Password
Attacks),Crunch可以按照指定的规则生成密码字典,生成的字典字符序列可以输出到屏幕、文件或重定向到另一个程序中,Crunch可以参数可能的组合和排列,其最新版本为3.6。并具备如下特征:
lCrunch可以以组合和排列的方式生成字典
l它可以通过行数或文件大小中止输出
l现在支持恢复
l现在支持数字和符号模式
l现在分别支持大小写字符模式
l在生成多个文件时添加状态报告
l新的-l选项支持@,%^
l新的-d选项可以限制重复的字符,可以通过man文件查看详细信息
l现在支持unicode
Crunch其实最厉害的是知道密码的一部分细节后,可以针对性的生成字典,这在渗透中就特别有用,比如知道用户密码的习惯是taobao2013(taobao+数字年),这可以通过Crunch生成taobao+所有的年份字典,用来进行暴力破解攻击其效果尤佳!
1.1crunch下载及编译
可以手动下载最新3.6版本:https://sourceforge.net/projects/crunch-wordlist/
也可以自行以下命令进行下载、解压和编译
wget https://sourceforge.net/projects/crunch-wordlist/files/crunch-wordlist/crunch-3.6.tgz
tar -zxvf
crunch-3.6.tgz
cd crunch-3.6/
make
手动编译会比kali自动安装的程序多一个unicode_test.lst,可以将手动编译中的该文件复制到kali中的/usr/share/crunch/文件夹下。
cp
unicode_test.lst /usr/share/crunch/
1.2crunch命令格式
crunch [][options]
参数:
min-lencrunch要开始的最小长度字符串。即使不使用参数的值,也需要此选项
max-lencrunch要开始的最大长度字符串。即使不使用参数的值,也需要此选项
charset string在命令行使用crunch你可能必须指定字符集设置,否则将使用缺省的字符集设置。缺省的设置为小写字符集,大写字符集,数字和特殊字符(符号),如果不按照这个顺序,你将得到自己指定结果。必须指定字符类型或加号的值。注意:如果你想在你的字符集中包含空格特征,你必须使用“\”字符或用引号括起来你的字符集,例如"abc "。见示例3,11,12,和13。如果有“+”指定,则后续格式中出现的类型从其中取值!
选项
(1)-b数字[类型]指定输出文件的大小,仅仅使用“-o”选项时生效;例如60mb,例如格式:“./crunch45 -b 20mib -o START”或者“crunch45 -b20mib -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”则不正确,执行命令后如图1所示。aaaa-gvfed.txt,gvfee-ombqy.txt,ombqz-wcydt.txt大小将是20M,以1024为基数,也即20480kb,一般以MIB为参数。
“crunch45 -b20MB -o START”和“crunch45 -b 20MIB -o START”命令生成文件仅仅是以文件大小有区别,查看其生成的文件大小:
-rw-r--r--1 root root 20000000 Jun3 03:19aaaa-glzql.txt//20MB
-rw-r--r--1 root root 20971520 Jun3 03:26aaaa-gvfed.txt //20MIB
-rw-r--r--1 root root 19999998 Jun3 03:19glzqm-ntqpo.txt //20MB
-rw-r--r--1 root root 20971518 Jun3 03:26gvfee-ombqy.txt //20MIB
-rw-r--r--1 root root 19999998 Jun3 03:19ntqpp-vbhor.txt //20MB
-rw-r--r--1 root root 20971518 Jun3 03:26ombqz-wcydt.txt //20MIB
-rw-r--r--1 root root 13573140 Jun3 03:19vbhos-zzzzz.txt //20MIB
-rw-r--r--1 root root 10658580 Jun3 03:26wcydu-zzzzz.txt //20MB
(2)-c数字指定写入输出文件的行数,也即包含密码的个数,例如使用字符规则mixalpha-numeric-all-space,生成最小和最大字符串为1的且每一个文件保存60个字符串的密码字典:
crunch 1 1 -f/usr/share/crunch/charset.lstmixalpha-numeric-all-space -oSTART-c60
(3)-d数字符号,限制出现相同元素的个数(至少出现元素个数),“-d 2@”限制小写字母输出像aab和aac,aaa不会产生,因为这是连续3个字母,格式是数字+符号,数字是连续字母出现的次数,符号是限制字符串的字符,例如@,%^(“@”代表小写字母,“,”代表大写字符,“%”代表数字,“^”代表特殊字符)
(4)-e字符串,定义停止生成密码,比如-e 222222:到222222停止生成密码
(5)-f /path/to/charset.lstcharset-name,从charset.lst指定字符集,也即调用密码库文件,比如kali中的charset.lst在/usr/share/crunch/charset.lst,则参数为“-f
/usr/share/crunch/charset.lst”
(6)-i改变出格式。例如将格式aaa,aab,aac,aad,更换为格式aaa,baa,caa,daa,aba,bba等
(7)- l跟t搭配使用,告诉crunch那些符号被当成文字这将允许使用占位符作为模式中的字母,l选项应与t选项的长度相同,参见例子15。
(8)-m,m跟p选项合并使用,请用“-p”代替。
(9)-o wordlist.txt,指定输出文件的名称,例如wordlist.txt
(10)-p字符串或者-p单词1单词2 ...以排列组合的方式来生成字典。
(11)-q filename.txt,读取filename.txt
(11)-r告诉crunch继续从它离开的地方恢复生产密码字典。如果你使用“-o”选项,“-r”选项仅仅工作。你必须使用跟原命令一样的命令来恢复,唯一的例外是“-s”选项。如果在原始命令使用了该选项,则必须在恢复会话之前删除它,只需添加R到原始命令结束。
(12)-s startblock,指定一个开始的字符。
(13)-t @,%^,指定模式,@,%^分别代表意义如下:
@插入小写字母
,插入大写字母
%插入数字
^插入特殊符号
(14)-u,必须是最后一个选项,禁止打印百分比
(15)-z gzip, bzip2, lzma, and 7z,从-o选项压缩输出结果,支持gzip,
bzip2, lzma, and 7z格式,gzip是最快压缩率最低,bzip2是稍微慢于gzip,但比其压缩率搞,7z最慢,但压缩率最高。
1.3crunch使用实例
1.案例1生成字母组合
runch 1 8
生成最小1位,最大8位,由26个小写字母为元素的所有组合
2.案例2生成指定字符组合
crunch 1 6 abcdefg
生成最小为1,最大为6,由字符串abcdefg开头,以字符串gggggg为结束的所有字符组合
3.案例3指定字符串加特殊字符的组合
crunch 1 6 abcdefg\
生成最小为1,最大为6,由abcdefg和空格为元素的所有组合(/代表空格)
4.案例4
crunch1 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项目包含最常见的元素组合(即大小写字母+数字+常见符号);使用cat /usr/share/crunch/charset.lst查看所有密码库
5.案例5生成两位小写字母+dog+三位小写字母
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字符串开始字典生成。mixalpha-numeric-all-space的值为:
[abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*()-_+=~`[]{}|\:;"'<>,.?/
]
@取值为mixalpha-numeric-all-space中的值。
6.案例6生成以BB开头的2位和3位大写字符串
crunch 2 3 -f charset.lst ualpha -s BB
调用密码库charset.lst,生成2位和3位密码;其中元素为密码库charset.lst中ualpha的项;并且以BB开头,其中ualpha =
[ABCDEFGHIJKLMNOPQRSTUVWXYZ],表示全部大写。注意charset.lst必须在当前运行程序目录,否则必须指定完整的路径地址。
7.案例7—生成某个字符串的所有数学组合
crunch 4 5 -p abc
crunch将会生成abc的所有位置变换,例如abc, acb, bac, bca, cab, cba,虽然数字4和5可以是其它值,但必须是后者大于前者,也可以是1 2,其本质意义是某一个单词的所有组合,流入crunch 1 1 –p password,将生成password中所有的排列组合。8*7*6*5*4*3*2*1=40320个单词。
8.案例8—生成单词的所有组合
crunch 4 5 -p dog cat bird
crunch将生成以“dog”“cat”“bird”为元素的所有密码组合:birdcatdog,birddogcat,catbirddog, catdogbird, dogbirdcat, dogcatbird,其大小有字母的排列数决定,在本例中为3×2×1=6个密码。
9.案例9生成6000个密码且生成文件压缩为bzip2格式
crunch 1 5 -o START -c 6000 -z bzip2
生成最小为1位,最大为5位元素为所有小写字母的密码字典,其中每一个字典文件包含6000个密码,并将密码文件保存为bz2文件,文件名将以"第一个密码" +
" - " + "最后一个密码" + " .txt.bz2 "保存(比如000-999.txt.bz2);下面是生成几种格式的压缩文件所用的时间和体积大小对比:
# time ./crunch 1 4 -o START -c 6000 -z gzip
real0m2.729s
user0m2.216s
sys0m0.360s
# time ./crunch 1 4 -o START -c 6000 -z bzip2
real0m3.414s
user0m2.620s
sys0m0.580s
# time ./crunch 1 4 -o START -c 6000 -z lzma
real0m43.060s
user0m9.965s
sys0m32.634s
sizefilename
30Kaaaa-aiwt.txt
12Kaaaa-aiwt.txt.gz
3.8Kaaaa-aiwt.txt.bz2
1.1Kaaaa-aiwt.txt.lzma
10.案例10
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)
11.案例11
crunch 4 4+ + 123 + -t%%@^
生成4位密码,其中格式为“两个数字”+“一个小写字母”+“常见符号”(其中数字这里被指定只能为123组成的所有2位数字组合)。比如12f#,32j^,13t$......,换句话说-t选项后面出现的%只能从123中取值。
12.案例12
crunch 3 3 abc + 123 !@#-t^%@
生成3位密码,其中第一位由“a,b,c”中的一个;第二位为“1,2,3”中的一个;第三位为“!,@,#”中的一个。比如1a!、2a#、3b@......(此命令在实际测试中存在问题,!在linux为特殊命令).
13.案例13
crunch 4 4+ + 123 + -t %%@^
生成4位密码,其中格式为“两个数字”+“一个小写字母”+“常见符号”(其中数字这里被指定只能为123组成的所有2位数字组合)。比如12f#,32j^,13t$......
加号(+)是一个占位符,以便为字符类型指定一个字符集。crunch将使用默认字符集的字符类型,当crunch遇到一个+(加号)的命令行。您必须为每个字符类型指定值或使用加号。也就是说,如果你有两个字符类型,你要么为每个类型指定值,要么使用加号。“-t %%@^”指定第一和第二位插入数字,第三位插入小写字符,最后一位插入特殊字符,所以在这个例子中设置为:
abcdefghijklmnopqrstuvwxyz
ABCDEFGHIJKLMNOPQRSTUVWXYZ
123
!@#$%^&*()-_+=~`[]{}|\:;"'<>,.?/
生成的结果将会是以11a!开头,以"33z "结束的字典。
14.案例14
crunch 5 5 -t ddd@@ -o j -p dog cat bird
生成5个元素组成的密码,其中前三个为dog,cat,bird任意组合,后两个为两个小写字母的任意组合。比如birddogcatuz,catdogbirdab,birdcatdogff,......
15.案例15
crunch 7 7 -t p@ss,%^-l a@aaaaa
加-l选项是将字符串中的@作为文字字符集,而不是做为小写字母进行替换。生成7位密码,格式为“字符p@ss”+大写字母+数字+符号,比如p@ssZ9>......
16.案例16
crunch 5 5 -s @4#S2 -t @%^,2 -e @8*Q2 -l @dddd -b 10KB -o START
生成5位密码,以@4#S2开始,结束于@8*Q2.,并分割为10k大小,格式为小写字母+数字+符号+大写字母+数字。
17.案例17
crunch 5 5 -d 2@ -t @@@%%
crunch will generate 5 character strings staring with aab00 and endingat zzy99.Notice that aaa and zzz arenot present.
生成5位密码,格式为三个小写字母+两个数字,并限制每个密码最少出现2种字母,以aab00开头,以zzy99结束。“-d 2@”表示字母重复最多2次。
18.案例18
crunch 10 10 -t @@@^%%%%^^ -d 2@ -d 3% -b 20mb -o START
crunch will generate 10 character strings starting with aab!0001!! andending at zzy 9998The output will bewritten to 20mb files.
生成10位密码,格式为三个小写字母+一个符号+四个数字+两个符号,限制每个密码至少2种字母和至少3种数字,文件大小为20MB。
19.案例19
crunch 8 8 -d 2@
生成8位密码,每个密码至少出现两种字母
20.案例20
crunch 4 4 -f unicode_test.lst japanese -t @@%% -l @xdd
crunch will load some Japanese characters from the unicode_testcharacter set file.The output willstart at @日00 and end at @語99.
调用密码库unicode_test.lst中的japanese项目字符,生成4位密码,其中格式为两小写字母+两数字。
1.4比较有用的命令
(1)生成pass01-pass99所有数字组合
crunch 6 6 -t pass%%>>newpwd.txt
(2)生成六位小写字母密码,其中前四位为pass
crunch 6 6 -t pass@@>>newpwd.txt
(3)生成六位密码,其中前四位为pass,后二位为大写
crunch 6 6 -t pass,,>>newpwd.txt
(4)生成六位密码,其中前四位为pass,后二位为特殊字符
crunch 6 6 -t pass^^>>newpwd.txt
(5)制作8为数字字典
crunch 8 8 charset.lst numeric -o num8.dic
(6)制作6为数字字典
crunch 6 60123456789 –o num6.dic
(7)制作139开头的手机密码字典
crunch 11 11+0123456789 -t 139%%%%%%%% -o num13.dic
文件大小为1144 MB,还可以每次生成文件大小为20M,自动生成文件:
crunch 11 11+0123456789 -t 139%%%%%%%% -b 20mib -o START
(8)在线使用生成的密码
不用把庞大的字典保存在硬盘上,生成一个密码用一个,不过消耗的时间多,比较占用cpu,参数最后面的-表示引用crunch生成的密码,例如无线密码在线破解:
crunch 2 4 0123456789 | aircrack -ng a,cap
-e MyESSID -w -
crunch 10 1012345 --stodout | airolib -ng
testdlb -import passwd –
crunch1 6 0123456789 | john pwd.txt --stdin -
作者:simeon2015
链接:https://www.jianshu.com/p/72f9262ba6c1
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
linux下用crunch工具生成密码的更多相关文章
- Linux下安装项目管理工具Redmine
http://www.redmine.org.cn/download Linux下安装项目管理工具Redmine1.Ruby安装Ruby on Rails网站推荐使用1.8.7版. 点击(此处)折叠或 ...
- [转]Linux下用gcc/g++生成静态库和动态库(Z)
Linux下用gcc/g++生成静态库和动态库(Z) 2012-07-24 16:45:10| 分类: linux | 标签:链接库 linux g++ gcc |举报|字号 订阅 ...
- linux下C++开发工具
就C++开发工具而言,与Windows下微软(VC, VS2005等)一统天下相比,Linux/Unix下C++开发,可谓五花八门,各式各样.Emacs, vi, eclipse, anjuta,kd ...
- Linux下批量管理工具pssh安装和使用
Linux下批量管理工具pssh安装和使用 pssh工具包 安装:yum -y install pssh pssh:在多个主机上并行地运行命令 pscp:把文件并行地复制到多个主机上 prsync:通 ...
- 【转】Linux下XenServer管理工具安装
转载文章 - Linux下XenServer管理工具安装 Xen-Server 6.5 虚拟机安装Linux系统 vmware安装ubuntu12.04嵌套安装xen server(实现嵌套虚拟化) ...
- Linux下c基于openssl生成MD5的函数
Linux下openssl提供了一系列哈希及加密的函数,如果调用openssl提供的MD5函数生成任意字符串的MD5呢?下面提供了一段代码实现Linux下c字符串生成md5的函数. 具体代码: 1 2 ...
- linux磁盘清理方法 Linux 下垃圾清理工具 BleachBit
由于当初安装系统设计不合理,有些分区的过小,以及网络通讯故障等造成日志文件速度增长等其他原因都可以表现为磁盘空间满,造成无法读写磁盘,应用程序无法执行等.下面就给你支几招(以/home空间满为例): ...
- Linux下安装yum工具
Linux下安装yum工具 http://blog.csdn.net/caoshichaocaoshichao/article/details/13171919
- Linux下性能分析工具汇总
来自:http://os.51cto.com/art/201104/253114.htm 本文讲述的是:CPU性能分析工具.Memory性能分析工具.I/O性能分析工具.Network性能分析工具. ...
随机推荐
- Hybrid App(混合开发) 移动端开发调试
1.下载项目,npm install安装依赖 本地运行 npm run dev(根据具体packjson配 置而定) 2.局域网访问:http://172.20.9.35:8080/ 3.手机端访问: ...
- 【记录一个问题】ndk下使用c++11的condition_variable问题较多
1.存在通知丢失的情况:生产者线程通知196次,消费者线程收到190次,导致部分数据无法被处理. 2.cond.wait()方法后的加锁有问题,导致对空队列进行出队操作然后coredump.一直记得w ...
- 一起看看MySQL中的隐藏列
摘要:在mysql的多版本并发控制mvcc中,我们知道mysql中存在一些隐藏列,例如行标识.事务ID.回滚指针等,不知道大家是否和我一样好奇过,要怎样才能实际地看到这些隐藏列的值呢? 本文分享自华为 ...
- pytest文档2-用例执行
用例设计原则 1.文件名以test_******.py文件和*******_test.py 2.以test_****开头的函数 3.以Test***开头的类 4.以test_*****开头的方法 5. ...
- gin框架中使用jwt
生成解析token 如今有很多将身份验证内置到API中的方法 -JSON Web令牌只是其中之一.JSON Web令牌(JWT)作为令牌系统而不是在每次请求时都发送用户名和密码,因此比其他方法(如基本 ...
- python -m详解
温馨提示: 本篇演示环境是Python 3.8 先python --help看下python -m参数的解释: -m mod : run library module as a script (ter ...
- springboot 使用select的注解,来查询数据库。
package com.aaa.zxf.mapper; import com.aaa.zxf.model.Book; import org.apache.ibatis.annotations.*; i ...
- python基础篇-爬虫urlparse使用及简单示例
>>> from urllib.parse import urlparse >>> o = urlparse('http://www.cwi.nl:80/%7Egu ...
- js读取txt文件并下载
//我在vue中测试, 可行, 这个只适用于google浏览器, ie需要xObject对象 // 下载txt if (/(txt)$/.test(name[1])) { var xhr = new ...
- Java访问修饰符和三大特征(封装,继承和多态)
一.访问修饰符基本介绍: java提供四种访问控制修饰符号,用于控制方法和属性(成员变量)的访问权限(范围): 1.公开级别:用public修饰,对外公开2.受保护级别:用protected修饰,对子 ...