Ситуация
Я пишу специальный диссектор Луа для протокола. Мы фиксируем protocl с помощью специального оборудования, которое дает нам файлы PCAP. Протокол состоит из 64-битных пакетов.
Протокол имеет бит «стартовая транзакция», который указывает начало 8-пакетной транзакции, и в зависимости от того, где мы находимся в этой транзакции, части пакета имеют различное значение, то есть в пакете с битом стартовой транзакции. пакет начинается с заголовка , затем следующий пакет содержит код сообщения в том же месте. Всего существует 8 различных способов интерпретации одного и того же смещения пакета в зависимости от того, где мы находимся в транзакции.
Я хочу разобрать протокол, и поле зависит от того, где мы находимся в транзакции.
Что я пробовал
Я создал простую переменную счетчика последовательности вне функции анализатора, которая сбрасывается, если встречается бит запуска транзакции. и это считается до 8. В зависимости от этого счетчика я выбираю, какие протополи я должен добавить в дерево.
Этот вид работ, если я показываю все различные поля в виде столбцов, они имеют правильные значения в нужных местах. Тем не менее, когда я щелкаю по пакету, детали пакета показывают нет или неправильные имена полей, в зависимости от порядка, в котором я щелкаю пакеты. Например, если я щелкаю пакет с «началом транзакции», тогда информация о пакете правильно отображает данные как «заголовок». Однако, если я затем щелкну любой другой пакет, поле будет показано как «код сообщения».
Кажется, что порядок обнаружения в поле информации о пакете не фиксирован, он использует порядок, в котором я щелкаю пакеты, а не порядок, в котором они были захвачены.
Подходит ли wireshark для того, чтобы основывать способ, которым он анализирует определенный пакет, исключительно на том порядке, в котором он был получен?