更新:
コメントで Michal が指摘したように、tcpflow バージョン 1.3 から -e オプションを使用してスキャナー名を指定します。そのため、「無効なスキャナー名 '8983'」というエラーが出力されます。正しいコマンドは
です
sudo tcpflow -i any -C -J port 1234
(また -J
-g
に変更されました 最新リリースで)
「tcpflow」を教えてくれた yves に感謝します。コマンドラインは次のとおりです:
tcpflow -i any -C -e port 1234 # as root, or with sudo
これは私が望むすべてを行います
- 入ってくるデータをバイト単位で表示します
- 他のメタデータは表示しません
- すべてのインターフェースをリッスンする (マシン内外からのデータを取得するため)
「-C
" は、ファイルではなくコンソールにダンプするように指示します。"-e
" は色を有効にして、クライアント -> サーバーとサーバー -> クライアントが視覚的に区別されるようにします。
単純に tcpflow をインストールしました
sudo apt-get install tcpflow
socat はあなたが求めているツールです。プロキシとして機能できます:
$socat -v TCP-LISTEN:4444 TCP:localhost:1234
hello
その場合、アプリケーションはポート 1234 に直接接続するのではなく、ポート 4444 に接続する必要があります
-v オプションは、socat が受け取ったすべてを標準エラー (stderr) に出力するためのものです。
更新:
お使いのマシンで socat が利用できない場合でも、netcat を使用してその方法でエミュレートできます:
$netcat -l -p 4444 | tee output_file | netcat localhost 1234
注意:このオプションは単方向です。 2 番目の netcat インスタンスは、サーバーからのすべての応答を標準出力に出力します。その後も、次のように実行できます:
$mkfifo my_fifo
$netcat -l -p 4444 < my_fifo | tee output_file | netcat localhost 1234 > my_fifo
Wireshark を試してみてください。これは、Linux と Windows の両方を対象とした優れたプロトコル アナライザーです。