WireShark 如何捉包 gRPC 消息
自 WireShark 3.4.0, WireShark 提供了 gRPC 协议的支持。本文将简述如果捕获并分析 gRPC 协议消息。
事前准备
本文借用了 gRPC Quick start 的例子,gRPC 服务器监听在 50051 端口。
$ ./build/install/examples/bin/hello-world-server
INFO: Server started, listening on 50051
设置 proto 文件路径
依次打开 Preferences -> Protocols,选择 ProtoBuf 协议。

Preview
点击 "Protobuf search paths" 旁的 Edit 按钮。
在弹出的对话框中,添加 proto 文件所在的路径。记得勾选右边的 "Load all files" 选项。

Preview
捕获 gRPC 消息
回到主界面,此时已经可以开始捕获 gRPC 通信。
为了避免捕获无关流量,开始前,设定 Capture Filter 为 "tcp port 50051",50051 为 gRPC 服务端的地址。

Preview
随便触发一段流量。

Preview
分析 gRPC 消息
默认情况下,界面上显示的都是 TCP 数据包。依次点击菜单栏的 Analyze -> Decode As... (或者右击随便一行)。

Preview
把 50051 端口的 TCP 消息解码成 HTTP2 协议信息。

Preview
完成操作,回到主界面,可以看到 GRPC 消息被识别成功。

Preview
为了更专注于 GRPC 协议的分析,你可以设置 Display Filter 为 "grpc" ,筛选出 gRPC 协议。

Preview