redstone-md/Mapr

GitHub: redstone-md/Mapr

基于 Bun 的前端逆向工程 CLI 工具,通过多智能体 AI 分析流水线爬取并解析目标网站的 JS bundle、WASM 等构建产物,生成包含初始化流程、调用图和重命名建议的结构化 Markdown 报告。

Stars: 1 | Forks: 0

# Mapr ![Mapr 横幅](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/a34e5000f3101025.svg) Mapr 是一个基于 Bun 的原生 CLI/TUI 工具,用于逆向工程前端网站和构建输出。它爬取目标站点,收集可分析的前端构件,对分块代码运行多智能体 AI 分析流水线,并生成一份 Markdown 报告,包含入口点、初始化流程、推断的调用图边缘、恢复的名称、构件摘要和调查提示。 此仓库公开以供源码查看和协作。许可证仍为源码可用且受限。在重用或参与代码库贡献之前,请阅读贡献和许可证部分。 ## 亮点 - 仅限 Bun 的 CLI/TUI,通过 `@clack/prompts` 进行交互式设置 - 支持 OpenAI 和 OpenAI 兼容的提供商 - 支持 OpenAI Codex 系列,具备快速/推理选择功能 - 内置 BlackBox AI、Nvidia NIM 和 OnlySQ 的提供商预设 - 模型发现与可搜索选择 - 在可用时从提供商模型元数据自动检测上下文窗口 - 同源爬虫,具有有界的页面计数和爬取深度 - JS bundle、worker、service worker、WASM 和 source-map 发现 - 针对同源嵌入页面的 Iframe 感知爬取 - 流式 AI 生成,并在 TUI 中实时更新吞吐量 - 针对多兆字节 bundle 的本地 RAG 模式 - 分析在运行中途失败时的部分报告持久化 - 用于 CI 或批处理工作流的无头自动化模式 ## 分析内容 - HTML 入口页面和链接的同源页面以进行发现 - JavaScript bundle、导入的块和内联引导程序 - Service worker 和 worker 脚本 - 通过二进制摘要分析的 WASM 模块 - Source map 和提取的原始源代码(如果可用) - 同源 iframe 页面及其内部发现的 JS/WASM 构件 - 可选的本地词法 RAG,用于处理超大型构件(如多兆字节 bundle) Mapr 不分析图像、字体、音频、视频、PDF、归档文件或其他演示/二进制资产。 ## 运行环境 - 仅限 Bun - 严格模式的 TypeScript - 使用 `@clack/prompts` 的交互式终端 UX - 通过 Vercel AI SDK 使用 OpenAI 或 OpenAI 兼容提供商进行 AI 分析 - 内置 BlackBox AI、Nvidia NIM 和 OnlySQ 的 OpenAI 兼容预设 - 在可用时从提供商模型元数据自动检测模型上下文大小 - 用于自动化的无头 CLI 模式 - 实时爬虫和群集进度,带有智能体级别的跟踪、进度条和流式 TPS 估算 ## 安装 本地开发: ``` bun install bun run index.ts ``` 已发布包使用: ``` npx @redstone-md/mapr --help ``` ## 工作流程 1. 从 `~/.mapr/config.json` 加载或配置 AI 提供商设置 2. 从提供商目录端点发现模型 3. 让用户搜索并选择模型,尽可能自动检测模型上下文大小,并在需要时回退到手动提示 4. 爬取目标网站、同源 iframe 页面和发现的代码构件,具有有界的页面计数和爬取深度 5. 在可能的情况下格式化可分析内容 6. 可选地为超大型构件构建本地词法 RAG 索引 7. 通过流式 JSON 生成在分块的构件内容上运行一个通信分析智能体群集,以便长时间运行的请求保持产生输出 8. 在当前工作目录中生成 Markdown 报告 ## 提供商预设 - `blackbox` -> `https://api.blackbox.ai` - `nvidia-nim` -> `https://integrate.api.nvidia.com/v1` - `onlysq` -> `https://api.onlysq.ru/ai/openai` - `custom` -> 任何其他 OpenAI 兼容端点 ## 使用方法 交互式: ``` bun start ``` 无头模式: ``` npx @redstone-md/mapr \ --headless \ --url http://localhost:5178 \ --provider-preset onlysq \ --api-key secret \ --model mistralai/devstral-small-2507 \ --context-size 512000 \ --local-rag \ --max-depth 3 ``` 列出模型及其检测到的上下文大小(如果可用): ``` npx @redstone-md/mapr --list-models --headless --provider-preset nvidia-nim --api-key secret ``` 有用标志: - `--max-pages ` 限制同源 HTML 页面数 - `--max-artifacts ` 限制获取的可分析构件总数 - `--max-depth ` 限制从入口页面开始的爬虫跳转深度 - `--local-rag` 为超大型 bundle 启用本地词法检索 - `--verbose-agents` 在群集完成事件结束时打印日志 - `--reconfigure` 即使配置已存在,也强制进行提供商设置 ## Swarm 设计 Mapr 对每个块使用一个通信智能体群集: - `scout`:映射构件表面积和运行时线索 - `runtime`:重构初始化流程和调用关系 - `naming`:根据上下文恢复变量和函数名称 - `security`:识别风险、持久性、缓存和操作员提示 - `synthesizer`:将上游笔记合并为最终的块分析 进度直接显示在 TUI 中,包括爬虫获取、深度跳过、发现的嵌套构件、群集智能体/块执行以及提供商流式传输期间的实时每秒令牌数估算。 ## 大型 Bundle 处理 - Mapr 存储选定的模型上下文大小,并从中推导出更大的块预算。 - 当提供商在其模型目录中公开上下文元数据时,Mapr 会自动保存该值。 - 可选的 `--local-rag` 模式构建一个本地词法检索索引,以便非常大的构件(例如 5 MB bundle)可以将更相关的同级片段输入到群集中,而无需强制将整个文件放入一个提示中。 - 格式化不再有硬性的构件大小截止限制。如果格式化失败,Mapr 会回退到原始内容,而不是因大小而跳过。 ## 输出 每次运行都会生成一个 Markdown 文件,命名如下: ``` report-example.com-2026-03-15T12-34-56-789Z.md ``` 如果分析在构件发现或格式化完成后失败,Mapr 仍会写入部分报告,并在文档中包含分析错误。 ## 限制 - AI 生成的调用图和符号重命名是推断性的,而非权威性的。 - WASM 分析基于摘要,除非添加更深入的提升/反汇编。 - 爬取范围有意受同源策略、页面限制、构件限制和深度限制的约束。 - 非常大或高度混淆的 bundle 仍取决于模型质量和提供商行为。 ## 免责声明 - Mapr 生成辅助逆向工程输出,而非程序行为的形式证明。 - AI 生成的调用图、重命名符号、摘要和提示基于推断,可能不完整或错误。 - 网站分析可能包含专有或敏感代码。仅在你有权检查目标时使用 Mapr。 - WASM 支持基于摘要,除非你通过更深入的二进制提升或反汇编扩展项目。 ## 贡献条款 - 本项目公开且源码可用,但它不是开源软件。 - 仅在仓库所有者的条款下接受贡献。 - 通过提交贡献,你同意维护者可以在没有补偿的情况下使用、修改、重新许可和分发你的贡献作为 Mapr 的一部分。 - 除非你拥有贡献代码的权利,否则请勿提交代码。 ## 许可证 本项目的使用受 [LICENSE](./LICENSE) 中的自定义许可证管辖。
标签:Bun运行时, DLL 劫持, Entry Point分析, Headless模式, Multi-Agent系统, Petitpotam, RAG技术, TUI界面, TypeScript, WebAssembly分析, 云安全监控, 人工智能辅助分析, 代码混淆还原, 代码生成, 前端安全, 前端逆向工程, 大语言模型, 安全插件, 密码管理, 构建产物分析, 渗透测试工具, 源码映射, 自动化报告生成, 自动化攻击, 调用图推断, 静态分析