th3-bl1nd3r/burp-polyproto

GitHub: th3-bl1nd3r/burp-polyproto

一款 Burp Suite 扩展,能自动剥离多层传输编码与内容编码(gRPC、压缩、protobuf 等),为安全测试提供可读且可编辑的 API 流量树状视图。

Stars: 0 | Forks: 0

# PolyProto **一款适用于 Burp Suite 的厂商无关 API 流量解码器。** ![许可证](https://img.shields.io/badge/license-MIT-E89658) ![Java](https://img.shields.io/badge/Java-17-2A3450) ![Burp](https://img.shields.io/badge/Burp-Montoya%20API-2A3450) PolyProto 为每个 HTTP 请求/响应和 WebSocket 消息添加了一个 **Decoded** 标签页,它会自动检测并将整个堆栈——传输层帧、压缩和正文格式——剥离为一个可读且**可编辑**的树状结构。它由用户管理的**规则引擎**驱动,因此特定于厂商的行为是*数据*,而不是代码。专为逆向工程和渗透测试在现代移动/Web API 隐藏在多层编码之后的 payload 而构建。 ## 它的功能 对于任何消息,**Decoded** 标签页都会自动剥离以下各层: | 层级 | 覆盖范围 | |---|---| | **传输层帧** | HTTP 分块、gRPC(5字节前缀)、gRPC-Web(`+text` base64 + trailer)、字节跳动 **Frontier** WebSocket 帧 | | **内容编码 (Content-encoding)** | gzip、deflate(zlib + raw)、**brotli**、**zstd**,以及用于 Frontier payload 的 IM `__lz4` 块 | | **正文格式** | protobuf、JSON、form-urlencoded、**form + embedded-JSON** (GraphQL)、XML | - **可折叠的 protobuf 树**,具有按 token 着色的功能、`bytes[N]` 芯片标记,以及 varint 上的实时时间戳提示。 - **右键点击 → 将此字段解码为** protobuf / gzip / base64 / utf-8 —— 将一个不透明的 blob 就地转换为子树。另外支持复制值 / 十六进制 / 字段路径。 - **编辑 + 重放 (Replay)**:切换到文本视图,进行编辑,使用 `Ctrl/Cmd+Z` 撤销/重做,并从 Repeater 发送 —— PolyProto 会穿透**每一层**(重新压缩、重新分块、重新组帧)进行重新编码。Brotli / dictionary-zstd 将回退为 identity 并丢弃编码头。 - **查找栏**,用于搜索*已解码*的文本。 ## 安装 **从发布版本安装:** 从 [Releases](../../releases) 下载 `polyproto.jar`,然后在 Burp 中 → **Extensions → Add → Java** → 选择该 jar 包。 **从源码构建:** ``` gradle shadowJar # -> build/libs/polyproto.jar (bundles brotli + aircompressor, ~0.5 MB) ``` 需要 JDK 17。Montoya API 为 `compileOnly`(由 Burp 在运行时提供);纯 Java 解码器(`org.brotli:dec`、`io.airlift:aircompressor`)被打包到 shadow jar 中。 ## 规则 所有特定于厂商的内容都是一个 JSON 规则(内置 `builtins.json`,持久化保存到 Burp 首选项,可在 **PolyProto** suite 标签页中编辑)。规则匹配 host / path / method / header / content-type,并且可以: - **强制使用 pipeline** (`["dechunk?","gzip?","protobuf"]`) 或将其保留为 `auto`, - 应用 **schema pack**(protobuf 字段名称), - **重写请求头**(例如,击败专有的 `Accept-Encoding`,以便服务器回复 gzip), - 重新计算**签名**(默认关闭 —— 即“它到底被检查了吗?”测试), - 提取**标签**(例如 GraphQL 操作名称)并显示在标签页上。 内置规则重现了旧的 TikTok + Meta 工具,添加了通用的 gRPC/gRPC-Web 以及自动 catch-all。 ## 架构 一个 JSON 规则集 → 最高优先级的匹配选择一个由可逆 `Stage` 组成的 pipeline(`framing → coding → format`) → 可编辑文本;`encode` 会反转记录的 trace。Auto-detect 只是最低优先级的规则。完整设计请参阅 [DESIGN.md](DESIGN.md)。 ``` core/ engine, pipeline, detector, message model stage/ reversible codecs (framing / coding / format) rule/ rule model, registry, JSON codec, label extractor pack/ schema/envelope registry + vendor packs (field names) frontier/ Frontier WebSocket Frame / FrameText ui/ colored CodeView + find/undo, ProtoTreeView, Rules tab burp/ extension entry, Montoya adapters, editors, HTTP handler ``` ## 尚未(完全)覆盖 Connect-RPC / Twirp 组帧;MessagePack / CBOR 正文;brotli 和 dictionary-zstd 的忠实重新压缩(需要原生库);Thrift / FlatBuffers(需要 schema)。所有这些都可以作为新的 `Stage` 轻松添加 —— 欢迎 PR。 ## 免责声明 PolyProto 是一款**防御/研究**工具,仅用于**授权的**安全测试 —— 您自己的应用程序、具有明确范围的漏洞赏金计划、CTF 或实验室环境。它**不隶属于、也不受** TikTok、字节跳动、Meta、Google 或任何其他厂商**认可或赞助**。内置的包是基于公开逆向工程得出的 protobuf **字段名称覆盖层**;它们不包含任何专有代码或凭证。您需自行负责遵守适用于您解码的任何流量的服务条款和法律法规。 ## 许可证 [MIT](LICENSE) © 2026 Trần Gia Nghĩa ([@th3-bl1nd3r](https://github.com/th3-bl1nd3r))
标签:API逆向分析, Burp Suite插件, JS文件枚举, Python工具, 后台面板检测, 域名枚举, 数据解码, 网络流量分析