密码字典生成工具Crunch

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

1.1简介

1.Crunch简介

Crunch是一种创建密码字典工具,按照指定的规则生成密码字典,可以灵活的制定自己的字典文件。使用Crunch工具生成的密码可以输出到屏幕,保存到文件、或另一个程序。知道密码的一部分细节后,可以针对性的生成字典,目前版本3.6。其开源代码地址:

https://github.com/jaalto/external-sf--crunch-wordlist

https://github.com/crunchsec/crunch

图片

2.特点

  • Crunch可以以组合和排列的方式生成字典
  • 它可以通过行数或文件大小中止输出
  • 支持恢复
  • 支持数字和符号模式
  • 分别支持大小写字符模式
  • 在生成多个文件时添加状态报告
  • 新的-l选项支持@,%^
  • 新的-d选项可以限制重复的字符,可以通过man文件查看详细信息
  • 支持unicode

1.2安装及使用

1.安装

(1)kali默认安装

apt-get install crunch

(2)centos安装

git clone https://github.com/crunchsec/crunch.git
cd crunch
sudo make install

说明:

(1)如果是基于32版本编译,需要安装相应的组件,否则编译会出错,如下图所示。

图片

图 编译出错

(2)分别安装相应的库文件

yum install glibc-devel.i686 libgcc.i686 //centos
sudo apt-get install gcc-multilib g++-multilib // Ubuntu
gcc -Wall -pedantic -std=c99 crunch.c -lm -o crunch //只编译64位版本

2.基本语法

crunch <min-len> <max-len> [<charset string>] [options]

crunch 密码最小长度 密码最大长度 [字符集] [命令选项]

[命令选项]

-b number[type]  指定输出文件的大小,只有在使用 -o START 时才有效,例如:60MB,输出文件将以起始字母-结束字母的格式命名,例如:./crunch 4 5 -b 20mib -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 是不正确的。

-c number   指定写入输出文件的行数,只有在使用 -o START 时才有效,例如:60,输出文件将以起始字母-结束字母的格式命名,例如:./crunch 1 1 -f /pentest/password/crunch/charset.lst mixalpha-numeric-all-space -o START -c 60 将生成2个文件:a-7.txt 和 8-\ .txt。第二个文件名中的斜杠是因为结束字符是空格,ls 必须转义它才能打印出来。当指定文件名时,确实需要输入 \,因为最后一个字符是空格。

-d numbersymbol    限制重复字符的数量。-d 2@ 会将小写字母限制为输出类似 aab 和 aac。aaa 不会被生成,因为这是3个连续的 a 字母。格式是数字后跟符号,其中数字是最大连续字符数,符号是你想要限制的字符集的符号,例如 @,%^

-e string          指定 crunch 应该提前停止的时间点。

-f /path/to/charset.lst charset-name          指定一个来自 charset.lst 的字符集。

-i  反转输出,所以不是 aaa,aab,aac,aad, 等等,而是得到aaa,baa,caa,daa,aba,bba, 等等。

-l 当使用 -t 选项时,此选项告诉 crunch 哪些符号应被视为字面量。这允许你在模式中将占位符用作字母。-l 选项的长度应该与 -t 选项相同。参见示例15。

-m 已合并到 -p 中。请改用 -p。

-o wordlist.txt    指定要写入输出的文件,例如:wordlist.txt

-p charset 或 -p word1 word2 ...          告诉 crunch 生成没有重复字符的单词。默认情况下,crunch 会生成一个字符集中的字符数量的幂次方(#of_chars_in_charset ^ max_length)大小的单词表。此选项将生成字符集中的字符数量的阶乘(#of_chars_in_charset!)。! 表示阶乘。例如,如果字符集是 abc,最大长度是 4,crunch 默认会生成 3^4 = 81 个单词。此选项将生成 3! = 3x2x1 = 6 个单词(abc, acb, bac, bca, cab, cba)。这必须是最后一个选项!此选项不能与 -s 一起使用,并且它忽略了最小和最大长度,但你仍然必须指定两个数字。

-q filename.txt          告诉 crunch 读取 filename.txt 并排列读取的内容。这类似于 -p 选项,但它从 filename.txt 获取输入。

-r 告诉 crunch 从中断的地方继续生成单词。-r 仅在使用 -o 时有效。你必须使用与最初生成单词时相同的命令。唯一的例外是 -s 选项。如果你最初的命令使用了 -s 选项,在恢复会话之前你必须移除它。只需在原始命令的末尾添加 -r 即可。

-s startblock          指定一个起始字符串,例如:03god22fs

-t @,%^   指定一个模式,例如:@@god@@@@,其中只有 @, , %, 和 ^ 会发生变化。

         @ 将插入小写字母

         , 将插入大写字母

         % 将插入数字

         ^ 将插入符号

-u   -u 选项禁用打印百分比线程。这应该是最后一个选项。

-z gzip, bzip2, lzma, 和 7z    压缩 -o 选项的输出。有效的参数是 gzip, bzip2, lzma, 和 7z。gzip 是最快的,但压缩率最低。bzip2 比 gzip 稍慢,但有更好的压缩效果。7z 最慢,但有最好的压缩效果。

1.3默认示例

crunch man命令后可以获取crunch中提供的20个使用实例。

1.示例 1

crunch 1 8

crunch 将显示一个从 a 开始到 zzzzzzzz 结束的单词列表。

2.示例 2

  crunch 1 6 abcdefg

  crunch 将使用字符集 abcdefg 显示一个从 a 开始到 gggggg 结束的单词列表。

3.示例 3

  crunch 1 6 abcdefg\

  字符串末尾有一个空格。为了使 crunch 使用这个空格,你需要使用 \ 字符来转义它。在这个例子中,你也可以将字母放在引号里,而不需要 \,即 "abcdefg "。crunch 将使用字符集 abcdefg 生成一个从 a 开始到 (6 个空格) 结束的单词列表。

4.示例 4

  crunch 1 8 -f charset.lst mixalpha-numeric-all-space -o wordlist.txt

  crunch 将使用 charset.lst 中的 mixalpha-numeric-all-space 字符集,并将单词列表写入名为 wordlist.txt 的文件。文件将从 a 开始,以 "        " 结束。

5.示例 5

  crunch 8 8 -f charset.lst mixalpha-numeric-all-space -o wordlist.txt -t @@dog@@@ -s cbdogaaa

  crunch 将使用 charset.lst 中的 mixalpha-numeric-all-space 字符集生成一个 8 个字符的单词列表,并将单词列表写入名为 wordlist.txt 的文件。文件将从 cbdogaaa 开始,以 "  dog   " 结束。

6. 示例 6

  crunch 2 3 -f charset.lst ualpha -s BB

  crunch 将从 BB 开始生成单词列表,以 ZZZ 结束。这在你需要中途停止生成单词列表时很有用。只需执行 `tail wordlist.txt` 并将 -s 参数设置为序列中的下一个单词。开始前确保重命名原始单词列表,因为 crunch 会覆盖现有的单词列表。

7.示例 7

  crunch 4 5 -p abc

     crunch 将生成 abc, acb, bac, bca, cab, cba。

图片

8.示例 8

  crunch 4 5 -p dog cat bird

  crunch 将生成 birdcatdog, birddogcat, catbirddog, catdogbird, dogbirdcat, dogcatbird。

图片

9.示例 9

  crunch 1 5 -o START -c 6000 -z bzip2

  crunch 将生成每个包含 6000 个单词的 bzip2 压缩文件。压缩文件的文件名将是 first_word-last_word.txt.bz2。

10.示例 10

  crunch 4 5 -b 20mib -o START

  将生成 4 个文件:aaaa-gvfed.txt, gvfee-ombqy.txt, ombqz-wcydt.txt, wcydu-zzzzz.txt。前三个文件是 20MB(实际为 2 的幂次兆字节),最后一个文件是 11MB。

11.示例 11

  crunch 3 3 abc + 123 !@# -t @%^

  将生成一个 3 个字符长的单词,第一个字符是一个字母,第二个字符是一个数字,第三个字符是一个符号。你指定想要使用的字符的顺序很重要。你必须按小写字母、大写字母、数字和符号的顺序指定。如果你不打算使用特定的字符集,你可以使用加号作为占位符。如上所示,我未使用大写字母集,因此我使用了加号占位符。这将从 a1! 开始,以 c3# 结束。

12.示例 12

  crunch 3 3 abc + 123 !@# -t ^%@

  将生成从 !1a 开始到 #3c 结束的 3 个字符的单词。

13. 示例 13

  crunch 4 4 + + 123 + -t %%@^

  加号 (+) 是一个占位符,因此你可以为字符类型指定字符集。当 crunch 在命令行中遇到加号时,它将使用默认的字符集。你必须为每个字符类型指定值或使用加号。所以在这个例子中,字符集将是:

  abcdefghijklmnopqrstuvwxyz

  ABCDEFGHIJKLMNOPQRSTUVWXYZ

  123

  !@#$%^&*()-_+=~`[]{}|\:;"'<>,.?/

  字符串末尾有一个空格

  输出将从 11a! 开始,以 "33z " 结束。引号显示了字符串末尾的空格。

14.示例 14

  crunch 5 5 -t ddd@@ -o j -p dog cat bird

  任何除了 @,%^ 之外的字符都是用于排列的单词的占位符。@,%^ 符号具有与 -t 相同的功能。

  如果你想在输出中使用 @,%^,你可以使用 -l 选项来指定你希望 crunch 将哪个字符视为字面量。

  所以结果是

  birdcatdogaa

  birdcatdogab

  birdcatdogac

  <省略>

  dogcatbirdzy

  dogcatbirdzz

15.示例 15

  crunch 7 7 -t p@ss,%^ -l a@aaaaa

  crunch 将把 @ 符号视为字面量字符,而不是用大写字母替换它。

  这将生成

  p@ssA0!

  p@ssA0@

  p@ssA0#

  p@ssA0$

  <省略>

  p@ssZ9

 16.示例 16

  crunch 5 5 -s @4#S2 -t @%^,2 -e @8 Q2 -l @dddd -b 10KB -o START

  crunch 将生成从 @4#S2 开始到 @8 Q2 结束的 5 个字符的字符串。输出将被分割成 10KB 大小的文件,文件名基于文件的起始和结束字符串。

17.示例 17

  crunch 5 5 -d 2@ -t @@@%%

  crunch 将生成从 aab00 开始到 zzy99 结束的 5 个字符的字符串。注意 aaa 和 zzz 不会出现。

18.示例 18

  crunch 10 10 -t @@@^%%%%^^ -d 2@ -d 3% -b 20mb -o START

  crunch 将生成从 aab!0001!! 开始到 zzy 9998 结束的 10 个字符的字符串。输出将写入 20MB 的文件中。

19.示例 19

  crunch 8 8 -d 2@

  crunch 将生成限制相同数量的小写字母为 2 个的 8 个字符。Crunch 将从 aabaabaa 开始,以 zzyzzyzz 结束。

20.示例 20

  crunch 4 4 -f unicode_test.lst japanese -t @@%% -l @xdd

  crunch 将从 unicode_test 字符集文件中加载一些日文字符。输出将从 @日00 开始,以 @語99 结束。

1.4比较有用的示例

1.生成简单字典

(1)生成长度为 4 到 6 的所有小写字母组合。

crunch 4 6 abcdefghijklmnopqrstuvwxyz -o dict.txt 或者

crunch 4 6 -f /usr/share/crunch/charset.lst lalpha -o dict2.txt

执行完毕后会显示字典大小为2132MB,一共有321254128个密码,接着会显示生成的进度条,如图2所示。

图片

图2 生成6位小写字母组合


(2)生成长度为 4 到 6 的密码,使用小写字母和数字

crunch 4 6 -f /usr/share/crunch/charset.lst lalpha-numeric

(3)生成长度为 4 到 6 的密码,使用所有字符(包括符号)

crunch 4 6 -f /usr/share/crunch/charset.lst all

2.特殊用法

(1)生成包含特定字符的密码

生成长度为 4 到 6 的密码,包含特定字符 "abc123"

crunch 4 6 abc123

(2)某个字符的所以组合

crunch 4 6 -p admin # 生成abc的组合的字典

图片

(3)生成包含特定字符组合的密码

生成长度为 4 到 6 的密码,包含特定字符组合 "abc123" 和 "def456"

crunch 4 6 -p abc123 def456

图片

3.不生成实际字典,只计算字典大小

(1)crunch 1 3 -f /usr/share/crunch/wordlists/english.txt -o /dev/null

1 3 指定最小和最大长度。

-f 指定使用的字典文件(根据您的需求选择)。

-o /dev/null 表示不实际输出文件。

(2)crunch 1 3 -o /dev/null -s

(3)计算包含#字符+大小写字母+数字八位字符的字典大小

 网上一堆人声称该工具非常好用,确实好用,需要自定义规则,在以前估计算一个不错的工具,但国人比较聪明,实用,操作简单。后续会继续对一些密码工具进行实际使用和测试。喜欢的朋友可以收藏。

责任编辑:庞桂玉 来源: 小兵搞安全
相关推荐

2017-06-06 14:44:37

2021-10-10 12:17:06

Weakpass在线字典生成器安全工具

2018-05-02 08:40:36

存储密码字符

2014-11-03 15:13:54

密码分析工具Pipal密码分析

2012-02-22 09:41:55

2021-07-09 13:55:27

密码管理器密码数据安全

2015-05-26 08:46:58

密码LaZagne Pro密码检索

2021-09-17 09:50:29

Elpscrk智能字典生成器安全工具

2011-12-23 13:42:05

JavaScript

2013-08-12 12:36:10

2017-10-31 10:52:21

Linux登录密码生成

2013-05-20 16:09:39

SQL Server

2022-04-23 16:36:30

Linux密码

2012-05-31 09:14:58

Rexsee

2009-09-24 16:56:12

Hibernate S

2009-12-08 12:39:27

云计算无线网络

2022-05-22 13:59:27

Go编程语言

2016-10-09 10:23:00

2010-05-13 17:47:24

Subversion密

2024-01-29 00:10:00

点赞
收藏

51CTO技术栈公众号