12

Wireshark のディセクタを作成する場合、どのようにテストしますか? UI で視覚的な出力を探すだけでは、重要なプロトコルには十分ではありません。

ディセクタの単体テストの良い方法はありますか?

編集:

プロトコル フレームの構造は動的です。解剖者は何らかの方法でコンテンツを解釈する必要があります。

たとえば、5 番目のフィールドが 1 の場合、6 番目のフィールドとしてバイト配列が続きます。2 の場合は double 配列になり、3 の場合はゼロで終わる文字列を追加する必要があります。

これは通常、毎日の作業キャプチャでは発生しません。だからこそ「ありえない」内容でも合成攻略データが必要なのです。

4

5 に答える 5

9

Wireshark ディセクタをテストするには、これが役立つことがわかりました。

  • ディセクタが不正な形式のパケットを含めて分析する必要がある一連のパケットを定義します
  • パケットを 16 進ダンプとして実装します
  • 期待される出力を定義する
  • パケットダンプごとに
    • でpcapファイルを生成しますtext2pcap
    • ディセクタを実行しますtshark
    • tshark の PDML 出力からペイロードを抽出します。
    • XML 出力を予想される XML 出力と比較する

これは、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']");
于 2010-12-27T09:14:34.380 に答える
0

tsharkの出力を解析できます。

于 2010-12-20T05:01:08.737 に答える
0

私は時代遅れだと思います。ディセクタの主な目的は、データを人間が読める形式に変換することです。そのため、私は自分のデータを人間に読み取らせることでテストしました。

からtxtまたはpdmlにエクスポートするfile->exportか、プラグインDLLの周りに何らかのテストラッパーを実装することで、より自動化されたテストを実行できると思います。

于 2010-12-13T20:30:07.373 に答える
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

于 2016-08-27T13:02:52.007 に答える