2

我正在为 Wireshark 创建一个自定义解析器。我正在将我的解剖器添加到解剖器表中,就像这样......

udp_table = DissectorTable.get("udp.port")
udp_table:add(7777,my_proto)

但是,不是我的解析器只处理 udp 端口​​ 7777,而是希望它处理任何 udp 端口​​或至少一个非常大的范围。

我怎样才能做到这一点?

它在文档中说,它说我可以用一个范围替换 7777 (模式),但我不确定它的语法是什么。

谢谢!

4

1 回答 1

3

理论上,使用 Lua 字符串作为 的第一个参数添加一个范围dissectortable:add(),其中字符串是一个范围,例如“ 7777-8888”。但是,现在可能存在阻止该工作的错误(请参阅此 ask.wireshark.org 线程)。

无论如何,你不应该你的解析器在每个UDP 端口上运行,因为它不会是真的,并且会与一大堆众所周知的 UDP 端口使用(例如,DNS、UPNP、SIP 等)发生冲突。作为动态使用的,例如用于 RTP 和 RTCP。

也许你真正想做的是有一个启发式解析器?如果是这样,您可以从wireshark v1.11.3 及更高版本(最新的wireshark 版本是1.12rc2)开始使Lua 解析器成为启发式解析器。请参阅proto:register_heuristic 的 API 文档,以及Lua 示例页面顶部的示例dissector.lua 脚本

于 2014-06-24T13:22:53.333 回答