当您为Wireshark编写解剖器时,您如何测试它?在UI中寻找视觉输出对于一个非平凡的协议是不够的。
解剖器的单元测试是否有好方法?
修改
协议帧的结构是动态的。解剖器必须以某种方式解释内容。
例如,如果第五个字段是1,则字节数组作为第六个字段。如果它是两个你有一个双数组,如果它是三个你必须添加一个零终止字符串。
这通常不会发生在日常工作中。这就是为什么你需要合成捕获数据,即使是“不可能”的内容。
答案 0 :(得分:9)
为了测试Wireshark解剖器,我发现这很有用:
text2pcap
tshark
这可以通过过滤XML输出来改进,因为PDML还包括数据包字节,如果有效负载很大或/和复杂,可能会很烦人。
wireshark可执行文件的建议参数是
text2pcap -T 1024,9876 foo.txt foo.pcap
tshark -T pdml -r "foo.pcap"
要提取解剖器输出,使用带有.NET CLR类XmlNode的XPATH表达式很有用。这可以通过例如完成。这样:
XmlNode output = tsharkOutput.SelectSingleNode("packet/proto[@name='foo']");
XmlNodeList refList = referenceDocument.SelectNodes("proto[@name='foo']");
答案 1 :(得分:1)
您可以使用Scapy或PacketSender之类的东西来生成测试数据包。
答案 2 :(得分:0)
您可以解析tshark的输出。
答案 3 :(得分:0)
仅用于更新帖子。
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
答案 4 :(得分:-1)
我想我已经过时了。解剖器的主要目的是将数据转换为人类可读的形式,所以我通过让人类阅读它来测试我的。
我想您可以通过从file->export
导出到txt或pdml,或者在插件DLL周围实现某种测试包装来进行更多自动化测试。