トラフィックを記録するためのプロキシとしてnetcatを使う


4

httpリクエストとレスポンスをファイルに記録するためのプロキシとしてnetcatを使い、それからトラフィックを検査するためにこれらを調整したいのです。 wireharkを考えてください。

'fifo'は名前付きパイプ、 'in'と 'out'はファイル、ポート8080はnetcatプロキシ、ポート8081はserverです。

本当ながら。猫FIFA nc -l -p 8080 |ティーティーインnc localhost 8081 | tee -a out 1> fifo;終わった

問題点

  • Netcatは最初の要求後に応答を停止します(ループは無視されますか?)。

  • Netcatがmsgで失敗する localhost [127.0.0.1] 8081 (tproxy) : Connection refused 8081でサーバーが使用できない場合すなわちnetcatの起動時に8081を実行したくありません。

回答:


5

ncat --sh-exec引数を使用して、これを非常に簡単に実行できます。

次のコマンドはTCP接続の両方向をライブで見ることを可能にし、複数の接続を可能にします。への接続 example.com 受信した接続ごとに1回行われます。 localhost:8080

ncat -lkv localhost 8080 -c 'tee /dev/stderr | ncat -v example.com 80 | tee /dev/stderr'

二つを変える tee コマンド tee -a ./file ライブではなくファイルにログを記録したい場合。 また、削除することができます -v 詳細出力を無効にして、転送されたデータだけを端末に出力します。

-k, --keep-open            Accept multiple connections in listen mode
-l, --listen               Bind and listen for incoming connections
-v, --verbose              Set verbosity level (can be used several times)
-c, --sh-exec <command>    Executes the given command via /bin/sh

見る ncat --help または man ncat 詳細については。


2

つかいます 社交的 パイプやFIFAは必要ありません


うまくいきます。今すぐ回答を見ることができません。しかし、どうすればその後の要求に対してsocatを存続させることができますか?試した while true; do socat -v tcp-listen:8080,keepalive=1 tcp:localhost:8081; done そして socat -v tcp-listen:8080,keepalive=1 tcp:localhost:8081
deephacks

やってみる fork のように socat -v tcp-listen:8080,fork tcp:localhost:8081
RedGrittyBrick

1

私は使うだろう tcpdump チュートリアル ) このため。私はあなたが欲しいコマンドはこのようになると思います:

sudo tcpdump -i eth0 -s0 -v port 8080

2
tcpdumpは、読みにくい生パケットのみを表示します。 tcpflowはまさに私が欲しいことをし、リクエスト/レスポンスを代理する必要性を排除します。 sudo tcpflow -p -i lo -c port 8081
deephacks
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.