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


28

私はこれを試しました:

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

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


1
tsharkの-l -i eth0の-f「ポート6667と大きい74」-Tフィールド-eデータ:tsharkのをあなたがそれを行うことができます
マルチン

キャプチャされた28パケットを示しますが、STDOUTには何も出力しません。
コーダー

ASCII7を意味しますか?
ミルチャVutcovici

回答:


15

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

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

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


4
なぜtcpflowルートとして起動する必要があるのですか?
ルスラン

5

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


5

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

tcpflow -c port 6667

以上です。


あなたは私の命を救った、私はあなたにクッキーを買いたい
gdaras

4

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

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

他のツールがない場合や、ペイロードをすばやく確認するにはこれで十分です。もちろん、注入や正確な分析のために正確なペイロードが必要な場合、それは良くありません。


1

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を使用して、興味のあるパケットに対して「読み取り可能なアスキーをコピー」しました。

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.