web-dev-qa-db-ja.com

tcpdumpがtcpヘッダーを出力しないようにするにはどうすればよいですか?

私はこれを試しました:

tcpdump -s 1500 -A -l -i eth0 '(port 6667) and (length > 74)'

私はそれのアスキー部分だけが必要です。残りを削除するにはどうすればよいですか?

31
coder

Joshが示唆するように、tcpflowはTCPパケットデータをファイルまたはSTDOUTに出力できます。次のようにtcpdumpをtcpflowにパイプできます。

tcpdump -i lo -l -w - port 23 | tcpflow -C -r -

会話の片側のみを表示するには、tcpdumpのフィルターを使用できます。 dst port 23

17
jwmullally

最もエレガントな解決策はtcpdumpを捨てることだと思います。パイプは一切ありません:

tcpflow -c port 6667

以上です。

7
BarsMonster

tcpdumpの正確な構文がわかりません...実際、知りたいので、この質問をお気に入りとしてマークしました!ただし、代替ソリューションとして、代わりに tcpflow を使用することもできます。基本的には同じように機能しますが、ASCII出力をより適切に出力します。ヘッダーを除外し、パケットをフローとして順番に出力するため、tcpdump

5
Josh

これをすばやく簡単に行うには、文字列で出力をフィルタリングします。

tcpdump -nli eth0 '(port 6667) and (length > 74)' -s 0 -w - | strings

他のツールがない場合もあり、ペイロードをざっと覗くだけで十分です。もちろん、注入または正確な分析のために正確なペイロードが必要な場合は、良くありません。

4
Eduardo Ivanec

ASCIIの部分のみが必要な場合は、tcpdump -s 1500 -A -l -i eth0 '(port 6667) and (length > 74)'|sed 's/\.//g'またはngrepを使用できます:ngrep -d eth0 -lq . '(port 6667) and (length > 74)' |sed -rn '/^ /s/\.//gp'

1

先週、同じ問題が発生しました。代わりに、wireshark guiを使用して、興味深いパケットに対して「コピー可読のASCII」を実行しました。

私は(成功して)WebサービスへのHTTPリクエストとそのXML応答の問題を特定しようとしました。

1
Nils