當你爲Wireshark寫一個解剖器時,你如何測試它?尋找UI中的視覺輸出對於非平凡協議來說是不夠的。你如何測試一個Wireshark解剖器?
是否有解剖器單元測試的好方法?
編輯:
協議幀的結構是動態的。解剖者必須以某種方式解釋內容。
例如,如果第五個字段是一個字節數組作爲第六個字段。如果它是兩個,你有一個雙數組,如果它是三,你必須添加一個零終止的字符串。
這通常不會發生在日常工作中。這就是爲什麼即使有「不可能」內容也需要合成捕獲數據的原因。
當你爲Wireshark寫一個解剖器時,你如何測試它?尋找UI中的視覺輸出對於非平凡協議來說是不夠的。你如何測試一個Wireshark解剖器?
是否有解剖器單元測試的好方法?
編輯:
協議幀的結構是動態的。解剖者必須以某種方式解釋內容。
例如,如果第五個字段是一個字節數組作爲第六個字段。如果它是兩個,你有一個雙數組,如果它是三,你必須添加一個零終止的字符串。
這通常不會發生在日常工作中。這就是爲什麼即使有「不可能」內容也需要合成捕獲數據的原因。
要測試Wireshark的解剖,我發現這個有用:
text2pcap
tshark
這可以通過過濾,因爲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']");
我想我是老式的。解剖員的主要目的是將數據轉換爲人類可讀形式,所以我通過讓人們閱讀它來測試我的數據。
我想你可以做更多的自動化測試,從file->export
導出到txt或pdml,或者在你的插件DLL中實現某種測試包裝。
只是爲了更新帖子。
Tshark使用與Wireshark相同的插件,並以相同的方式加載它們。tshark也以這種方式在Wireshark CI build 測試中使用,請參閱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
您只能檢查的實際數據的輸出。但是,如果數據不符合當前的協議規範,即下一個版本,您還應該測試解剖器的行爲。 – harper 2010-12-14 05:22:58
你在問如何生成測試數據? libpcap文件格式在http://wiki.wireshark.org/Development/LibpcapFileFormat – 2010-12-14 14:37:09
有詳細記錄。編號只有一個測試點。更有趣的是解剖器的輸出。 – harper 2013-03-28 13:48:21