一款牛叉的JS 逆向 MCP 工具
jenn619
jenn619
HACK之道
2026年6月23日 08:30
重庆
在小说阅读器读本章
去阅读
Chrome 浏览器 JS 逆向分析 MCP 工具 —— 专用于 CTF / Web 安全场景中登录框加密逻辑的动态分析与还原
一、项目简介
本项目是一个基于 MCP(Model Context Protocol) 协议的 JS 逆向分析工具集,通过 Chrome DevTools Protocol(CDP)动态分析目标网页中的 JavaScript 加密逻辑,自动识别加密算法、提取密钥,并生成可用的加密/解密脚本。
核心能力:
- 基于 Puppeteer 控制 Chrome 浏览器,动态执行目标页面 JS
- 利用 CDP 协议拦截网络请求、获取脚本源码、Hook 函数调用
- 内置加密算法特征库,支持 AES/DES/RSA/MD5/SHA/SM2/SM4/Base64 等
- 自动生成 Python 和 JavaScript 的加密/解密/暴力破解脚本
- 通过 MCP 协议暴露 31 个标准化工具接口,支持与 AI 助手集成
二、技术栈
| 类别 | 技术 | 说明 |
|---|---|---|
| 语言 | TypeScript 5.7 + Node.js ≥18 | 主开发语言 |
| 协议 | @modelcontextprotocol/sdk v1.29 | MCP 协议 SDK |
| 浏览器 | puppeteer-core v23 | Chrome 自动化控制 |
| AST 分析 | acorn + acorn-walk | JS 语法树解析与遍历 |
| 加密分析 | crypto-js + node-forge | 加密算法验证与还原 |
| 代码美化 | js-beautify | 混淆 JS 代码格式化 |
| 模板引擎 | mustache | 脚本生成模板 |
| 数据校验 | zod v3.23 | MCP 消息 Schema 校验 |
三、项目结构
js-reverse-mcp/├── src/ # 源码目录│ ├── index.ts # 程序入口 - 注册所有工具模块,启动 stdio 传输│ ├── server.ts # MCP Server 创建与配置│ ││ ├── browser/│ │ └── manager.ts # 浏览器单例管理器 - Puppeteer 生命周期管理│ ││ ├── tools/ # MCP 工具模块(共 6 个模块,31 个工具)│ │ ├── navigation.ts # 浏览器导航工具(5 个工具)│ │ ├── network.ts # 网络拦截工具(6 个工具)│ │ ├── source-analysis.ts # JS 源码分析工具(6 个工具)│ │ ├── runtime.ts # 运行时分析工具(5 个工具)│ │ ├── crypto-detect.ts # 加密检测工具(5 个工具)│ │ └── script-gen.ts # 脚本生成工具(4 个工具)│ ││ ├── analysis/│ │ └── crypto-patterns.ts # 加密算法特征库 - 静态模式匹配 + 密文格式识别│ ││ ├── generators/│ │ ├── python-template.ts # Python 脚本模板生成器(AES/DES/RSA/MD5/自定义)│ │ └── javascript-template.ts # JavaScript 脚本模板生成器│ ││ ├── storage/│ │ └── request-store.ts # 请求数据存储 - 内存 + 文件双层持久化│ ││ └── utils/│ └── logger.ts # 日志工具(所有日志走 stderr,不破坏 MCP stdio)│├── build/ # 编译输出目录(tsc 生成)├── output/ # 生成的脚本输出目录├── mcp-config.json # MCP 配置文件示例├── package.json # 项目依赖与脚本└── tsconfig.json # TypeScript 编译配置
四、工具清单
1 浏览器导航工具(navigation.ts)— 5 个
| 工具名 | 功能 | 关键参数 |
|---|---|---|
browser_launch |
启动 Chrome 浏览器实例 | headless , chromePath, proxy, wsEndpoint |
browser_close |
关闭浏览器,释放资源 | 无 |
page_navigate |
导航到指定 URL | url , waitUntil |
page_screenshot |
截取页面截图(base64 返回) | selector , fullPage |
page_get_content |
获取页面 HTML 或元素内容 | selector |
2 网络拦截工具(network.ts)— 6 个
| 工具名 | 功能 | 关键参数 |
|---|---|---|
network_enable_intercept |
开启网络请求拦截 | urlPatterns (URL 过滤模式列表) |
network_disable_intercept |
关闭网络拦截 | 无 |
network_get_requests |
获取已拦截的请求列表摘要 | method , urlPattern, loginOnly |
network_get_request_detail |
获取单个请求完整详情 | requestId |
network_find_login_request |
智能定位登录请求 | keywords |
network_compare_requests |
对比多次请求参数差异 | requestIds (至少 2 个) |
3 JS 源码分析工具(source-analysis.ts)— 6 个
| 工具名 | 功能 | 关键参数 |
|---|---|---|
js_get_all_scripts |
获取页面所有 JS 脚本列表 | 无 |
js_get_script_source |
获取脚本源码(自动美化) | scriptId , beautify, maxLength |
js_search_in_scripts |
在脚本中搜索关键词/正则 | keyword , isRegex, contextLines |
js_get_function_body |
提取指定函数的完整实现 | functionName , scriptId |
js_trace_call_chain |
追踪函数调用链 | functionName , depth |
js_get_encryption_context |
获取加密函数及其依赖上下文 | functionName |
4 运行时分析工具(runtime.ts)— 5 个
| 工具名 | 功能 | 关键参数 |
|---|---|---|
runtime_evaluate |
在页面中执行 JS 代码 | expression , awaitPromise |
runtime_call_function |
调用页面全局函数 | functionName , args |
runtime_get_global_vars |
获取加密相关全局变量 | pattern (正则过滤) |
runtime_hook_function |
Hook 函数,记录调用参数和返回值 | functionName (支持链式如 CryptoJS.AES.encrypt) |
runtime_get_hook_logs |
获取 Hook 调用日志 | functionName , clear |
5 加密检测工具(crypto-detect.ts)— 5 个
| 工具名 | 功能 | 关键参数 |
|---|---|---|
crypto_auto_detect |
自动扫描检测加密算法 | 无 |
crypto_analyze_param |
分析参数加密方式 | paramName , sampleValues |
crypto_identify_library |
识别页面使用的加密库 | 无 |
crypto_extract_key |
提取密钥/IV/盐值 | algorithm |
crypto_verify_algorithm |
本地验证加密算法是否正确 | algorithm , plaintext, expected, key, iv |
6 脚本生成工具(script-gen.ts)— 4 个
| 工具名 | 功能 | 关键参数 |
|---|---|---|
generate_decrypt_script |
生成解密脚本(Python/JS) | language , algorithm, key, iv, publicKey 等 |
generate_encrypt_script |
生成加密脚本 | 同上 |
generate_brute_script |
生成暴力破解脚本 | 同上 + loginUrl, paramName |
script_test_run |
测试运行 JS 脚本 | code , testInput |
支持的算法类型: AES-CBC、AES-ECB、DES、3DES、RSA、MD5、SHA256、Base64、Custom
五、环境要求与安装
1 环境要求
- Node.js ≥ 18.0.0
- Google Chrome 浏览器(需安装在本机)
2 安装步骤
# 1. 克隆项目git clone <repo-url>cd js-reverse-mcp
# 2. 安装依赖npm install
# 3. 编译 TypeScriptnpm run build
3 环境变量
| 变量名 | 说明 | 默认值 |
|---|---|---|
CHROME_PATH |
Chrome 可执行文件路径 | C:\\Users\\fangz\\AppData\\Local\\Google\\Chrome\\Application\\chrome.exe |
OUTPUT_DIR |
脚本输出目录 | ./output |
DEBUG |
设为任意值开启调试日志 | 未设置(关闭) |
六、使用方法
1 启动命令
# 正式运行(需先 build)npm start# 等价于: node build/index.js
# 开发调试(直接运行 TS 源码,无需 build)npm run dev
# 构建项目npm run build
# 使用 MCP Inspector 调试npm run inspector
2 配置 MCP 客户端
在 AI 客户端(如 Cursor、Claude Desktop 等)的 MCP 配置文件中添加:
{ \"mcpServers\": { \"js-reverse\": { \"command\": \"node\", \"args\": [\"e:\\\\Qwen\\\\build\\\\index.js\"], \"env\": { \"CHROME_PATH\": \"C:\\\\Users\\\\fangz\\\\AppData\\\\Local\\\\Google\\\\Chrome\\\\Application\\\\chrome.exe\", \"OUTPUT_DIR\": \"e:\\\\Qwen\\\\output\" } } }}
配置完成后,AI 助手即可通过自然语言调用所有 31 个逆向工具。
七、项目地址
https://github.com/jenn619/JS-reverse-mcp
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。









评论