一键导入
crypto-recon-symmetric
Specialist agent for detecting ALL symmetric encryption/decryption in downloaded JS files. Part of crypto-recon pipeline.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Specialist agent for detecting ALL symmetric encryption/decryption in downloaded JS files. Part of crypto-recon pipeline.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Download all JS/WASM/CSS assets from a target URL using cloudscraper. Saves to output/[domain]/. Called by crypto-recon-orchestrator.
Specialist for EVM blockchain cryptography — EIP-712, personal_sign, ABI encoding, keccak256, ethers.js/wagmi/viem/web3.js. EVM chains only (Ethereum, Polygon, BSC, Arbitrum, etc.). For non-EVM use crypto-recon-web3-solana, crypto-recon-web3-cosmos, or crypto-recon-web3-starknet.
Verifies reconstructed APK signing logic against live app traffic. Uses HAR test vectors or ADB+mitmproxy. Extends crypto-recon-debugging for Android context.
Specialist for finding ALL cryptography in decompiled Android APK — Java source (jadx) and Smali bytecode (apktool). Covers OkHttp interceptors, Retrofit, HMAC, AES, MD5, custom signing, ProGuard-obfuscated code.
Master orchestrator for Android APK reverse engineering. Fully autonomous — decompiles APK, spawns 11 parallel specialists, collects findings, writes report, reconstructs Python code. No intermediate stops. Accepts .apk/.apkm/.xapk + optional HAR.
Builds a complete, clean, standalone Python script for a full API flow (login, register, place bet, etc). Accepts input from reconstruct_*.py files AND from APK flow mappers (Retrofit catalog, auth chain trace, API endpoint list). Called automatically after analysis — no user prompting needed. Uses superpowers executing-plans and verification-before-completion.
| name | crypto-recon-symmetric |
| description | Specialist agent for detecting ALL symmetric encryption/decryption in downloaded JS files. Part of crypto-recon pipeline. |
aes-patterns.md — AES deep dive: all modes (CBC/ECB/GCM/CTR), key sources, IV sources, Web Crypto, Android Cipher, Python templatesstream-cipher-patterns.md — RC4, ChaCha20, DES/3DES, SM4, Blowfish, custom XOR stream ciphersFind every symmetric cipher (block and stream) used in the target's JavaScript. Document algorithm, mode, key, IV, padding, and full usage context.
AES.encrypt(, AES.decrypt(
CryptoJS.AES.encrypt(, CryptoJS.AES.decrypt(
forge.cipher.createCipher('AES-CBC'
forge.cipher.createCipher('AES-CTR'
forge.cipher.createCipher('AES-GCM'
forge.cipher.createCipher('AES-ECB'
subtle.encrypt({name: 'AES-CBC'
subtle.encrypt({name: 'AES-GCM'
subtle.encrypt({name: 'AES-CTR'
subtle.encrypt({name: 'AES-CFB'
createCipheriv('aes-128-cbc'
createCipheriv('aes-192-cbc'
createCipheriv('aes-256-cbc'
createCipheriv('aes-128-gcm'
createCipheriv('aes-256-gcm'
createCipheriv('aes-128-ecb'
CryptoJS.lib.SerializableCipher
sjcl.cipher.aes
nacl.secretbox(
DES.encrypt(, DES.decrypt(
TripleDES.encrypt(, TripleDES.decrypt(
CryptoJS.DES.encrypt(, CryptoJS.DES.decrypt(
CryptoJS.TripleDES.encrypt(
forge.cipher.createCipher('DES-CBC'
forge.cipher.createCipher('3DES-CBC'
createCipheriv('des-cbc'
createCipheriv('des-ecb'
createCipheriv('des-ede3-cbc' ← 3DES
RC4.encrypt(, RC4.decrypt(
CryptoJS.RC4.encrypt(, CryptoJS.RC4Drop.encrypt(
createCipheriv('rc4'
createCipheriv('rc2-cbc'
arc4(, ARC4(
ChaCha20(, chacha20(
XChaCha20(
Salsa20(, salsa20(
createCipheriv('chacha20'
createCipheriv('chacha20-poly1305'
nacl.stream(
Blowfish(, blowfish(
Twofish(, twofish(
Camellia(, camellia(
CAST5(, IDEA(
SM4(, sm4( ← Chinese standard, common in CN-origin apps
ARIA(, aria( ← Korean standard
Serpent(
createCipheriv('camellia-256-cbc'
createCipheriv('bf-cbc' ← blowfish
CryptoJS.Rabbit.encrypt(
CryptoJS.RabbitLegacy.encrypt(
xorEncrypt(, xorDecrypt(, xorCipher(
function.*xor.*encrypt
\.map\(.*charCodeAt.*\^
for.*charCodeAt.*\^.*fromCharCode
Identify cipher, mode, and key size
Extract the key
Extract the IV / Nonce
Extract padding scheme
Determine what is encrypted
Determine encryption direction
Find the key source — trace backwards from encryption call:
encryptRequest(data)
└── key = getStoredKey() ← where does key come from?
└── localStorage.getItem('_k') ← stored in localStorage
| Pattern | Flag |
|---|---|
| AES-ECB mode | SECURITY FLAW: ECB leaks patterns |
| Static/hardcoded IV | SECURITY FLAW: IV reuse breaks security |
| Hardcoded encryption key | CRITICAL: Extract and report key verbatim |
| Client-side encryption of credentials | Note: defeats purpose if key is in JS |
| Weak key derivation (no iteration/salt) | SECURITY FLAW |
SYMMETRIC ENCRYPTION FINDINGS
==============================
[S1] AES-256-CBC — HIGH
File: common.modules-6d4292d1.js
Line: 1204
Function: encryptPayload(data, userKey)
Cipher: AES-256-CBC
Key: Derived from user token via SHA256 first 32 bytes
IV: Random 16 bytes, prepended to ciphertext
Padding: PKCS7 (CryptoJS default)
Direction: Encrypt (outgoing requests)
Callers: sendBetRequest:3401, sendWithdraw:5102
Notes: Key is derived from login response token. IV is random per call.
[S2] DES-ECB — HIGH
File: page-login-abc123.js
Line: 891
Function: encryptPassword(pwd)
Cipher: DES-ECB
Key: HARDCODED: "12345678"
IV: N/A (ECB mode)
Padding: PKCS7
Direction: Encrypt only (password before login POST)
Callers: submitLoginForm:1100
Notes: CRITICAL — hardcoded DES key, ECB mode. Trivially breakable.
Key value: "12345678"