LUA wiresharkиссектор - объединить данные из 2 пакетов UDP - PullRequest
0 голосов
/ 21 сентября 2019

У меня протокол фиксированного размера (скажем, 100), основанный на UDP .Протокол содержит заголовок, который указывает, где находится первое суб-сообщение complete (место 5 в буфере).Суб-сообщения начинаются с местоположения 10 и могут различаться по размерам.

Также может возникнуть следующий сценарий.Пакет содержит несколько дополнительных сообщений, каждое из которых рассматривается отдельно.Однако, возможно, что одно из вложенных сообщений будет больше, чем остальная часть всей длины пакета (допустим, что эта длина дополнительного сообщения начинается с местоположения 95, а его длина составляет 12 байтов), и поэтому дополнительное сообщение будетразделить на 2 пакета, как показано ниже - первая часть будет в пакете x (5 байтов), а остальная часть - в пакете x + 1 (7 байтов).В таком случае в сообщении x + 1 указатель местоположения первого под-сообщения будет 17 вместо 10.

Protocol structure

В любом случае, в качестве подэлементасообщение N разделено, мой аппликативный SW не может обработать, пока не будет доступно все под-сообщение, и поэтому я хотел бы разбить пакет N (N1 + N2) в пакете x + 1.

В настоящее время яиметь диссектор, который может обрабатывать пакеты, в которых под-сообщение не заполняет весь буфер (т. е. под-сообщения составляют менее 100 байтов), или в случае пакета x он будет анализировать только 5 байтов.в случае пакета x + 1, он начнется с под-сообщения 1 и пропустит N2.

Мне нужна помощь в реализации объединения N1 с пакетом x + 1 (кроме заголовка), чтобы онмогут быть обработаны соответственно.Я обнаружил, что я должен использовать ByteArray для хранения данных между пакетами x и x + 1, но теряюсь с реализацией.Можно было бы привести пример кода с пояснениями.

...