tcpdump はパケット全体をキャプチャしません。

tcpdump はパケット全体をキャプチャしません。

私はそれを使用しています

sudo tcpdump -A -s0 -ien0 port 80 | grep schemas-microsoft >> ~/Downloads/convert.txt

インターネット経由で送信されたmicrosoft-schema xmlをキャプチャするには、いつtcpdumpキャプチャする必要がありますか(例:)

<xml>
 <sample>h</sample>
 <samp2>j</sample>
</xml>

次のみキャプチャします。

<xml>
<sample>h</sample
<sam

ファイルのどこかでランダムに停止します。その理由は何ですか?

答え1

Wireshark のドキュメントの手順では、次のコマンドを使用してパケットの内容全体をキャプチャすることをお勧めします。

$ tcpdump -i <interface> -s 65535 -w <some-file>

マニュアルページtcpdumpのガイドを見ると、-s0同じことがわかります。

-S

デフォルトの65535バイトではなく、各パケットのSnarf snaplenバイトデータ。制限されたスナップショットのため、切り捨てられたパケットは出力に「[|proto]」と表示されます。ここで、proto は切り捨てが発生したプロトコルレベルの名前です。より大きなスナップショットを撮ると、パケットを処理するのに必要な時間が増えるだけでなく、パケットバッファリングの量も効果的に減少します。これにより、パケット損失が発生する可能性があります。興味のあるプロトコル情報をキャプチャする最小数に snaplen を制限する必要があります。 snaplenを0に設定すると、最近のバージョンのtcpdumpとの互換性のためにデフォルトの65535に設定されます。

このガイドの真ん中にある文章によって、一部のデータが欠落している可能性があります。主に次のようになります。

より大きなスナップショットを撮ると、パケットを処理するのに必要な時間が増えるだけでなく、パケットバッファリングの量も効果的に減少します。これにより、パケット損失が発生する可能性があります。興味のあるプロトコル情報をキャプチャする最小数にsnaplenを制限する必要があります。

どうやって検索するのか分かりました。その他の提案次のようなコマンドライン:

$ tcpdump -nnXSs 0 'port 80'
  • /etc/services"-nn"を使用すると、それぞれの高速できれいな出力を得るために、DNSはホスト名とサービス名(から)を検索しません。
  • 「-X」は、各パケットを16進形式およびASCII形式で印刷します。これはヘッダなどを追跡するのに非常に便利なビットです。
  • 「-S」は相対TCPシーケンス番号ではなく、絶対TCPシーケンス番号を出力します。正しく覚えている場合は、これを同時に実行している複数のユーザーのtcpdump出力を比較できます。
  • "-s 0"デフォルトでは、tcpdumpは各パケットの先頭のみをキャプチャします。ここで0を使用すると、パケット全体をキャプチャします。

-nnパフォーマンスを向上させ、より少ない量のデータがバッファリングされ、より多くのデータが削除されないように保護できることを確認するためにこれを追加することをお勧めします。他のスイッチが役に立つかもしれませんが、あなたの場合にどのように役立つかはわかりません。

引用する

関連情報