crunch使用教程

crunch 是一款功能强大的单词列表(词表)生成工具,它能够根据用户指定的条件和规则生成自定义词表。这些词表主要用于密码破解、渗透测试和安全评估等场景,帮助测试人员评估系统密码的强度。

与其他词表生成工具相比,crunch 的特点是高度灵活,支持通过字符集、模式、组合规则等方式生成高度定制化的词表。它可以将生成的结果输出到屏幕、文件或直接传递给其他工具(如密码破解工具),是渗透测试中生成针对性密码字典的重要工具。

二、工具常用参数说明

参数 中文说明
<min> 必需参数,指定生成单词的最小长度
<max> 必需参数,指定生成单词的最大长度
-b <size>k|m|g 指定输出文件的大小上限,单位可以是 k(KB)、m(MB)、g(GB),达到上限后自动分文件
-c <number> 指定每个输出文件中包含的单词数量
-d <number> 限制相同字符连续出现的最大次数,格式为 <数字> 或 <数字>:<字符>
-e <string> 当生成到指定字符串时停止
-f <path> 使用预定义的字符集文件(默认路径为 /usr/share/crunch/charset.lst)
-i 反转输出的单词顺序
-o <file> 将生成的词表保存到指定文件
-p charset charset ... 生成字符集的所有可能组合,不考虑长度限制(忽略 min 和 max)
-q <file> 从指定文件中读取单词并生成所有可能的组合
-r 继续上次中断的词表生成过程
-s <string> 从指定字符串开始生成词表
-t <pattern> 按照指定模式生成词表,支持通配符(%=数字,@=小写字母,^=大写字母,,=特殊字符)
-u 禁止打印进度信息
-z <compression> 对输出文件进行压缩,支持 gzip、bzip2、lzma、7z 等格式

三、使用教程

1. 基础使用方法

crunch 的基本语法为:

复制代码
crunch <最小长度> <最大长度> [字符集] [选项]

如果不指定字符集,默认使用小写字母(abcdefghijklmnopqrstuvwxyz)。

2. 常用命令示例

(1)生成基础字母词表

复制代码
crunch 3 5

功能:生成长度为 3 到 5 的所有小写字母组合(如 aaa、aab...zzzzz)

输出:直接显示在终端,按 Ctrl+C 可终止

(2)指定字符集生成数字词表

复制代码
crunch 4 4 0123456789 -o numbers.txt

功能:生成所有 4 位数字组合(0000 到 9999),并保存到 numbers.txt 文件

适用场景:破解纯数字密码(如 PIN 码、简单密码)

(3)混合字符集生成复杂词表

复制代码
crunch 6 6 abc123! -o mixed_words.txt

功能:生成长度为 6 的词表,字符来自 a、b、c、1、2、3、! 的组合

优势:包含字母、数字和特殊字符,模拟复杂密码规则

(4)使用预定义字符集

复制代码
crunch 5 5 -f /usr/share/crunch/charset.lst mixalpha-numeric-all-space -o predefined.txt

功能:使用系统预定义的 "mixalpha-numeric-all-space" 字符集(包含大小写字母、数字、空格和特殊字符)生成 5 位长度的词表

说明:预定义字符集文件中包含多种常用字符组合,可通过查看该文件了解更多选项

(5)按模式生成词表

复制代码
crunch 8 8 -t @@@%^^^ -o pattern_based.txt

模式说明:

  • @ 代表小写字母(如 a-z)
  • % 代表数字(0-9)
  • ^ 代表大写字母(A-Z)

功能:生成 8 位词表,格式为 "3个小写字母+1个数字+3个大写字母"(如 abc1ABC 符合格式)

适用场景:已知密码遵循特定格式(如前半为字母后半为数字)

(6)生成组合词表(无长度限制)

复制代码
crunch 0 0 -p apple banana cherry -o combinations.txt

功能:生成 "apple"、"banana"、"cherry" 三个单词的所有可能组合(如 applebananacherry、bananaapplecherry 等)

说明-p 参数忽略 min 和 max,此时可设为 0 0

(7)限制字符重复次数

复制代码
crunch 4 4 -d 2@ abcdef -o no_repeat.txt

功能:生成 4 位词表(字符来自 a-f),限制相同字符最多连续出现 2 次(如 aabc 合法,aaab 非法)

优势:减少无意义的重复字符组合,缩小词表体积

(8)分卷生成大词表

复制代码
crunch 6 6 -b 10m -o output_ -z gzip

功能:生成 6 位词表,每个文件大小不超过 10MB,使用 gzip 压缩,文件名为 output_000.gz、output_001.gz 等

适用场景:生成超大词表时避免单个文件过大

(9)从指定字符串开始生成

复制代码
crunch 3 3 -s abc -o continue_from_abc.txt

功能:从 "abc" 开始生成 3 位小写字母词表(跳过 aaa 到 abb 的组合)

优势:可继续上次未完成的词表生成任务

3. 使用注意事项

  • 性能与资源:
    • 词表大小随长度呈指数增长(如 6 位大小写字母+数字组合约有 91.6 亿种可能),生成前需评估存储空间和时间成本
    • 避免生成过长(如超过 8 位)的全字符集词表,可能导致文件过大(GB 甚至 TB 级)
  • 字符集选择:
    • 根据目标密码策略选择字符集(如已知密码仅包含数字和小写字母,无需加入大写和特殊字符)
    • 合理使用预定义字符集(charset.lst)可简化命令
  • 组合策略:
    • 结合目标信息(如生日、品牌名、常见密码前缀)使用 -t 模式生成针对性词表,比全组合词表更高效
    • 对于复杂密码,可先用 crunch 生成基础词表,再用其他工具(如 hashcat)添加规则扩展
  • 输出方式:
    • 直接输出到破解工具(如 crunch 4 4 0123456789 | john --stdin hash.txt)可节省存储空间
    • 大词表建议使用分卷(-b)和压缩(-z)选项
相关推荐
Flynt17 小时前
npm v12 来了:allowScripts 默认关闭,我的项目差点跑不起来
安全·npm·node.js
戴为沐18 小时前
Linux内存扩容指南
linux
zylyehuo1 天前
Linux 彻底且安全地删除文件
linux
用户805533698032 天前
主线 U-Boot 上 RK3506:和闭源 rkbin 拔河的三个隐性契约
linux·嵌入式
用户034095297912 天前
linux fcitx 5 雾凇拼音 设置在中文输入法下仍然输入英文标点
linux
Web3探索者3 天前
可视化服务器管理和传统命令行区别是什么?新手教程:Linux 运维到底该用图形界面还是 SSH 命令行?
linux·ssh
zylyehuo4 天前
Linux系统中网线与USB网络共享冲突
linux
Sokach10155 天前
Linux Shell 脚本从零到能用:一个新手的一天学习总结
linux
冬奇Lab5 天前
Skill 系列(02):Skill 安全风险——三类攻击面的实战测试
人工智能·安全·开源
AlfredZhao5 天前
Docker 容器时区不对,`timedatectl` 不存在怎么办?
linux·timezone