mcpField
C
ctf-crypto

ctf-crypto

github.com/wgpsecSecurity1.8k54 installsUpdated 5d ago
Repository

About ctf-crypto

ctf-crypto is a cryptography attack reference skill for CTF participants. It organizes approaches by problem type and keeps detailed material in reference files that can be loaded as needed.

Key features

  1. 01Attack paths by cipher type
  2. 02Coverage of RSA, ECC, symmetric crypto, and PRNGs
  3. 03Decision tree and attack quick references
  4. 04Common tools, commands, and Python libraries

Use cases

  1. 01Identify likely approaches for a CTF crypto challenge
  2. 02Look up RSA, ECC, or padding-oracle techniques
  3. 03Choose tools for constraint solving or RNG analysis

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/wgpsec/aboutsecurity --skill ctf-crypto

After installing, type/ctf-cryptoin Claude Code to confirm it loaded.

Bundled files

References and scripts installed along with SKILL.md.

evals/
evals.json
recall.json
references/
advanced-math.md
classic-ciphers.md
ecc-attacks.md
exotic-crypto.md
historical.md
lattice-and-lwe.md
modern-ciphers-2.md
modern-ciphers-3.md
modern-ciphers.md
prng.md
rsa-attacks-2.md
rsa-attacks.md
stream-ciphers.md
zkp-and-advanced.md

Details

From the project README

CTF 密码学攻击

深入参考

以下参考资料按需加载,根据识别出的具体方向选择对应文件:


分类决策树

题目涉及加密?
├─ 古典密码(Caesar/Vigenere/XOR/替换) → [references/classic-ciphers.md](references/classic-ciphers.md)
├─ 对称加密(AES/DES/RC4/分组密码)
│  ├─ ECB → 块重排 / 逐字节oracle
│  ├─ CBC → 比特翻转 / Padding Oracle
│  └─ 流密码 → LFSR / Berlekamp-Massey
├─ RSA
│  ├─ 小e → 开根号         ├─ 小d → Wiener
│  ├─ p≈q → Fermat          ├─ 公共模数 → ExtGCD
│  └─ 部分已知因子 → Coppersmith (SageMath)
├─ ECC
│  ├─ 阶有小因子 → Pohlig-Hellman
│  ├─ 奇异曲线 → 映射到加法群
│  └─ ECDSA nonce重用 → 恢复私钥
├─ 格/LWE → Babai CVP / LLL 短向量
├─ PRNG → MT19937 untemper / LCG / V8 xs128p
├─ ZKP → 碰撞/预测盐 / Z3求解
└─ 哈希 → 长度扩展(hashpump) / 生日攻击

速查工具

场景工具/命令
RSA 自动攻击RsaCtfTool.py -n N -e E --uncipher C
替换密码quipqiup.com
SageMathsage -python script.py(Coppersmith/ECC/格)
Z3 约束求解pip install z3-solver → BitVec / Int
PRNG MT19937pip install not_random(浮点恢复状态)
V8 Math.randomd0nutptr/v8_rand_buster
Padding OraclePadBuster / padding-oracle 库
XOR 操作from pwn import xor

常用 Python 库

pip install pycryptodome z3-solver sympy gmpy2

RSA 基础速查

from Crypto.Util.number import inverse, long_to_bytes
phi = (p-1)*(q-1)
d = inverse(e, phi)
m = pow(c, d, n)
print(long_to_bytes(m))

常见模式

  • RSA 乘法同态:未填充 RSA S(a)*S(b) mod n = S(a*b),可组合签名伪造
  • CBC Padding Oracle:~4096 次查询解密一个16字节块
  • Bleichenbacher (ROBOT):RSA PKCS#1 v1.5 填充oracle → ~10K 次查询恢复明文
  • CRC32 线性:追加4字节可伪造任意CRC32签名
  • 哈希长度扩展:Merkle-Damgard 结构 hash(SECRET||data) 可追加数据

RSA 小指数攻击

  • 当 e=3 时,若 m^3 < n(不取模、没有模运算),可直接开立方恢复明文

Padding Oracle 细节

  • 每字节最多 256 次尝试,暴力尝试所有可能值

Comments

Markdown supported