字典生成神器Crunch
时间:2022-07-22
本文章向大家介绍字典生成神器Crunch,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
简介
Crunch是一种自定义创建密码字典工具,按照指定的规则生成密码字典,可以针对性的生成字典文件,这在渗透测试过程中就特别有用,用来社工和进行暴力破解攻击其效果尤佳!
其中在github上有源码[1]供下载,具体详细可参考该资料[2]
下载编译
Crunch下载地址[3],也可手动命令进行下载、解压和编译
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
命令格式
crunch <min> <max> [options]
参数详解:
min 设定最小字符串长度(必选)
max 设定最大字符串长度(必选)
oprions
-b 指定文件输出的大小,避免字典文件过大(mib为单位)
-c 指定文件输出的行数,即包含密码的个数
-d 限制大于相同元素连续出现的次数(-d 2 时cac符合条件)
-e 定义停止字符,即到该密码就停止生成
-f 调用库文件元素列表(/etc/share/crunch/charset.lst)
-i 改变输出格式,即aaa,aab -> aaa,baa
-I 通常与-t联合使用,表明该字符为实义字符
-m 通常与-p搭配
-o 将密码保存到指定文件,-o START 为默认“首密码-尾密码”命名
-p 指定元素以排列组合的方式进行,以空格分隔
-q 读取密码文件,即读取pass.txt
-r 定义重某一字符串重新开始
-s 指定一个开始的字符,即从自己定义的密码xxxx开始
-t 指定密码输出的格式(可以引用特殊字符)
-u 禁止打印百分比(必须为最后一个选项)
-z 压缩生成的字典文件,支持gzip,bzip2,lzma,7z,不加默认为txt
特殊字符
% 代表数字
^ 代表特殊符号
@ 代表小写字母
, 代表大写字符
实践案例
- 生成最小5位,最大8位,由26个小写字母为元素的所有组合
crunch 5 8
- 生成最小为5,最大为6,由字符串abcde开头,以字符串gggggg为结束的所有字符组合.以abcdef为元素生成.
crunch 5 6 abcdef
- 生成最小为5,最大为6,由abcdefg和空格为元素的所有组合(/代表空格)
crunch 5 6 abcdefg 或者 crunch 5 6 "abcdefg "
- 调用密码库charset.lst,生成最小为5,最大为8,元素为密码库charset.lst中 mixalpha-numeric-all-space的项目,并保存为 wordlist.txt
crunch 5 8 -f charset.lst mixalpha-numeric-all-space -o wordlist.txt
# 其中charset.lst在kali_linux的目录为 /usr/share/crunch/charset.lst
# charset.lst中mixalpha-numeric-all-space项目包含最常见的元素组合(即大小写字母+数字+常见符号)
# 使用cat /usr/share/crunch/charset.lst 查看所有密码库
# 常用的如下,以元素类型组合的名字命名
hex-lower = [0123456789abcdef]
hex-upper = [0123456789ABCDEF]
numeric = [0123456789]
numeric-space = [0123456789 ]
symbols14 = [!@#$%^&*()-_+=]
ualpha = [ABCDEFGHIJKLMNOPQRSTUVWXYZ]
ualpha-space = [ABCDEFGHIJKLMNOPQRSTUVWXYZ ]
ualpha-numeric = [ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789]
ualpha-numeric-space = [ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 ]
ualpha-numeric-symbol14 = [ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*()-_+=]
ualpha-numeric-symbol14-space = [ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*()-_+= ]
ualpha-numeric-all = [ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*()-_+=~`[]{}|\:;"'<>,.?/]
lalpha = [abcdefghijklmnopqrstuvwxyz]
lalpha-space = [abcdefghijklmnopqrstuvwxyz ]
- 生成两位小写字母+dog+三位小写字母,并以cbdogaaa字符串开始字典生成.调用密码库charset.lst,生成8位密码;其中元素为密码库 charset.lst中mixalpha-numeric-all-space的项
crunch 8 8 -f /usr/share/crunch/charset.lst mixalpha-numeric-all-space -t @@dog@@@ -s cbdogaaa
- 生成某个字符串的排列组合.
crunch 4 4 -p abc
# 生成单词的排列组合
crunch 4 5 -p dog cat bird
- 生成6000个密码且生成文件压缩为bzip2格式
crunch 1 5 -o START -c 6000 -z bzip2
- 生成最小为4位,最大为5位元素为所有小写字母的密码字典,并以20M进行分割
# 类型有效值为KB、MB、GB、KIB,MIB,和GIB
# 前三种类型是基于1000,而最后三种类型是基于1024注意数字与类型之间没有空格
crunch 4 5 -b 20mib -o START
- 生成3位密码,其中第一位由“a,b,c”中的一个;第二位为“1,2,3”中的一个;第三位为“!,@,#”中的一个。比如1a!、2a#、3b@.....
# 加号(+)是一个占位符,以便为字符类型指定一个字符集。crunch将使用默认字符集的字符类型,当crunch遇到一个+(加号)的命令行。必须为每个字符类型指定值或使用加号。也就是说,如果你有两个字符类型,你要么为每个类型指定值,要么使用加号。
crunch 3 3 abc + 123 !@# -t ^%@
- 生成7位密码,格式为“字符p@ss”+大写字母+数字+符号,比如p@ssZ9>......
#加-l选项是将字符串中的@作为文字字符集,而不是做为小写字母进行替换
crunch 7 7 -t p@ss,%^ -l a@aaaaa
- 生成5位密码,格式为三个小写字母+两个数字,并限制每个密码最少出现2种字母,以aab00开头,以zzy99结束。“-d 2@”表示字母连续重复最多2次
crunch 5 5 -d 2@ -t @@@%%
- 调用密码库unicode_test.lst中的japanese项目字符,生成4位密码,其中格式为两小写字母+两数字
crunch 4 4 -f unicode_test.lst japanese -t @@%% -l @xdd
常用的命令
- 生成六位小写字母密码,其中前四位为pass
crunch 6 6 -t pass@@ -o mm.txt
- 制作8位纯数字字典
crunch 8 8 charset.lst numeric -o num8.txt
- 制作139开头的手机密码字典
crunch 11 11 +0123456789 -t 139%%%%%%%% -o num13.dic
- 在线使用生成的密码,参数最后面的-表示引用crunch生成的密码,例如无线密码在线破解
crunch 2 4 0123456789 | aircrack -ng a,cap -e MyESSID -w -
crunch 10 1012345 --stodout | airolib -ng testdlb -import passwd –
crunch 1 6 0123456789 | john pwd.txt --stdin -
参考拓展
- 在线生成社工字典[4]
- 支持中文的交互生成字典工具
cupp
,github地址[5] - 其他好用的生成字典的工具cewl,自行百度>
参考资料
[1]
源码地址:: https://github.com/crunchsec/crunch
[2]
详细参考资料:: http://netsecurity.51cto.com/art/201706/541638.htm
[3]
crunch下载地址:: https://sourceforge.net/projects/crunch-wordlist/
[4]
在线生成字典地址推荐:: https://www.bugku.com/mima/
[5]
cupp工具地址: https://github.com/Saferman/cupper.git
- 贾康:智能金融需在发展和规范中掌握理性权衡点
- Objective-C: 字符串NSString与NSMutableString
- 2017年最后一篇推送,仍然与技术有关盘点深度学习论文年度之“最”
- 【垂直居中高级篇】你不知道的垂直居中方式
- 第一个APP:IOS做简单运算的计算器
- 进程、线程、应用程序之间的关系
- CSS3新特性应用之用户体验
- 瑞波币正式超越Uber和比特币现金,市值突破590亿美元
- 程序猿的日常——JVM内存模型与垃圾回收
- 第一个只出现一次的字符
- 在字符串中删除特定的字符
- 使用RNN预测股票价格系列一
- 程序猿的日常——SpringMVC系统架构与流程回顾
- CSS3新特性应用之字体排印
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Ubuntu18 给terminal改个漂亮的命令行提示符的方法
- leetcode树之将有序数组转换为二叉搜索树
- 在 Ubuntu 上安装 Protobuf 3 的教程详解
- protobuf简单介绍和ubuntu 16.04环境下安装教程
- Ubuntu解决火狐浏览器无法同步书签的问题【推荐】
- Ubuntu添加swap分区的方法
- linux文件目录管理命令整理总结
- C++核心准则SF.8:为所有的.h文件使用包含监护
- 利用logsave如何将命令输出保存起来
- CentOs下安装gcc/g++/gdb的方法
- 详解firewall的规则设置与命令(白名单设置)
- 二叉树:构造一棵最大的二叉树
- Ubuntu16.04 ext4格式硬盘挂载普通用户权限控制的操作方法
- Apache Spark 2.0 在作业完成时却花费很长时间结束
- centos 6.9 升级glibc动态库的详细过程