内容
# 加密逆向MCP
[](https://www.npmjs.com/package/crypto-reverse-mcp)
[](LICENSE)
> **JavaScript逆向工程的最后一英里。** 一个模型上下文协议(MCP)服务器,用于检测加密算法、识别混淆、重建独立实现、生成SDK,并绕过反调试——设计用于补充像 [js-reverse-mcp](https://github.com/zhizhuodemao/js-reverse-mcp) 这样的浏览器调试MCP服务器。
English | [中文](README_zh.md)
## 为什么存在
现有的JavaScript逆向MCP服务器专注于 **浏览器调试** (断点、网络捕获、脚本分析)。它们帮助您 *找到* 加密函数。但它们不能回答:
- **这是什么算法?** (AES?SM2?自定义?)
- **密钥从哪里来?** (静态?派生?来自服务器?)
- **如何在Python中重现它?**
- **如何生成完整的SDK?**
- **如何绕过阻止断点的反调试?**
`crypto-reverse-mcp` 填补了这些空白。它是一个 **补充** ,而不是替代品——与 `js-reverse-mcp` 配对以实现完整的工作流程:
```
js-reverse-mcp: 打开页面 → 找到脚本 → 设置断点 → 捕获输入/输出
crypto-reverse-mcp: 确定算法 → 提取密钥 → 重建Python → 生成SDK
```
## 功能
| 工具 | 功能描述 |
|------|-------------|
| `detect_crypto` | 识别 AES/DES/RSA/SM2/SM3/SM4/HMAC/MD5/SHA + 密钥/IV源 + 加密模式 |
| `identify_obfuscation` | 检测 webpack/JSFuck/AAEncode/obfuscator.io/packer/control-flow-flattening |
| `extract_crypto_constants` | 查找 S-boxes, 初始哈希值, 轮常数, 曲线参数 |
| `reconstruct_algorithm` | 从JavaScript源代码 + 样例中生成独立的Python/Node实现 |
| `generate_sdk` | 生成具有签名、登录、错误处理的完整Python/Node/Go SDK |
| `bypass_anti_debug` | 生成注入脚本以中和调试器循环、开发工具检测、时间检查 |
## 快速开始
### Claude Desktop / Cursor / VS Code Copilot
```json
{
"mcpServers": {
"crypto-reverse": {
"command": "npx",
"args": ["-y", "crypto-reverse-mcp@latest"]
}
}
}
```
### Claude 代码
```bash
claude mcp add crypto-reverse -- npx -y crypto-reverse-mcp@latest
```
### Codex CLI
```bash
codex mcp add crypto-reverse -- npx -y crypto-reverse-mcp@latest
```
### VS Code Copilot
```bash
code --add-mcp '{"name":"crypto-reverse","command":"npx","args":["-y","crypto-reverse-mcp@latest"]}'
```
## 要求
- Node.js 18+
## 工具详情
### `detect_crypto`
**输入:** JavaScript源代码(字符串)
**输出:** 检测到的加密用法列表,包含:
- 算法名称(AES, RSA, SM2, SM3, SM4, MD5, SHA-1, SHA-256, HMAC, PBKDF2等)
- 类别(对称/非对称/哈希/宏/ KDF/编码)
- 库(CryptoJS, JSEncrypt, sm-crypto, node-forge, jsrsasign, WebCrypto, Node crypto)
- 位置(行:列)+ 代码片段
- 置信度评分(0-100%)
- 密钥源(静态字符串/变量/localStorage/cookie/应用配置)
- IV源(用于对称密码)
- 加密模式(CBC/ECB/GCM/CTR/CFB/OFB)
- 填充(Pkcs7/ZeroPadding/NoPadding)
**检测方法:**
1. 库API模式(50+正则表达式模式)
2. Web Crypto API / Node crypto模块调用
3. 加密常量(AES S-box, SHA-256初始哈希, SM3 IV, SM4 S-box, DES S-box等)
4. 函数名称启发式
### `identify_obfuscation`
**输入:** JavaScript源代码
**输出:** 混淆类型 + 置信度 + 解包策略
**检测:** webpack-bundle, obfuscator.io, JSFuck, AAEncode, JJEncode, dean-edwards-packer, eval-loader, control-flow-flattening, string-array, dead-code-injection, minified, terser-minified
每个检测包含:
- 置信度评分
- 证据(什么模式匹配)
- 解包提示(如何解包)
- 脱混淆策略(逐步)
- 推荐工具
### `extract_crypto_constants`
**输入:** JavaScript源代码
**输出:** 找到的加密常量列表
**检测:**
- AES S-box / 逆S-box / Rcon
- SHA-256初始哈希值 + 轮常数
- SHA-1初始哈希值
- MD5初始值 + T常数
- SM3 IV + Tj常数
- SM4 S-box + FK + CK常数
- DES S-box + IP置换
- SM2 / NIST P-256曲线参数
- CRC32多项式
- Base64字母表
### `reconstruct_algorithm`
**输入:** JavaScript源代码 + 可选输入/输出样例 + 目标语言
**输出:** 自包含的Python或Node实现
**工作原理:**
1. 从源代码模式中检测算法类型
2. 提取参数(密钥,IV,模式,填充)
3. 使用标准库(pycryptodome,gmssl)生成实现
4. 如果提供样例,则包含验证代码
**支持算法:** AES (CBC/ECB/GCM/CTR), DES, TripleDES, MD5, SHA-1, SHA-256, HMAC-SHA256, HMAC-MD5, RSA (PKCS1), SM2, SM3, SM4, Base64
### `generate_sdk`
**输入:** API规范(URL,方法,头部,签名规范,登录规范)+ 目标语言
**输出:** 具有以下功能的完整SDK文件:
- 请求构造与自动签名
- 加密签名生成(HMAC/MD5/自定义)
- 登录流程(带有密码加密钩子)
- 错误处理
- 使用示例
**语言:** Python (requests), Node.js (http/https), Go (net/http)
### `bypass_anti_debug`
**输入:** JavaScript源代码(可选)+ 要绕过的技术 + 输出格式
**输出:** 绕过注入脚本
**技术:**
- `debugger_loop` — 中和循环中的`debugger`语句
- `setInterval_debugger` — 阻止包含`debugger`的`setInterval`回调
- `devtools_window_size` — 修复`outerWidth - innerWidth`检测
- `devtools_console_access` — 防止控制台对象检查
- `timing_check` — 限制`Date.now()` / `performance.now()`增量
- `console_getter_trap` — 撤销`Object.defineProperty(console, ...)`
- `function_toString_check` — 使`Function.toString()`返回原生代码
**输出格式:** `inject_script` (Tampermonkey/代码片段), `fiddler_rule` (Fiddler OnBeforeResponse), `chrome_devtools_snippet` (DevTools代码片段)
## 典型工作流程
```
1. [js-reverse-mcp] 打开新页面 → 导航到目标站点
2. [js-reverse-mcp] 在源代码中搜索“encrypt” / “sign”
3. [crypto-reverse-mcp] 在找到的脚本上检测加密 → 确定AES-CBC
4. [crypto-reverse-mcp] 提取加密常量 → 确认存在S-box
5. [js-reverse-mcp] 在文本上设置断点 → 捕获输入/输出
6. [crypto-reverse-mcp] 使用样例重建算法 → 获取Python代码
7. [crypto-reverse-mcp] 生成SDK → 完成API SDK
8. [crypto-reverse-mcp] 绕过反调试 → 如果被调试器阻止
```
## 本地开发
```bash
git clone https://github.com/crypto-reverse/crypto-reverse-mcp.git
cd crypto-reverse-mcp
npm install
npm run build
npm start
```
### 使用MCP Inspector调试
```bash
npx @modelcontextprotocol/inspector node build/src/index.js
```
### 测试stdio通信
```bash
echo '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18","capabilities":{},"clientInfo":{"name":"test","version":"1.0.0"}}}' | node build/src/index.js
```
## 配置
无需配置。所有工具都是无状态的,并且在离线状态下工作。
## 与其他JavaScript逆向MCP服务器比较
| 功能 | js-reverse-mcp | js-reverse-pro-mcp | mcp-reverse-server | **crypto-reverse-mcp** |
|---------|---------------|--------------------|--------------------|-----------------------|
| 浏览器调试 | ✅ | ✅ | ✅ | ❌ |
| 断点 | ✅ | ✅ | ✅ | ❌ |
| 网络捕获 | ✅ | ✅ | ✅ | ❌ |
| 钩子框架 | ❌ | ✅ | ❌ | ❌ |
| 脱混淆 | ❌ | ✅ (Babel) | ✅ (AST) | ⚠️ (仅识别) |
| JSVMP分析 | ❌ | ❌ | ✅ | ❌ |
| **加密算法检测** | ❌ | ⚠️ (关键词扫描) | ⚠️ | ✅ **(50+模式)** |
| **加密常量提取** | ❌ | ❌ | ❌ | ✅ **(S-box, IV, 曲线)** |
| **算法重建** | ❌ | ❌ | ❌ | ✅ **(Python/Node)** |
| **SDK生成** | ❌ | ❌ | ❌ | ✅ **(Python/Node/Go)** |
| **反调试绕过** | ❌ | ❌ | ❌ | ✅ **(7种技术)** |
| 混淆识别 | ❌ | ❌ | ❌ | ✅ **(11种类型)** |
**一起使用以获得最大覆盖率。** `crypto-reverse-mcp` 设计为互补的。
## 路线图
- [ ] v0.2: `trace_crypto_chain` — 从密文追踪加密到明文
- [ ] v0.2: 改进的最小化代码分析(变量流跟踪)
- [ ] v0.3: WASM加密模块检测
- [ ] v0.3: 通过输入/输出分析识别自定义算法
- [ ] v0.4: Java SDK生成
- [ ] v0.4: RPC风格的API SDK生成(gRPC,GraphQL)
## 许可证
MIT