質問: linuxでtcpトラフィックデータを盗聴する最も簡単な方法は何ですか? 私は自分のlinuxマシン上のどのインターフェース上でも、すべてのtcpデータ(tcpヘッダーやその他のものではない)をすべて表示する簡単な方法が欲しいのです。例えば、私がするならば、私は魔法のような命令が欲しい:magic_commmand_i_want port=1234 それから私のマシンのポート1234で待機しているサーバーがあり、誰かがしたなら:echo hello | nc localhost 1234 # note: "nc" (aka "netcat") is a simple tool that sends data to a host/port それから魔法のコマンドはただプリントアウトするでしょう:hello "tcpdump"、 "ethereal"、 "tethereal"、 "tshark"などを試してみましたが、どうやってそれらを取得するのかは明らかではありません。 ipアドレスやその他のメタデータを表示しない 送信されている「データ」のみを表示し、個々のパケットとそのヘッダーは表示しません。 データを16進数ではなく、パケットオフセットマーカーを付けずにそのまま印刷する sniff all ネットワークトラフィック( eth0 または eth1 またはにあるかどうか) ] lo など はい、おそらくこれを行うためにパイプで接続された一連のunixコマンドをまとめることができますが、次回のために覚えるのはそれほど簡単ではありません:)あなたがこれをする正確なコマンドラインの簡単な例があるならば、それは私が欲しいものです。
回答: tcpflowはあなたが望むものです。 manページから抽出します。 説明 tcpflowはtcp connections(フロー)の一部として送信されたデータをキャプチャし、プロトコル分析に便利な方法でデータを保存するプログラムです。 tcpdump(4)のようなプログラムはネットワーク上で見たパケットの要約を表示しますが、通常実際に送信されているデータを格納しません。対照的に、tcpflowは実際のデータストリームを再構築し、後で分析するために各フローを別々のファイルに格納します。 tcpflowはtcpシーケンス番号を理解しており、再送信や順序外配信に関係なくデータストリームを正しく再構築します。 tcpflowは、キャプチャしたすべてのデータをフォームの名前を持つファイルに保存します。 192.168.101.102.02345-010.011.012.013.45103 上記のファイルの内容は、ホスト192.168.101.102のポート2345からホスト10.11.12.13のポート45103に送信されたデータです。 アプリケーションアプリからサーバーへの接続を設定します。接続が確立され実行されているとき、tcpflowはまだそこからデータを取得することができます。$ sudo tcpflow -i lo port 5555 tcpflow[3006]: listening on lo すべてのデータは127.000.000.001.48842-127.000.000.001.05555という名前のファイルに保存されます。オプション-cを使って標準出力にリダイレクトすることもできます。マニュアルページを読んで、tcpflowにキャプチャさせたいpaquetsを調整するための表現を再生します。