如何解析Wireshark中的protobuf数据包

时间:2017-02-22 14:55:25

标签: python lua wireshark lua-table tshark

我的目标是拥有一个可以解析基于protobuf(UDP)的协议的插件/解剖器。
我在网上找到了一个用于协议缓冲消息的自动生成Wireshark / Ethereal解剖器插件:https://code.google.com/archive/p/protobuf-wireshark/
当我按照ReadMe文件时,我跳过“STEP 1:从源安装Wireshark”,因为我安装了它(版本1.12.3)。

第2步:准备协议缓冲区 -

  

这一步我没有说,我如何安装 libprotobuf 和   在哪里?

第3步:更新wireshark配置文件 -

  

我不确定什么是“wireshark_src_dir”

我创建了一个wireshark.conf文件,其中包含:
wireshark_src_dir :C:\ Program Files(x86)\ Wireshark
wireshark_install_dir :C:\ Program Files(x86)\ Wireshark
wireshark_version :1.12.3

第4步:运行make_wireshark_plugin.py - 对于该步骤,我下载并安装了python-3.6.0-amd64.exe。

  

当我运行这个时,我得到一个错误:Traceback(最近的电话   last):文件“C:\ ProtoBuff \ protobuff \ make_wireshark_plugin.py”,行   91,在       f = open(“configure.in”,“r”)FileNotFoundError:[Errno 2]没有这样的文件或目录:'configure.in'。

     

我从下载的软件包中不存在此文件   github上。我从哪里得到这个文件?我需要创建这样的吗?什么是   这个make_wireshark_plugin.py会生成吗?

步骤5:创建原型配置文件 - 所有原型配置文件都需要位于/ usr / share / wireshark / protobuf或 $ HOME / .wireshark / protobuf的。

  

我在wireshark中没有共享文件夹和protobuf文件夹   安装路径。我可以简单地放入原型配置文件   插件文件夹?

2 个答案:

答案 0 :(得分:3)

您可以使用此代码,而不需要编译任何内容:https://github.com/128technology/protobuf_dissector

答案 1 :(得分:3)

从3.2.0版开始,Wireshark已添加有关Protobuf和gRPC解剖器的新功能:

  • Protobuf文件(* .proto)现在可以配置为启用更精确的序列化Protobuf数据解析(例如gRPC)。
  • 现在可以通过支持HTTP2流模式重组功能来解析流gRPC方法的消息。
  • 用户可以指定protobuf搜索路径(其中具有* .proto文件),并且可以在Protobuf协议首选项处映射到protobuf消息类型的UDP端口。
  • 如果您自己的解剖器需要调用protobuf解剖器,则可以通过数据参数(在C中)或pinfo-> private_table [“ pb_msg_type”](在lua中的pinfo.private [“ pb_msg_type”])将消息类型传递给Protobuf解剖器。

另外两个新功能将在3.3.0或3.4.0中发布:

  • Protobuf字段可以分解为wireshark(标题)字段,允许用户在过滤器工具栏中输入Protobuf字段的全名或消息以进行搜索。
  • 基于Protobuf的Dissector可以将自己注册到新的“ protobuf_field”解剖器表中,该表以字段的全名作为关键字,用于进一步解析BYETS或STRING类型的字段。

参考: