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 后端,共享同一种算法。 [![CI](https://static.pigsec.cn/wp-content/uploads/repos/cas/39/39faa54be350a1dab8afd3b2fb8c1c83e4d9cff84abfef2374d19a18053687c4.svg)](https://github.com/TajuC/fastbrute/actions/workflows/ci.yml) [![CodeQL](https://static.pigsec.cn/wp-content/uploads/repos/cas/53/539e9a6bf48ad24469a4363bff3aa68124154549e26592783d3d8577f2acbbfc.svg)](https://github.com/TajuC/fastbrute/actions/workflows/codeql.yml) [![OpenSSF Scorecard](https://api.securityscorecards.dev/projects/github.com/TajuC/fastbrute/badge)](https://securityscorecards.dev/viewer/?uri=github.com/TajuC/fastbrute) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE) ![Python](https://img.shields.io/badge/python-3.9%2B-blue) ![Platform](https://img.shields.io/badge/native-x86--64%20(AVX2%20%7C%20AVX--512)-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, 客户端加密, 密码学, 密码破解, 手动系统调用, 数据擦除, 无后门, 逆向工具, 高性能计算