文章总结: 该项目是一个基于MCP协议的JS逆向分析工具集,通过ChromeDevToolsProtocol动态分析网页JavaScript加密逻辑,支持自动识别AES/DES/RSA等算法并生成Python/JS脚本。工具包含31个标准化接口,涵盖浏览器导航、网络拦截、源码分析等功能,专用于CTF和Web安全场景的登录加密还原。 综合评分: 82 文章分类: WEB安全,CTF,安全工具,JS逆向,漏洞分析
一款牛叉的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
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:HACK之道 jenn619 jenn619《一款牛叉的JS 逆向 MCP 工具》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。









评论