一款牛叉的JS逆向MCP工具

admin 2026-06-24 05:38:00 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 该项目是一个基于MCP协议的JS逆向分析工具集,通过ChromeDevToolsProtocol动态分析网页JavaScript加密逻辑,支持自动识别AES/DES/RSA等算法并生成Python/JS脚本。工具包含31个标准化接口,涵盖浏览器导航、网络拦截、源码分析等功能,专用于CTF和Web安全场景的登录加密还原。 综合评分: 82 文章分类: WEB安全,CTF,安全工具,JS逆向,漏洞分析


cover_image

一款牛叉的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 浏览器实例 | headlesschromePathproxywsEndpoint | | browser_close | 关闭浏览器,释放资源 | 无 | | page_navigate | 导航到指定 URL | urlwaitUntil | | page_screenshot | 截取页面截图(base64 返回) | selectorfullPage | | page_get_content | 获取页面 HTML 或元素内容 | selector |

2 网络拦截工具(network.ts)— 6 个

| 工具名 | 功能 | 关键参数 | | — | — | — | | network_enable_intercept | 开启网络请求拦截 | urlPatterns (URL 过滤模式列表) | | network_disable_intercept | 关闭网络拦截 | 无 | | network_get_requests | 获取已拦截的请求列表摘要 | methodurlPatternloginOnly | | 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 | 获取脚本源码(自动美化) | scriptIdbeautifymaxLength | | js_search_in_scripts | 在脚本中搜索关键词/正则 | keywordisRegexcontextLines | | js_get_function_body | 提取指定函数的完整实现 | functionNamescriptId | | js_trace_call_chain | 追踪函数调用链 | functionNamedepth | | js_get_encryption_context | 获取加密函数及其依赖上下文 | functionName |

4 运行时分析工具(runtime.ts)— 5 个

| 工具名 | 功能 | 关键参数 | | — | — | — | | runtime_evaluate | 在页面中执行 JS 代码 | expressionawaitPromise | | runtime_call_function | 调用页面全局函数 | functionNameargs | | runtime_get_global_vars | 获取加密相关全局变量 | pattern (正则过滤) | | runtime_hook_function | Hook 函数,记录调用参数和返回值 | functionName (支持链式如 CryptoJS.AES.encrypt) | | runtime_get_hook_logs | 获取 Hook 调用日志 | functionNameclear |

5 加密检测工具(crypto-detect.ts)— 5 个

| 工具名 | 功能 | 关键参数 | | — | — | — | | crypto_auto_detect | 自动扫描检测加密算法 | 无 | | crypto_analyze_param | 分析参数加密方式 | paramNamesampleValues | | crypto_identify_library | 识别页面使用的加密库 | 无 | | crypto_extract_key | 提取密钥/IV/盐值 | algorithm | | crypto_verify_algorithm | 本地验证加密算法是否正确 | algorithmplaintextexpectedkeyiv |

6 脚本生成工具(script-gen.ts)— 4 个

| 工具名 | 功能 | 关键参数 | | — | — | — | | generate_decrypt_script | 生成解密脚本(Python/JS) | languagealgorithmkeyivpublicKey 等 | | generate_encrypt_script | 生成加密脚本 | 同上 | | generate_brute_script | 生成暴力破解脚本 | 同上 + loginUrlparamName | | script_test_run | 测试运行 JS 脚本 | codetestInput |

支持的算法类型: AES-CBC、AES-ECB、DES、3DES、RSA、MD5、SHA256、Base64、Custom

五、环境要求与安装

1 环境要求

  • Node.js ≥ 18.0.0
  • Google Chrome 浏览器(需安装在本机)

2 安装步骤

# 1. 克隆项目git&nbsp;clone&nbsp;<repo-url>cd&nbsp;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 启动命令

#&nbsp;正式运行(需先 build)npm start#&nbsp;等价于: node build/index.js
# 开发调试(直接运行 TS 源码,无需 build)npm run dev
# 构建项目npm run build
# 使用 MCP Inspector 调试npm run inspector

2 配置 MCP 客户端

在 AI 客户端(如 Cursor、Claude Desktop 等)的 MCP 配置文件中添加:

{&nbsp;&nbsp;"mcpServers": {&nbsp; &nbsp;&nbsp;"js-reverse": {&nbsp; &nbsp; &nbsp;&nbsp;"command":&nbsp;"node",&nbsp; &nbsp; &nbsp;&nbsp;"args": ["e:\\Qwen\\build\\index.js"],&nbsp; &nbsp; &nbsp;&nbsp;"env": {&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;"CHROME_PATH":&nbsp;"C:\\Users\\fangz\\AppData\\Local\\Google\\Chrome\\Application\\chrome.exe",&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;"OUTPUT_DIR":&nbsp;"e:\\Qwen\\output"&nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; }&nbsp; }}

配置完成后,AI 助手即可通过自然语言调用所有 31 个逆向工具。

七、项目地址

https://github.com/jenn619/JS-reverse-mcp


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:HACK之道 jenn619 jenn619《一款牛叉的JS 逆向 MCP 工具》

真高危 网络安全文章

真高危

文章总结: 文档内容仅包含图片占位符和基础元数据(标题’真高危’、发布者’Khan安全团队’、时间’2026年6月23日’及地点’广东’),未提供具体技术细节或
评论:0   参与:  0