mcpField
C
ctf-crypto

ctf-crypto

github.com/wgpsecセキュリティ1.8k54 回インストール5 日前に更新
リポジトリ

ctf-crypto について

ctf-cryptoは、CTF参加者向けの暗号攻撃リファレンススキルです。問題の種類ごとに方針を整理し、詳細資料を必要に応じて読み込めます。

主な機能

  1. 01暗号の種類別の攻撃方針
  2. 02RSA、ECC、共通鍵暗号、PRNGを網羅
  3. 03判断ツリーと攻撃の早見表
  4. 04ツール、コマンド、Pythonライブラリの一覧

活用シーン

  1. 01CTF暗号問題の攻撃方針の特定
  2. 02RSA、ECC、パディングオラクル手法の確認
  3. 03制約ソルバーや乱数解析用ツールの選択

インストール

コマンドをコピーしてターミナルで実行します。

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

インストール後、Claude Code で/ctf-cryptoを入力して読み込まれたか確認します。

同梱ファイル

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

詳細

プロジェクトの 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 次尝试,暴力尝试所有可能值

コメント