10

pcap ファイルがあれば、Wireshark が提供する適切なフィルターを使用して、再構築された HTTP 要求と応答から多くの情報を抽出できます。pcap ファイルを各 TCP ストリームに分割することもできました。

私が今直面している問題は、私が で使用できるすべてのクールなフィルタの中でtshark、完全なリクエスト/レスポンス ボディを出力できるフィルタが見つからないことです。私はこのようなものを呼んでいます:

 tshark -r dump.pcap -R "tcp.stream==123 and http.request" -T fields -e http.request.uri

-eリクエスト/レスポンスボディを取得するために渡すことができるフィルタ名はありますか? 私が最も近いのは-Vフラグを使用することですが、必要のない多くの情報も出力し、「ダム」フィルターでこじ開ける必要はありません。

4

4 に答える 4

9

別のツールに切り替える場合は、tcptraceで -e オプションを使用してこれを行うことができます。また、TCP ストリームごとに HTTP 要求/応答のペアを生成する HTTP 分析拡張機能 (xHTTP オプション) も備えています。

使用例を次に示します。

tcptrace --csv -xHTTP -f'port=80' -lten capturefile.pcap
  • --csvコンマ区切りの変数として出力をフォーマットします
  • -xHTTP 'http.times' に書き込まれた HTTP 要求/応答の場合、これも -e をオンにして TCP ストリーム ペイロードをダンプするため、実際には -e も必要ありません。
  • -f'port=80'は非 Web トラフィックを除外します
  • -l長い出力形式
  • -t進行状況を表示する
  • -nホスト名の解決をオフにします (これを使用しない方がはるかに高速です)
于 2012-01-24T14:37:12.170 に答える
3

pcap ファイルをキャプチャした場合は、次のようにしてすべてのリクエストとレスポンスを表示できます。

filename="capture_file.pcap"
for stream in `tshark -r "$filename" -2 -R "tcp and (http.request or http.response)" -T fields -e tcp.stream | sort -n | uniq`; do
    echo "==========BEGIN REQUEST=========="
    tshark -q -r "$filename" -z follow,tcp,ascii,$stream;
    echo "==========END REQUEST=========="
done;

diyismの回答を少し理解しやすくしました(sudoは必要ありません。複数行のスクリプトは見やすいです)

于 2016-03-04T13:10:17.720 に答える
0

この行を使用して、最後の 10 秒間のリクエスト本文とレスポンス本文を表示します ( https://gist.github.com/diyism/eaa7297cbf2caff7b851 ):

sudo tshark -a duration:10 -w /tmp/input.pcap;for stream in `sudo tshark -r /tmp/input.pcap -R "tcp and (http.request or http.response) and !(ip.addr==192.168.0.241)" -T fields -e tcp.stream | sort -n | uniq`; do sudo tshark -q -r /tmp/input.pcap -z follow,tcp,ascii,$stream; done;sudo rm /tmp/input.pcap
于 2015-01-26T08:44:48.803 に答える