Для тестирования диссектора 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']");