我正在写我的第一个Wireshark解剖器。我正在使用this as an example在Lua中编写它。我的通信协议在响应头中嵌入了命令ID,然后是根据命令ID有所不同的定义明确的有效负载。到目前为止,我一直在构造ProtoFields,以使字段的缩写名称(过滤器中使用的字符串)遵循这样的命名约定
proto_name.command_name.field_name
某些命令具有类似的字段,如以下示例所示
myproto.cmd_update.updateId
myproto.cmd_update_ack.updateId
其中,根据协议,必须使用具有相同update
有效负载的update_ack
命令来确认updateId
命令。理想情况下,我想创建一个Wireshark过滤器,以便可以看到与updateId
字段有关的所有数据包。我尝试创建
myproto.*.updateId == 0x1234
,但这似乎是无效的wireshark过滤器语法。我不想像这样使过滤器显式显示
myproto.cmd_update.updateId == 0x1234 or myproto.cmd_update_ack.updateId == 0x1234
因为在我的实际协议中,还有更多具有相似/相关字段的命令。我可以使用过滤器语法吗?还是应该以不同的方式构造解剖器的ProtoField缩写?
答案 0 :(得分:0)
过滤器行似乎没有通配符语法,因此我在解剖器本身中解决了这个问题。除了myproto.*.updateId
字段之外,我还添加了另一个名为myproto.updateId
的字段(请注意中间缺少通配符)。它的值设置为与完整的字段名相同,这意味着我现在只有一个要搜索的字段名。我还将此字段设置为hidden = true
以将其隐藏。
有点hack,但是给了我我想要的东西。
答案 1 :(得分:0)
您可以尝试使用Wireshark display filter macro。