koushikchowdary6/sha1-password-cracking-project

GitHub: koushikchowdary6/sha1-password-cracking-project

一个多进程 Python 工具,通过字典攻击和模式枚举从无盐 SHA-1 哈希中恢复明文密码,用于演示 SHA-1 不适合密码存储的安全教学目的。

Stars: 1 | Forks: 0

# SHA-1 密码破解工具 🔓 一个多进程 Python 工具,用于演示为何 SHA-1 不适合用于 密码存储:无盐的 SHA-1 哈希很容易被字典和 基于模式的攻击攻破。给定一个包含 `user_id ` 对的文件,它会 恢复明文密码并报告成功率。 ## 工作原理 破解器按顺序运行七种策略,并在成功恢复哈希值后提前停止: 1. **纯数字** — 长度至多为 `MAX_DIGIT_LEN` 的所有数字密码 2. **常见日期** — 跨越多个年份范围的 `YYYYMMDD`、`DDMMYYYY`、`MMDDYYYY` 3. **字典单词** — 直接查词表 4. **单词变形** — 首字母大写、全大写、反转、重复 5. **单词 + 数字组合** — 在前后追加数字及分隔符(跨 CPU 核心并行化) 6. **Leetspeak** — `a→4/@`、`e→3`、`i→1/!`、`o→0`、`s→5/$` 等 7. **词对组合** — 由常见分隔符连接的两个单词(并行化) 并行策略使用 Python 的 `multiprocessing.Pool`,其大小根据 机器的 CPU 数量决定。 ## 运行说明 ``` python3 project.py ``` 它会读取 `passwords.txt`(目标哈希)和 `dictionary.txt`( 词表),这两者均作为小型演示数据集包含在内,并将恢复的 密码写入 `cracked_passwords.txt`。 ### 输入格式 `passwords.txt` — 每行一个目标: ``` 1 7c4a8d09ca3762af61e59520943dc26494f8941b 2 9bcea4483a009e15aa649981c183c5819dd9e185 ``` `dictionary.txt` — 每行一个候选单词。 ## 演示结果 针对内置的 10 条演示数据(每种策略对应一个密码),该工具 在典型的笔记本电脑上只需**约 2 秒即可恢复 10/10**: ``` --- Cracking Summary --- Total hashes loaded: 10 Total passwords cracked: 10 Hashes remaining: 0 ``` ## 调优 `project.py` 顶部的两个常量用于在覆盖率和运行时间之间进行权衡: | 常量 | 默认值 | 效果 | |---|---|---| | `MAX_DIGIT_LEN` | 6 | 暴力破解的最长纯数字密码(每增加 1 速度约慢 10 倍) | | `MAX_APPEND_DIGITS` | 3000 | 在单词+数字组合中尝试的数字范围 | 对于更难破解的目标可以调高它们,但请注意,仅 `MAX_DIGIT_LEN = 8` 就意味着 需要进行 10^8 次哈希计算——耗时是分钟级,而非秒级。 ## 安全启示 这正是现代系统不使用快速、无盐的 哈希来存储密码的原因。请使用缓慢、带盐且对内存要求高的算法 —— **Argon2id**(或 bcrypt/scrypt) —— 这样每次猜测的成本都很高,且预计算/彩虹表也会失效。 此外,SHA-1 存在已知的碰撞弱点(SHAttered,2017),并且已 被弃用于安全用途。 ## 作者 Koushik Chowdary — [LinkedIn](https://linkedin.com/in/koushik-chowdary) · [GitHub](https://github.com/koushikchowdary6)
标签:DOS头擦除, Python, SysWhispers, VEH, 多进程, 字典攻击, 密码破解, 无后门, 逆向工具