私はこれを試しました:
tcpdump -s 1500 -A -l -i eth0 '(port 6667) and (length > 74)'
私はそれのアスキー部分だけが必要です。残りを削除するにはどうすればよいですか?
Joshが示唆するように、tcpflowはTCPパケットデータをファイルまたはSTDOUTに出力できます。次のようにtcpdumpをtcpflowにパイプできます。
tcpdump -i lo -l -w - port 23 | tcpflow -C -r -
会話の片側のみを表示するには、tcpdumpのフィルターを使用できます。 dst port 23
。
最もエレガントな解決策はtcpdumpを捨てることだと思います。パイプは一切ありません:
tcpflow -c port 6667
以上です。
tcpdump
の正確な構文がわかりません...実際、知りたいので、この質問をお気に入りとしてマークしました!ただし、代替ソリューションとして、代わりに tcpflow
を使用することもできます。基本的には同じように機能しますが、ASCII出力をより適切に出力します。ヘッダーを除外し、パケットをフローとして順番に出力するため、tcpdump
。
これをすばやく簡単に行うには、文字列で出力をフィルタリングします。
tcpdump -nli eth0 '(port 6667) and (length > 74)' -s 0 -w - | strings
他のツールがない場合もあり、ペイロードをざっと覗くだけで十分です。もちろん、注入または正確な分析のために正確なペイロードが必要な場合は、良くありません。
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'
先週、同じ問題が発生しました。代わりに、wireshark guiを使用して、興味深いパケットに対して「コピー可読のASCII」を実行しました。
私は(成功して)WebサービスへのHTTPリクエストとそのXML応答の問題を特定しようとしました。