Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
cracken — 一个快速的密码字典生成器,Smartlist 创建和密码混合掩码分析工具,使用纯安全 Rust 编写。 | Kitploit
工具/GitHubGitHub/shmuelamar/cracken
密码破解密码攻击哈希分析渗透测试
GitHubshmuelamar/cracken

cracken

一个快速的密码字典生成器,Smartlist 创建和密码混合掩码分析工具,使用纯安全 Rust 编写。

查看仓库
374264年前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

Cracken

cracken crate cracken version cracken documentation cracken total downloads

Cracken 是一个快速的密码字典生成器、智能列表创建和密码混合掩码分析工具,完全使用安全的 Rust 编写(更多信息请参见 talk/)。受 maskprocessor、hashcat、Crunch 以及 🤗 HuggingFace 的 tokenizers 等优秀工具的启发。

什么?为什么?哇哦!!

在 DeepSec2021 上,我们提出了一种新方法,通过利用 NLP tokenizers 分析密码中的常见子字符串,将密码作为混合掩码进行分析(更多信息请参见 talk/)。

我们的方法将密码拆分为子词,而不仅仅是字符掩码。例如,HelloWorld123! 被拆分为 ['Hello', 'World', '123!'],因为这三个子词在其他密码中非常常见。

混合掩码与智能列表

  • 📄 智能列表 - 通过利用 NLP tokenizers 从密码中提取的子词列表,紧凑且具有代表性
  • 🎭 混合掩码 - 将密码表示为字典列表与字符的组合(例如 ?w1?w2?l?d)

使用智能列表与混合掩码分析 RockYou 密码:

Top25 混合掩码(来自 RockYou)

完整表格请见 此处

Cracken 🐙 用于:

  • ✅ 生成 混合掩码 非常非常快 🦸⚡💨(参见 性能 部分)
  • ✅ 构建 智能列表 - 从给定密码文件中提取的紧凑且具有代表性的子词列表(使用 🤗 HuggingFace 的 tokenizers)
  • ✅ 分析密码的 混合掩码 - 建立统计数据以获取更好的密码候选(同样非常快)

使用 Cracken 的可能工作流程:

简单方式:

  1. 从混合掩码生成字典候选 - 例如 cracken -w rockyou.txt -w 100-most-common.txt '?w1?w2?d?d?d?d?s'
  2. 你可以将 Cracken 生成的密码通过管道传递给 hashcat、john 或你喜欢的密码破解工具

高级方式:

  1. 从现有密码创建智能列表 - cracken create
  2. 分析明文密码列表 - cracken entropy
  3. 使用最常见的 混合掩码 快速生成密码候选 - cracken generate -i hybrid-masks.txt

更多细节请参见 使用方式 部分

快速开始

下载(目前仅限 Linux): 最新发布版 🔗

更多安装选项请参见 安装 部分

运行 Cracken:

生成长度为 8 的所有单词,以大写字母开头,后跟 6 个小写字母,然后是一个数字:

root@kitploit:~
$ cracken -o pwdz.lst '?u?l?l?l?l?l?l?d'

从两个字典列表生成单词,并附加年份后缀 (1000-2999) <名字><姓氏><年份>

root@kitploit:~
$ cracken --wordlist firstnames.txt --wordlist lastnames.lst --charset '12' '?w1?w2?1?d?d?d'

从 rockyou.txt 提取的子词中创建大小为 50k 的智能列表

root@kitploit:~
$ cracken create -f rockyou.txt -m 50000 --smartlist smart.lst

使用智能列表估计密码 HelloWorld123! 的混合掩码熵值

root@kitploit:~
$ cracken entropy -f smart.lst 'HelloWorld123!'

混合最小拆分:["hello", "world1", "2", "3", "!"]
混合掩码:?w1?w1?d?d?s
混合最小熵值:42.73
--
字符集掩码:?l?l?l?l?l?l?l?l?l?l?d?d?d?s
字符集掩码熵值:61.97

性能

截至撰写本文时,Cracken 可能是世界上最快字典生成器:

基准测试结果

Cracken 的性能比 hashcat 的快速 maskprocessor(用 C 编写)高出约 25%。

Cracken 每核心每秒可生成约 2 GB 数据。

更多细节请参见 benchmarks/ 🔗

为什么速度很重要?一个典型的 GPU 每秒可以测试数十亿个密码(取决于密码哈希函数)。如果字典生成器每秒产生的单词数少于破解工具的处理能力,破解速度将会下降。

混合掩码分析性能

Cracken 使用 A* 算法非常快速地分析密码。它能够以约 10万个密码/秒 的速度找到密码文件的最小混合掩码(cracken entropy -f words1.txt -f words2.txt ... -p pwds.txt)

安装

安装 Cracken 或从源码编译

下载二进制文件(目前仅限 Linux)

从 releases 🔗 下载最新发布版

从源码构建(所有平台)

Cracken 使用 Rust 编写,需要 rustc 进行编译。Cracken 应支持 Rust 支持的所有平台。

安装说明请参见 cargo 🔗

有两种从源码构建的方式——使用 cargo 从 crates.io 安装(推荐)或手动从源码编译。

1. 从 crates.io 安装(推荐)

使用 cargo 安装:

root@kitploit:~
$ cargo install cracken

2. 从源码构建

克隆 Cracken:

root@kitploit:~
$ git clone https://github.com/shmuelamar/cracken

构建 Cracken:

root@kitploit:~
$ cd cracken
$ cargo build --release

运行:

root@kitploit:~
$ ./target/release/cracken --help

使用方式说明

root@kitploit:~
$ cracken --help
Cracken v1.0.0 - 一个快速的密码字典生成器

用法:
    cracken [子命令]

选项:
    -h, --help       打印帮助信息
    -V, --version    打印版本信息

子命令:
    generate    (默认)根据给定的掩码和字典文件生成以换行分隔的单词
    create      从输入文件创建新的智能列表
    entropy     
                计算密码或密码文件的估计熵值。
                密码的熵值是密码密钥空间大小的 log2 值。
                
                有两种密钥空间大小估计方式:
                  * mask - 每个字符的密钥空间(数字=10,小写字母=26...)
                  * hybrid - 查找最小拆分为子词和字符集。


运行 cracken <子命令> --help 获取特定子命令帮助


使用示例:

  ## 生成子命令示例:

  # 从 00000000 到 99999999 的所有数字
  cracken ?d?d?d?d?d?d?d?d

  # 从 0 到 99999999 的所有数字
  cracken -m 1 ?d?d?d?d?d?d?d?d

  # 带有 pwd 前缀的单词 - pwd0000 到 pwd9999
  cracken pwd?d?d?d?d

  # 所有长度为 8 的密码,以大写开头,后跟 6 个小写字母,再一个数字
  cracken ?u?l?l?l?l?l?l?d

  # 同上,将输出写入 pwds.txt 而不是标准输出
  cracken -o pwds.txt ?u?l?l?l?l?l?l?d

  # 自定义字符集 - 所有十六进制值
  cracken -c 0123456789abcdef '?1?1?1?1'

  # 4 个自定义字符集 - 顺序决定字符集的 ID
  cracken -c 01 -c ab -c de -c ef '?1?2?3?4'

  # 4 个小写字母,后跟年份 2000-2019 后缀
  cracken -c 01 '?l?l?l?l20?1?d'

  # 以字典中的名字开头,后跟 4 位数字
  cracken -w firstnames.txt '?w1?d?d?d?d'

  # 以字典中的名字开头,后跟字典中的姓氏,最后以符号结尾
  cracken -w firstnames.txt -w lastnames.txt -c '!@#$' '?w1?w2?1'

  # 多次重复使用字典并组合字符集
  cracken -w verbs.txt -w nouns.txt '?w1?w2?w1?w2?w2?d?d?d'


  ## 创建智能列表子命令示例:

  # 从单个文件创建智能列表到 smart.txt
  cracken create -f rockyou.txt --smartlist smart.txt

  # 从多个文件使用多种分词算法创建智能列表
  cracken create -t bpe -t unigram -t wordpiece -f rockyou.txt -f passwords.txt -f wikipedia.txt --smartlist smart.txt

  # 创建智能列表,子词最小长度为 3,纯数字子词最大长度为 6
  cracken create -f rockyou.txt --min-word-len 3 --numbers-max-size 6 --smartlist smart.txt


  ## 熵值子命令示例:

  # 估算密码的熵值
  cracken entropy --smartlist vocab.txt 'helloworld123!'

  # 估算密码文件的字符集掩码熵值(默认为混合模式)
  cracken entropy --smartlist vocab.txt -t charset -p passwords.txt

  # 估算密码文件的熵值
  cracken entropy --smartlist vocab.txt -p passwords.txt

cracken-v1.0.0 linux-x86_64 编译器:rustc 1.56.1 (59eed8a2a 2021-11-01)
更多信息请访问:https://github.com/shmuelamar/cracken

生成子命令使用方式说明

root@kitploit:~
$ cracken generate --help
cracken-generate 
(默认)根据给定的掩码和字典文件生成以换行分隔的单词

用法:
    cracken generate [选项] <掩码> --masks-file <掩码文件>

选项:
    -h, --help       
            打印帮助信息

    -s, --stats      
            打印此命令将生成的单词数量并退出

    -V, --version    
            打印版本信息


选项:
    -c, --custom-charset <自定义字符集>...    
            自定义字符集(字符串)。最多 9 个自定义字符集 - ?1 到 ?9。在掩码中使用 ?1 表示第一个字符集

    -i, --masks-file <掩码文件>               
            包含要生成的掩码的文件

    -x, --maxlen <最大长度>                   
            掩码的最大起始长度

    -m, --minlen <最小长度>                   
            掩码的最小起始长度

    -o, --output-file <输出文件>             
            写入字典的输出文件,默认为标准输出

    -w, --wordlist <字典列表>...                
            包含以换行 (0xA) 分隔的单词的文件。注意:当前所有字典列表都会加载到内存


参数:
    <掩码>    
            要生成的字典掩码。
            可用的掩码有:
                内置字符集:
                ?d - 数字:"0123456789"
                ?l - 小写字母:"abcdefghijklmnopqrstuvwxyz"
                ?u - 大写字母:"ABCDEFGHIJKLMNOPQRSTUVWXYZ"
                ?s - 符号:" !\"\#$%&'()*+,-./:;<=>?@[\\]^_`{|}~"
                ?a - 所有字符:?d + ?l + ?u + ?s
                ?b - 所有二进制值:(0-255)
            
                自定义字符集 ?1 到 ?9:
                ?1 - 通过 --charset 'mychars' 指定的第一个自定义字符集
            
                字典列表 ?w1 到 ?w9:
                ?w1 - 通过 --wordlist 'my-wordlist.txt' 指定的第一个字典列表

创建智能列表子命令使用方式说明

root@kitploit:~
$ cracken create --help  
cracken-create 
从输入文件创建新的智能列表

用法:
    cracken create [选项] --file <文件>... --smartlist <智能列表>

选项:
    -h, --help       打印帮助信息
    -q, --quiet      禁用进度条打印
    -V, --version    打印版本信息

选项:
    -f, --file <文件>...                         输入文件名,可以为多个文件多次指定
        --min-frequency <最小频率>          单词的最低频率,仅与 BPE 分词器相关
    -l, --min-word-len <最小单词长度>            过滤短于指定长度的单词
        --numbers-max-size <数字最大长度>    过滤长于指定长度的纯数字单词
    -o, --smartlist <智能列表>                   输出智能列表文件名
    -t, --tokenizer <分词器>...                   使用的分词器,可以多次指定。
                                                 可选值:bpe, unigram, wordpiece [默认:bpe]  [可能的值:bpe, unigram, wordpiece]
    -m, --vocab-max-size <词汇表最大大小>        最大词汇表大小

熵值子命令使用方式说明

root@kitploit:~
$ cracken entropy --help
cracken-entropy 

计算密码或密码文件的估计熵值。
密码的熵值是密码密钥空间大小的 log2 值。

有两种密钥空间大小估计方式:
  * mask - 每个字符的密钥空间(数字=10,小写字母=26...)
  * hybrid - 查找最小拆分为子词和字符集。


用法:
    cracken entropy [选项] <密码> --smartlist <智能列表>...

选项:
    -h, --help       打印帮助信息
    -s, --summary    输出密码熵值的摘要
    -V, --version    打印版本信息

选项:
    -t, --mask-type <掩码类型>              输出的掩码类型,可选:charsets(仅字符集),hybrid(字符集+字典列表)[可能的值:hybrid, charset]
    -p, --passwords-file <密码文件>          以换行分隔的密码文件,用于估算熵值
    -f, --smartlist <智能列表>...               用于估算熵值的智能列表输入文件,以换行分隔的文本文件

参数:
    <密码>    要估算的密码

许可证

Cracken 采用 MIT 许可证。本项目仅可用于合法目的 ⚖️

贡献

Cracken 正在积极开发中,如果你希望提供帮助,下面是本项目的部分路线图。 欢迎提交 PR 和开启 Issues。

下载工具