web-dev-qa-db-ja.com

tcpdumpを使用して、HTTP要求、応答ヘッダー、および応答本文を取得できますか?

以下のコマンドを実行して、tcpdumpを使用してHTTPデータを取得しています。

Sudo tcpdump -A -s 1492 dst port 80

上記のコマンドの結果:

  1. ヘッダー、リクエストとレスポンスのヘッダーだと思います。
  2. 読めないデータ。
  3. URL GET /modules/mod_news_pro_gk1/cache/stories.ilbalad.ajayeb.strange-tractor.jpg

たとえば、読み取り可能な要求>応答ヘッダー>応答本文など、より明確な結果が必要です。結果をフィルターするにはどうすればよいですか?

59
kimo

HTTP GETおよびHTTP POST(または両方とメッセージ本文)のtcpdumpフィルターがあります。

  • man tcpdump | less -Ip examplesを実行していくつかの例を見る

  • HTTP GET用のtcpdumpフィルターは次のとおりです。

    Sudo tcpdump -s 0 -A 'tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x47455420'
    
  • HTTP POST用のtcpdumpフィルターは次のとおりです。

    Sudo tcpdump -s 0 -A 'tcp dst port 80 and (tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x504f5354)'
    
  • 要求および応答ヘッダーとメッセージ本文を含むHTTPトラフィックを監視します( source ):

    tcpdump -A -s 0 'tcp port 80 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)'
    tcpdump -X -s 0 'tcp port 80 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)'
    

TCPヘッダーのビット調整の詳細については、 String-Matching Capture Filter Generator (Sake Blokの説明へのリンク)を参照してください。

171
paulz

Wireshark を使用することをお勧めします。これには、特定のTCPに対する完全な要求と応答を非常に簡単に確認できる「フォローTCPストリーム」オプションがあります接続。コマンドラインを使用する場合は、TCPストリームのコンテンツのキャプチャと再構築専用のツールである tcpflow を試すことができます。

他のオプションは、EricLawが提案する Charles または Fiddler などのHTTPデバッグプロキシを使用することです。これらには、HTTPの特定のサポートがあるという利点があり、さまざまな種類のエンコードや、再生するリクエストの保存やリクエストの編集などの他の機能の処理が容易になります。

Firebug (Firefox)、 Web Inspector (Safari、Chrome、およびその他のWebKitベースのブラウザー)、または Opera Dragonfly のようなツールを使用することもできます=、これらはすべて、リクエストおよびレスポンスのヘッダーとボディを表示する機能を提供します(ただし、ほとんどの場合、正確なバイトストリームを表示することはできませんが、代わりにブラウザーがリクエストを解析する方法を使用できます)。

最後に、telnet、 netcat 、または socat のようなものを使用してポート80に接続し、手動で要求を入力するか、または htty リクエストを簡単に構築し、レスポンスを検査するのに役立ちます。

34
Brian Campbell

別の選択肢があります: Chaosreader

したがって、xmlをサードパーティのアプリケーションにポストするアプリケーションをデバッグする必要があります。すべてのハードワークを実行する素晴らしい小さなPerlスクリプトを見つけました。tcpdump出力ファイルをチャックするだけで、すべての操作を実行し、必要なすべてを出力します...

スクリプトはchaosreader0.94と呼ばれます。 http://www.darknet.org.uk/2007/11/chaosreader-trace-tcpudp-sessions-from-tcpdump/ を参照してください

それは御treat走のように働いた、私は次のことをした:

tcpdump Host www.blah.com -s 9000 -w outputfile; Perl chaosreader0.94 outputfile
6
thinker007