Vashak/CTF-Toolkit

GitHub: Vashak/CTF-Toolkit

一份面向 CTF 的 Python 密码学与逆向工程利用脚本集合,解决竞赛中常见算法破解与侧信道问题。

Stars: 0 | Forks: 0

# 🗡️ CTF 密码工具包 本仓库包含我在夺旗赛(CTF)竞赛中开发的一组 Python 漏洞利用脚本和工具,用于解决密码学和硬件逆向工程挑战。 该工具包涵盖多种攻击向量,从破解经典算法(RSA、AES)到利用硬件漏洞(LFSR)和侧信道数据。 ## 🧰 工具集 以下是本工具包中可用的漏洞利用脚本索引。文件根据其密码学领域组织到特定目录中。 | 脚本 | 类别 | 漏洞 | 描述 | | :--- | :--- | :--- | :--- | | **`rng_time_seed_exploit.py`** | 伪随机数生成器 | 状态恢复与时间种子 | 通过模逆运算提取自定义 RNG 内部状态,并暴力破解服务器的时间种子。 | | **`mt19937_state_clone.py`** | 伪随机数生成器 | MT19937 状态恢复 | 收集 624 个连续输出以重建 Python Mersenne Twister 的内部状态。 | | **`aes_ctr_recycle.py`** | 分组密码 | 计数器同步与密钥流 | 利用 nonce 长度操纵同步 AES-CTR 计数器并提取精确的密钥流。 | | **`des_ecb_oracle_bypass.py`** | 分组密码 | ECB 确定性 | 通过强制已知填充块泄露隐藏的 OTP 层来利用 DES-ECB 模式。 | | **`cbc_padding_oracle.py`** | 分组密码 | CBC 填充预言机 | 利用详细的 PKCS#7 填充错误逐字节执行解密。 | | **`cbc_bit_flipping.py`** | 分组密码 | CBC 位翻转 | 通过异或操纵 CBC 令牌中的 IV 来篡改解密后的明文,绕过身份验证。 | | **`chacha20_null_leak.py`** | 流密码 | 空字节注入 | 通过注入空字节泄露 ChaCha20 原始密钥流,实现完全解密。 | | **`stream_kpa_sliding.py`** | 流密码 | 已知明文攻击 (KPA) | 利用已知的明文-密文对提取密钥流片段并在目标上滑动。 | | **`xor_stream_collapse.py`** | 流密码 | 已知明文(1 字节) | 使用单个已知明文字节折叠异或方程以恢复静态密钥。 | | **`dsa_linear_nonce.py`** | 非对称加密 | 线性随机数 (*k*) | 通过基于相关随机数构建的模线性方程组恢复 DSA 私钥 *x*。 | | **`rsa_common_factor_gcd.py`** | 非对称加密 | 素数重用(GCD) | 通过计算多个 RSA 模数的最大公约数来利用不良素数生成,提取共享因子。 | | **`timing_side_channel.py`** | 侧信道 | 计时泄露 | 通过测量服务器响应时间泄露利用不安全的字符串比较来泄露标志。 | | **`elf_error_oracle.py`** | 侧信道 | 错误型预言机 | 通过监控标准输出/错误输出中的特定错误字符串暴力破解本地 ELF 二进制文件。 | | **`lfsr_bruteforce.py`** | 硬件/LFSR | 状态空间穷举 | 对 6 位 LFSR 的种子、抽头掩码和端序执行离线暴力破解。 | | `rsa_key_selection.py` | 非对称加密 | 签名伪造(平滑素数) | 通过生成平滑素数利用不安全的 RSA 因子输入,使用 Pohlig-Hellman 算法和 CRT 求解离散对数问题(DLP)。 | ## ⚠️ 免责声明 *所有脚本均仅用于教育目的和已授权的夺旗竞赛。未经明确许可,不得用于真实系统。*
标签:AES, Bit-Flipping, Capture The Flag, CBC, ChaCha20, DES, ECB, LFSR, MT19937, Nonce复用, Padding Oracle, PRNG, Python, Side-Channel, 云资产清单, 加密破解, 块密码, 密码学, 密钥流提取, 已知明文攻击, 手动系统调用, 无后门, 时间种子, 流密码, 滑动攻击, 状态恢复, 硬件漏洞, 逆向工具, 逆向工程, 随机数生成器