Skip to content

抓 Protobuf/gRPC 流量配方 ​

📦 抓 Protobuf 序列化的二进制流量并解析。

思路 ​

Protobuf over TLS 走 SSL,r0capture 能抓到序列化后的二进制明文,但需额外解析。

步骤 ​

1. 抓包 ​

bash
python3 r0capture.py -U -f com.app -v -p out.pcap

2. 识别 Protobuf ​

hexdump 里是二进制;调用栈里有 *Proto*/*toByteArray*/grpc 等帧。

3. 提取二进制 ​

在 Wireshark 里 Follow TCP Stream,保存 raw,得到 Protobuf 二进制。

4. 原始解码(无 .proto) ​

bash
protoc --decode_raw < captured.bin
# 输出字段号和大致值

5. 带 .proto 解码 ​

bash
protoc --decode=package.MessageType message.proto < captured.bin
# 输出可读字段

6. 定位 .proto ​

若没有 .proto:

  • 反编译 App,找 *.proto 文件或 Protobuf 生成的 Java 类
  • 用栈定位序列化代码,反推结构

gRPC 的注意 ​

gRPC 基于 HTTP/2,r0capture 对 HTTP/2 支持有限。详见 HTTP/2 限制。若 gRPC over HTTP/1.1 或自定义 TCP,则可抓。

相关文档 ​

基于 VitePress 构建 · 教学用途