Crunch的简介与使用介绍

简介

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. 生成最小1位,最大8位,由26个小写字母为元素的所有组合

    1
    crunch 1 8
  2. 生成最小为1,最大为6.由abcdefg为元素的所有组合

    1
    crunch 1 6 abcdefg
  3. 生成最小为1,最大为6.由abcdefg和空格为元素的所有组合

    1
    crunch 1 6 "abcdefg "
  4. 调用密码库 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项目包含最常见的元素组合(即大小写字母+数字+常见符号)

  5. 定义密码格式为“两个小写字母+dog+三个小写字母”,密码为8位,并且第一个密码为cbdogaaa,生成指定的文件名的字典文件

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

    格式为“两个小写字母+dog+三个小写字母”,并以cbdogaaa开始(@代表小写字母)

  6. 调用密码库charset.lst,生成2位和3位密码

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

    元素为密码库charset.lst中ualpha(大写字母)的项;并且以BB开头

  7. 生成abc, acb, bac, bca, cab, cba

    1
    crunch 4 5 -p abc

    虽然数字4和5这里没用,但必须有

  8. 生成 dog cat bird 三个单词任意组合

    1
    crunch 4 5 -p dog cat bird

    将生成以“dog”“cat”“bird”为元素的所有密码组合:birdcatdog,birddogcat,catbirddog, catdogbird, dogbirdcat, dogcatbird

    虽然数字4和5这里没用,但必须有

  9. 生成最小为1位,最大为5位元素为所有小写字母的密码字典,其中每一个字典文件包含6000个密码,并将密码文件保存为bz2文件

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

    文件名将以 “first_word-last_word.txt.bz2” 保存(比如000-999.txt.bz2)

  10. 生成最小为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

  11. 生成3位密码,其中格式为“1个小写字母”+“一个数字”+“一个常见符号”,字母,数字和符号均为指定的字符

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

    linux命令行中’ ! ‘是个特殊字符,所以要加反斜杠

  12. 生成4位密码,其中格式为“数字+数字+小写字母+常用特殊字符”,字母和常用字符范围都在+号中留空表示 使用默认的字符集,数字范围为 1 2 3 , 字母范围为a b c

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

    默认的字符集如下:
    abcdefghijklmnopqrstuvwxyz
    ABCDEFGHIJKLMNOPQRSTUVWXYZ
    123
    !@#$%^&*()-_+=~`[]{}|:;”‘<>,.?/

  13. 生成5个元素组成的密码,其中前三个为 dog cat bird任意组合,后两个为两个小写字母的任意组合

    1
    crunch 5 5 -t ddd@@ -o j -p dog cat bird
  14. 生成7位密码,格式为“字符p@ss”+大写字母+数字+符号

    1
    crunch 7 7 -t p@ss,%^

    可见如果不加-l选项来显示特殊符号,@会变成a

    在这里想生成想要的密码,需要使用-l选项

    1
    crunch 7 7 -t p@ss,%^ -l a@aaaaa
  15. 生成5位密码,格式为“小写字母+数字+符号+大写字母+数字”,并以 “@4#S2”开始,出现”小写字母”+”8 Q2”就结束,分割为10k大小

    1
    crunch 5 5 -s @4#S2 -t @%^,2 -e @8 Q2 -b 10KB -o START
  16. 生成5位密码,格式为三个字母+两个数字,并限制小写字母最多连续出现2次

    1
    crunch 5 5 -d 2@ -t @@@%%
  17. 生成10位密码,格式为“三个小写字母+一个符号+四个数字+两个符号”,限制每个小写字母最多连续出现2次,数字最多连续出现3次

    1
    crunch 10 10 -t @@@^%%%%^^ -d 2@ -d 3% -b 20mb -o START
  18. 生成8位密码,每个小写字母最多连续出现两个

    1
    crunch 8 8 -d 2@
梦想还是要有的,万一实现了呢?