carlmasters02/Crypto-Attack-Lab

GitHub: carlmasters02/Crypto-Attack-Lab

一个用 Python 编写的密码学攻击实验项目,提供五类经典密码学漏洞的可运行演示与讲解,帮助学习者理解常见密码学实现错误及其防御方法。

Stars: 0 | Forks: 0

# 密码学攻击实验 [![CI](https://static.pigsec.cn/wp-content/uploads/repos/cas/ad/ad5834178f7599af9fdda11629d49cae07f2997beec49821b2920eff5bfd50e7.svg)](https://github.com/carlmasters02/Crypto-Attack-Lab/actions/workflows/ci.yml) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](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, 安全, 安全规则引擎, 密码学, 手动系统调用, 无后门, 请求拦截, 超时处理, 逆向工具, 防御绕过