密码字典生成工具:crunch

news/2025/1/23 3:59:54/

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

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

crunch简介

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

crunch安装

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

https://github.com/crunchsec/crunch

crunch参数

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

crunch -h

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

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

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

man crunch

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

crunch 14 14 -t zhangsan%%%%%% -o aa.txt

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

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

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

crunch 1 2 abc

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

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

crunch 1 2 abc -o START

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

crunch 14 14 -t zhangsan%%%%%% -o START -b 5mb

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

crunch 14 14 -t zhangsan%%%%%% -o START -c 400000

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

crunch 5 5 -t @@@@@ -o START -d 1

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

cat /usr/share/crunch/charset.lst

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

crunch 5 5 -t @@@@@ -o START -d 1 -f /usr/share/crunch/charset.lst hex-lower

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

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

crunch 8 8 -p 12345@cy > aa.txt

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

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

crunch 1 1 -p zhang san 123 > aa.txt

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

crunch 8 8 12345@cy -s 1212121c -o aa.txt

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

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

crunch 1 1 -q pass.txt > aa.txt

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

  • gzip
  • bzip2
  • lzma
  • 7z

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

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的使用过程中除了几个互斥的参数,其他参数都是可以组合使用的。根据收集到的信息,制定合理的字典生成规则,最终得到的字典文件能够帮助我们更快、更高效地达成目的。


http://www.ppmy.cn/news/917123.html

相关文章

python生成密码字典

系列文章目录 文章目录 系列文章目录前言一、密码字典二、字典生成1.生成6位数小写字母数字密码字典2.选择模式运行 总结 前言 一、密码字典 所谓密码字典&#xff0c;主要是配合解密使用&#xff0c;一般情况用来暴力破解密码&#xff0c;是由指定字符排列组合组成的文本文件…

密码字典

密码字典&#xff0c;主要是配合密码破译软件所使用&#xff0c;密码字典里包括许多人们习惯性设置的密码&#xff0c;这样可以提高密码破译软件的密码破译成功率和命中率&#xff0c;缩短密码破译的时间&#xff0c;当然&#xff0c;如果一个人密码设置没有规律或很复杂&#…

密码字典生成工具cupp详细使用教程

https://blog.csdn.net/smli_ng/article/details/106123977 cupp简介 cupp是一款基于python编写的可交互性的密码字典生成工具。结合社会工程学&#xff0c;你会获得一份根据个人信息生成的专属字典。 与传统字典相比&#xff0c;其优势在于准确率更高。 cupp安装 kali默认没有…

该更新一下你的密码字典了

声明 本文仅用于技术讨论与学习&#xff0c;利用此文所提供的信息而造成的任何直接或者间接的后果及损失&#xff0c;均由使用者本人负责&#xff0c;文章作者不为此承担任何责任。 只供对已授权的目标使用测试&#xff0c;对未授权目标的测试作者不承担责任&#xff0c;均由…

密码字典生成工具—Crunch的使用

搜索公众号&#xff1a;白帽子左一&#xff0c;领配套练手靶场&#xff0c;全套安全课程及工具 一、简介 Crunch是一种创建密码字典工具&#xff0c;按照指定的规则生成密码字典&#xff0c;可以灵活的制定自己的字典文件。 使用Crunch工具生成的密码可以输出到屏幕&#xff…

如何有效检测、识别和管理 Terraform 配置漂移?

作者&#xff5c;Krishnadutt Panchagnula 翻译&#xff5c;Seal软件 链接&#xff5c;https://betterprogramming.pub/detecting-identifying-and-managing-terraform-state-drift-997366a74537 在理想的 IaC 世界中&#xff0c;我们所有的基础设施实现和更新都是通过将更新的…

【Rust 基础篇】Drop Trait 清理代码

导言 在 Rust 中&#xff0c;Drop trait 是一种特殊的 trait&#xff0c;用于定义在值离开作用域时进行清理操作的行为。通过实现 Drop trait&#xff0c;我们可以自定义类型在销毁时的清理逻辑&#xff0c;例如释放资源或执行必要的操作。 本篇博客将详细介绍 Rust 中 Drop …

DirectX12(D3D12)基础教程(十六)——实现渲染线程池:3个内核同步对象实现渲染线程池/大规模线程池

文章目录 1、前言2、深入了解MsgWaitForMultipleObjects()函数fWaitAll参数为TRUE时的问题3、内核同步对象&#xff1a;CPU线程屏障&#xff08;CPU Barrier&#xff09;基础知识4、内核同步对象&#xff1a;信标量&#xff08;Semaphore&#xff09;基础知识5、3个内核同步对象…