Я пишу свой первый диссектор из Wireshark.Я пишу это на Lua, используя это как пример .Мой протокол связи встраивает идентификатор команды в заголовок ответа, за которым следуют четко определенные полезные нагрузки, которые различаются в зависимости от идентификатора команды.До сих пор я структурировал поля 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 моего диссектора по-другому?