carlmasters02/Crypto-Attack-Lab
GitHub: carlmasters02/Crypto-Attack-Lab
一个用 Python 编写的密码学攻击实验项目,提供五类经典密码学漏洞的可运行演示与讲解,帮助学习者理解常见密码学实现错误及其防御方法。
Stars: 0 | Forks: 0
# 密码学攻击实验
[](https://github.com/carlmasters02/Crypto-Attack-Lab/actions/workflows/ci.yml)
[](LICENSE)
本仓库用于学习 CTF 风格的安全问题与应用密码学。每个演示
都是独立的,并遵循相同的结构:
- **`vulnerable.py`** — 我们自己构建的、故意留下漏洞的小型目标。
- **`attack.py`** — 破解该目标的 exploit。
- **`README.md`** — 介绍现实世界中的错误、浅显易懂的数学原理,以及运行方法。
- **一个测试** — 端到端地证明该攻击确实有效。
## ⚠️ 道德与适用范围
这里的所有内容都**在本地针对本仓库中的玩具程序运行**。不会针对
真实系统、第三方或不属于你的网络。教授这些技术是为了让你能够
*识别并防范*这些错误——这是防守者的工作。除非获得明确授权,
否则不要将它们用于任何测试对象。
这些代码都不能安全地复用于生产环境;它们是故意设计成存在漏洞的。
## 演示列表
| # | 演示 | 教授的错误 | 状态 |
| - | ---- | ---------------------- | ------ |
| 1 | [Padding Oracle](src/crypto_attack_lab/padding_oracle/) | 泄露“padding 是否有效?”会让攻击者在没有密钥的情况下解密 AES-CBC。 | ✅ 已完成 |
| 2 | [Hash Length Extension](src/crypto_attack_lab/length_extension/) | 使用 `hash(secret ‖ message)` 作为 MAC 会让攻击者伪造合法的 tag。 | ✅ 已完成 |
| 3 | [ECB Cut-and-Paste](src/crypto_attack_lab/ecb_cut_paste/) | ECB 会对相同的块进行相同的加密——攻击者可以重新排列密文。 | ✅ 已完成 |
| 4 | [Wiener's Attack (RSA)](src/crypto_attack_lab/wiener/) | 过小的 RSA 私钥指数 `d` 可以通过公钥恢复。 | ✅ 已完成 |
| 5 | [Timing Side-Channel](src/crypto_attack_lab/timing/) | 逐字节比较 secret 会通过响应时间将其泄露。 | ✅ 已完成 |
## 快速开始
```
git clone https://github.com/carlmasters02/Crypto-Attack-Lab.git
cd Crypto-Attack-Lab
python -m venv .venv && source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install -e ".[dev]" # installs the lab + test tools
pytest # run every attack's proof-of-work
```
运行单个演示:
```
python -m crypto_attack_lab.padding_oracle.attack # watch it recover a secret
pytest tests/test_padding_oracle.py -v # just that demo's tests
```
### 使用 Docker(无需本地 Python)
```
docker build -t crypto-attack-lab .
docker run --rm crypto-attack-lab # runs the whole suite
docker run --rm crypto-attack-lab tests/test_wiener.py -v # one demo's tests
# 运行单个 attack script:
docker run --rm --entrypoint python crypto-attack-lab \
-m crypto_attack_lab.padding_oracle.attack
```
## 项目结构
```
crypto-attack-lab/
├── src/crypto_attack_lab/
│ ├── padding_oracle/ # each demo: vulnerable.py, attack.py, README.md
│ ├── length_extension/ # (+ sha256.py, a resumable pure-Python SHA-256)
│ ├── ecb_cut_paste/
│ ├── wiener/
│ └── timing/
├── tests/ # one proof-of-work test file per demo
├── .github/workflows/ci.yml # runs the whole suite on every push
├── Dockerfile # run the lab without a local Python install
├── pyproject.toml # packaging + pytest/coverage config
└── README.md
```
## 开发
```
pip install -e ".[dev]"
pytest # tests + coverage report
```
基于一个专业结构的 Python 模板构建(`src/` 布局,pytest +
覆盖率测试、CI、Docker、MIT 许可证)。请参阅 `CLAUDE.md` 了解仓库规范。
## 许可证
[MIT](LICENSE) — 可免费用于学习目的的使用、修改和分发。
标签:Python, 安全, 安全规则引擎, 密码学, 手动系统调用, 无后门, 请求拦截, 超时处理, 逆向工具, 防御绕过