如何在Lua中创建适合链接的Wireshark分解器表?

我正在尝试解析封装在UDP数据包中的专有协议。该协议是多层的,最底层有一个非常简单的头部,其中包含一个类型字段,用于指示更高层协议的格式。

将我的最底层协议链接到UDP端口号很容易,有很多示例可以follow。但我不明白如何创建基于类型字段的DissectorTable,以便我可以链接更高级别的协议。

我有每个低级别协议字段的 ProtoField 对象,可用于在树中显示。如何将一个DissectorTable及其Dissectors与类型字段中的值关联起来?在更高级别的协议添加自己之前,我是否需要填充DissectorTable?

点赞
用户3395060
用户3395060

你应该使用适当的参数使用DissectorTable.new()函数为你的协议创建一个新的DissectorTable。这应该在proto.dissector()定义之外完成,然后在你的proto.dissector()函数内通过使用相应的参数调用mydissectortable:try()来调用创建的表。其他的Lua解析器(即你的高级解析器)会像正常的基于C代码的解析器表一样注册到这个表中,使用DissectorTable.get()dissectortable:add()

2015-06-28 18:04:50