TajuC/fastbrute
GitHub: TajuC/fastbrute
针对 hashcat mode 4010 的 MD5 挑战-响应结构进行 5 字符密钥的高吞吐量 CPU 暴力恢复工具,提供纯 Python、C/C++(AVX2/AVX-512)和 Odin 三种后端。
Stars: 0 | Forks: 0
# fastbrute
**吞吐量优化的 `md5(challenge + hex(md5(challenge + secret)))` 中 5 字符 secret 恢复** — 即 hashcat mode-4010 结构 — 提供纯 Python、C/C++(AVX2 / AVX-512,双路 ILP)和 Odin 后端,共享同一种算法。
[](https://github.com/TajuC/fastbrute/actions/workflows/ci.yml)
[](https://github.com/TajuC/fastbrute/actions/workflows/codeql.yml)
[](https://securityscorecards.dev/viewer/?uri=github.com/TajuC/fastbrute)
[](LICENSE)

-informational)
## 目录
- [功能说明](#what-it-does)
- [授权使用](#authorized-use)
- [性能表现](#performance)
- [安装说明](#install)
- [用法](#usage)
- [原理介绍](#how-it-works)
- [开发指南](#development)
- [安全性](#security)
- [许可证](#license)
## 功能说明
给定 `challenge` 字节和 16 字节的目标摘要,fastbrute 会搜索满足以下条件的 5 字符
`secret`(取自 `0-9 a-z A-Z`,62 个符号,因此有 62^5 = 916,132,832 个候选值):
```
md5(challenge + hex(md5(challenge + secret))) == target
```
这正是 **hashcat mode 4010**(`md5($salt.md5($salt.$pass))`)。MD5 没有可用的捷径,因此
核心全在于吞吐量。每个后端只对固定的 `challenge` 前缀进行一次哈希并重用该
状态,将消息调度(message schedule)折叠为预计算的常量,仅以 SIMD lane 的形式构建变化的字(word),在向量寄存器内将内部摘要扩展为十六进制,在进行完整的 128 位比较之前先检查前 32 位摘要位,并通过任务窃取(work-stealing)将密钥空间分配到每个核心。
## 授权使用
fastbrute 是一款安全研究和密码审计工具。**仅限**针对您拥有或明确获得授权测试的哈希、系统
和数据使用 — 例如 CTF 挑战、您自己的凭据、
批准的渗透测试以及学术或防御性研究。对您不拥有或未经许可测试的目标使用它可能是违法的。您需对您的使用方式负责。
## 性能表现
整个密钥空间包含 916,132,832 个候选值。**GPU 可以取得绝对的压倒性优势** — `hashcat -m 4010` 可在
不到一秒内完成,且根本不需要这里的任何代码。fastbrute 是快速的*纯 CPU、无依赖*
选项,也是对折叠、向量化、多缓冲(multi-buffered)MD5 究竟能被推至何种极限的一项研究。
| 后端 / 级别 | 速率 | 备注 |
|---|---|---|
| `hashcat -m 4010` (GPU) | 亚秒级 | 如果您有 GPU,这才是正确的工具。 |
| Native, AVX-512 (16-wide, 2-way ILP) | ~192 Mcand/s | 测于 5 核 Xeon。 |
| Native, AVX2 (8-wide, 2-way ILP) | 峰值 ~410 Mcand/s | 测于 i7-14700HX (Raptor Lake)。 |
| Native, scalar | 基准 | 可移植的兜底方案。 |
| 纯 Python (全核) | 数分钟 | 达到了 CPython 的极限;请尝试 PyPy 或 native 构建。 |
以上数据为单次冷扫描(cold sweep)的结果;在笔记本电脑上,连续不断的扫描会因过热降频而获得较低的
数值。双向 ILP 多缓冲(两条独立的 MD5 依赖链交织执行)在测试环境中,相比于 AVX2 上的单链路带来了约 **+22%** 的性能提升。可通过 `bench.py` 复现结果,并使用 `FASTBRUTE_ISA=scalar|avx2|avx512` 来指定运行的级别。
## 安装说明
Native 扩展是可移植的:它会编译一个标量基准版本以及按文件独立的 AVX2 和 AVX-512 内核,
并在运行时通过 CPUID 选择其一,因此只需一次构建即可在任何 x86-64 CPU 上运行,并在硬件允许时自动向上跃升。构建需要 C/C++ 编译器(在 Windows 上为 MSVC Build Tools;在其他平台上为 gcc 或 clang):
```
pip install .
```
纯 Python 无需构建且会利用每一个核心;当缺少 native 模块时,它会作为自动兜底方案。
## 用法
### Python
```
from fastbrute import find_secret
result = find_secret(challenge, expected) # (b'ax9Q2', 500123) or None
```
命令行(challenge 可以是带有 `0x` 前缀的原始十六进制):
```
python -m fastbrute
```
在 Windows 上,请在 `if __name__ == "__main__":` 内部调用 `find_secret` — 纯 Python 兜底方案使用
了 `spawn`。
### hashcat 方案
打印挑战(challenge)的 `hash.txt` 行和命令:
```
python -m fastbrute.hashcat
```
然后,使用 GPU:
```
hashcat -m 4010 -a 3 -1 ?l?u?d hash.txt ?1?1?1?1?1
```
### Odin
没有任何运行时依赖的独立二进制文件:
```
cd odin
./build.sh # build.bat on Windows
./sf
./sf test # known-answer self-check
```
在 Windows 上,Odin 使用 MSVC 进行链接 — 请从“x64 Native Tools Command Prompt for VS”中构建,或者确保 PATH 中同时包含
Odin 和 MSVC 工具。构建目标以 `x86-64-v3` 为基准线 (AVX2);替换为
`-microarch:native` 可针对构建机器进行优化调优。
## 原理介绍
有关共享算法(前缀折叠、调度
折叠、SoA lanes、寄存器内十六进制扩展、32 位预过滤、任务窃取)、三个后端以及向量内核中的双向 ILP 多缓冲,请参阅 [`docs/ARCHITECTURE.md`](docs/ARCHITECTURE.md)。
## 开发指南
```
pip install . # build the native extension
python tests/test_correctness.py # correctness suite (pinned against hashlib)
ruff check . # lint
python bench.py # benchmark
cd odin && ./build.sh && ./sf test # Odin build + self-test
```
欢迎贡献代码 — 请参阅 [`.github/CONTRIBUTING.md`](.github/CONTRIBUTING.md) 和
[更新日志](CHANGELOG.md)。
## 安全性
请通过 GitHub Security Advisories 私下报告漏洞 — 参见
[`.github/SECURITY.md`](.github/SECURITY.md)。请勿为了安全报告而开启公开的 issue。
## 许可证
[MIT](LICENSE) © 2026 TajuC.
此处针对的结构是 hashcat mode 4010;提供 `hashcat` 方案生成器的目的是,当有 GPU 可用时,您可以将相同的任务交给 GPU 处理。
标签:C++, DOS头擦除, Python, SIMD, UML, 客户端加密, 密码学, 密码破解, 手动系统调用, 数据擦除, 无后门, 逆向工具, 高性能计算