Как вы тестируете диссектор Wireshark? - PullRequest
11 голосов
/ 13 декабря 2010

Когда вы пишете диссектор для Wireshark, как вы его тестируете?Поиск визуального вывода в пользовательском интерфейсе недостаточен для нетривиального протокола.

Есть ли хороший способ для модульного тестирования диссектора?

РЕДАКТИРОВАТЬ:

Структура кадров протокола является динамической.Диссектор должен как-то интерпретировать содержание.

Например, если пятое поле одно, массив байтов следует за шестым полем.Если это два, у вас есть двойной массив, и если это три, вы должны добавить строку с нулем в конце.

Обычно это никогда не происходит в ежедневной работе.Вот почему вам нужны синтетические данные захвата даже с «невозможным» контентом.

Ответы [ 4 ]

9 голосов
/ 27 декабря 2010

Для тестирования диссектора Wireshark я нашел это полезным:

  • Определите набор пакетов, которые должен анализировать анализатор, включая искаженные пакеты
  • Реализация пакетов в виде шестнадцатеричного дампа
  • Определите ожидаемый результат
  • За каждый дамп пакета
    • Создание файлов pcap с text2pcap
    • Запустите диссектор с tshark
    • Извлечение полезной нагрузки из вывода PDML команды tshark
    • Сравнить вывод XML с ожидаемым выводом XML

Это можно улучшить, отфильтровав вывод XML, поскольку PDML также включает байты пакета, что может раздражать, если полезная нагрузка велика или сложна.

Предлагаемые аргументы для исполняемых файлов wireshark:

text2pcap -T 1024,9876 foo.txt foo.pcap
tshark -T pdml -r "foo.pcap"

Чтобы извлечь вывод диссектора, полезно использовать выражение XPATH с классом .NET CLR XmlNode. Это можно сделать, например, таким образом:

XmlNode output = tsharkOutput.SelectSingleNode("packet/proto[@name='foo']");
XmlNodeList refList = referenceDocument.SelectNodes("proto[@name='foo']");
0 голосов
/ 27 августа 2016

Только для обновления поста.

Tshark использует те же плагины, что и Wireshark, и загружает их в те же манера. tshark также используется таким образом в сборке Wireshark CI тесты, посмотрите тестовый каталог источников Wireshark для некоторых тестов примеры сценариев.
https://code.wireshark.org/review/gitweb?p=wireshark.git;a=tree;f=test
- grahamb.

источник: https://ask.wireshark.org/questions/36721/tshark-for-plugin-testing

0 голосов
/ 20 декабря 2010

Вы можете проанализировать вывод tshark .

0 голосов
/ 13 декабря 2010

Я думаю, я старомоден. Основная цель диссектора - преобразовать данные в удобочитаемую форму, поэтому я проверил мои данные, прочитав их.

Полагаю, вы могли бы сделать более автоматизированное тестирование, экспортировав в txt или pdml из file->export, или внедрив какую-нибудь оболочку для тестирования вокруг вашей библиотеки плагинов.

...