web-dev-qa-db-ja.com

キャプチャ(1xのみ)HTTP POST Request [tcpdump]

ときどき;
私はtcpdumpを起動して、パケットが流れているネットワークトラフィックを監視するのが好きです。

例:

user@Host:~$ Sudo tcpdump -Aevvv

ファイルに書き込む(保存する)のではなく、すべてのローカルネットワークトラフィックを解析して、標準出力にリアルタイムで出力します。これは、ローカルネットワークで何が起こっているのかを簡単に垣間見るのに最適です。

解析および/または読み取りに適したものよりも大量/高速で送信されるパケットを見つけることは珍しいことではありません。このような場合、通常は次のように目的のターゲットホストを指定します。

user@Host:~$ Sudo tcpdump -Aevvv Host security.stackexchange.com

明らかに、この例で必要なターゲットホストはsecurity.stackexchange.comです。これは、最初に思い浮かぶこと以外に理由はありません。もちろん、好きなホストに設定できます。 Hostフィルターを使用すると、結果をきれいに整理できますが、さらに一歩進んで特定の[〜#〜] http [〜#〜]-を指定したいと思います。 WebリクエストHEAD、GET、POSTなどのタイプ。

例の精神を続けるために、キャプチャするためのtcpdumpパケットフィルタールールHTTP POST Requests;を指定して、 security.stackexchange.comのようなリモートホストにコンテンツを送信するときに、舞台裏で何が起こっているかを示します。

それが私の質問です:tcpdump ..を使用する場合)
POSTリクエストパケットのみですか? =

2
voices

さまざまな理由でできません。

  • tcpdumpは、アプリケーションレベルのプロトコルを認識していません。
  • これがTCP接続を含むPOSTは、TCPハンドシェイクがすでに行われた後でないとわかりません。 POST後で判明する可能性がある場合に備えて、接続設定を失うか、すべてをキャプチャしてどこかに保存する必要があります。
  • TCP接続内に複数のHTTPリクエストが存在する可能性があり、POSTが最初のものではない可能性があります。

別の回答で提案されている「POST」で始まるパケットのみをキャプチャしようとする場合があることに注意してください。しかし、これはPOSTで始まる他のパケットもキャプチャします(POSTリクエストだけでなく)、ほとんどの場合ペイロードをキャプチャしません(それが非常に小さく、同じパッケージに含まれています)、応答をキャプチャしません。

代わりに、POSTを含む可能性のあるすべてのトラフィックをキャプチャしてから、wireshark/tsharkを使用してキャプチャしたトラフィックをフィルタリングすることをお勧めします。 https://serverfault.com/questions/309515/how-to-make-wireshark-filter-post-requests-only

3
Steffen Ullrich