antwnakys/hash-cracker
GitHub: antwnakys/hash-cracker
一款纯 Python 标准库实现的哈希识别与字典破解工具,用于演示无盐快速哈希的安全风险并适用于 CTF 场景。
Stars: 0 | Forks: 0
# 🔓 hash-cracker
识别未知哈希的算法,然后通过使用字典重新计算摘要与密码本进行比对,从而**字典破解**该哈希。这是一个关于*为什么快速、无盐的哈希用于密码是不安全的*的实战演示——同时也是一款实用的 CTF 工具。
```
$ python -m hashcrack identify 5f4dcc3b5aa765d61d8327deb882cf99
Hash: 5f4dcc3b5aa765d61d8327deb882cf99
Length: 32 chars
Likely algorithm(s): md5
note: 32 hex chars also matches NTLM (Windows password hash).
$ python -m hashcrack crack 5f4dcc3b5aa765d61d8327deb882cf99
Cracking against 24 word(s), algorithm(s): md5 ...
CRACKED — password is 'password' (md5), after 2 attempts.
```
## 安全启示
MD5、SHA-1 和 SHA-256 是**快速的、通用的**哈希算法。这种速度对于校验和来说非常棒——但对密码来说却糟透了。如果攻击者窃取了一个无盐的 SHA-256 密码哈希数据库,他们可以每秒**离线**哈希数百万个字典单词,并恢复任何出现在密码本中的密码。不需要服务器,没有速率限制,没有任何东西能阻止他们。
这个工具让这一切变得具体可见:给它一个哈希,如果密码很弱,它就能恢复出明文密码。
**修复方法**正是让这种攻击变得不切实际的原因:
- 为每个哈希**加盐**(这样相同的密码哈希出的结果就不同,从而击败预先计算的彩虹表)。
- 使用**缓慢的、内存消耗大的**算法——**bcrypt、scrypt 或 Argon2**——其设计使得每次猜测的代价都很高昂。这将“每秒数百万次”变成了“每秒寥寥几次”,使得字典攻击变得不可行。
(该工具故意只处理*快速、无盐*的哈希——即不安全的那些。检测到的 bcrypt/Argon2 哈希将被报告为超出处理范围,这正是它的目的所在。)
## 用法
```
# 识别 hash 的可能算法:
python -m hashcrack identify
# Dictionary-crack 它(自动检测算法,使用内置 wordlist):
python -m hashcrack crack
# 使用你自己的 wordlist 和/或强制指定算法:
python -m hashcrack crack -w rockyou.txt -a sha256
# Crack 加盐的 hash(在哈希之前将 salt 前置或后置):
python -m hashcrack crack --salt s4lt --salt-mode prefix
```
支持的算法:MD5、SHA-1、SHA-224、SHA-256、SHA-384、SHA-512、SHA-3。
当成功恢复出密码时,`crack` 会以非零状态码退出。
## 工作原理
- **`identify.py`** — 根据哈希的长度和字符集映射到候选算法(例如 32 位十六进制字符 → MD5,并提示 NTLM 具有相同的长度),同时识别带有前缀的格式,如 bcrypt (`$2b$`) 和 Argon2。
- **`crack.py`** — 针对每个单词 × 候选算法,重新计算摘要(可选择带有盐值前缀/后缀)并进行比较。返回第一个匹配的结果。
- **`cli.py`** — 即 `identify` / `crack` 命令。
## 无外部依赖
仅使用 Python 标准库 (`hashlib`)。仅在运行测试时才需要 `pytest`。
## 运行测试
```
pip install pytest
pytest
```
完全离线:哈希在测试中通过 `hashlib` 生成,然后被识别并破解——包括加盐(前缀/后缀)的情况,以及绝对**不可**被破解的强密码测试用例。
## 项目结构
```
hash-cracker/
├── hashcrack/
│ ├── identify.py # algorithm identification by length/charset
│ ├── crack.py # dictionary attack (optional salt modes)
│ └── cli.py # identify / crack commands
└── tests/ # pytest suite (no network)
```
## 道德规范
仅破解你拥有或被明确授权测试的哈希(例如 CTF、你自己的系统)。破解他人的密码哈希可能是违法的。这是一款防御性/教育性工具。
## 许可证
[MIT](LICENSE) — 可自由使用、学习和在此基础上进行构建。
标签:安全规则引擎, 逆向工具