netcatまたはsocatを使用したエコーサーバー


18

UDPエコーサーバーでパケットを取得し、受信したとおりに応答するようにします。netcatまたはを使用してこれを行うにはどうすればよいsocatですか?永遠に生き続け、複数のホストからのパケットを処理する必要があります。


7
このことをインターネットにアクセスできないようにしてください。UDPベースなので、ソース偽造パケットを使用して任意の宛先にパケットストリームを送信するために使用できます。
エヴァンアンダーソン

回答:


17

もう1つのnetcatのようなツールはnmapバージョンでありncat、このようなものを単純化するための組み込みのグッズがたくさんあります。これはうまくいくでしょう:

ncat -e /bin/cat -k -u -l 1235

-eは/ bin / catを実行することを意味します(入力内容をエコーバック
するため)-kはキープアライブを意味し、各接続後にリッスンし続ける
-uはudpを意味します
-l 1235はポート1235でリッスンすることを意味します



6

また、エコーサーバーとしてnetcatを使用する代わりにsocatを使用し、クライアントとしてnetcatを使用することもできます。

Socatエコーサーバー(TCPポート1234で待機):

socat -v tcp-l:1234,fork exec:'/bin/cat'

Netcatクライアント(TCPポート1234でserveripに接続):

nc serverip 1234

2

分岐 nc -u -l -p 4321してからdup(2)を使用して接続するCプログラムを作成できます。

  • nc stdinと親の標準出力
  • nc stdoutと親の標準入力

次に、無限ループで、親はstdinから読み取り、親が読み取ったものをstdoutに書き込みます。


を使用できますsocat -v PIPE UDP-LISTEN:5555,forkが、2番目の接続は拒否されます。ちなみに、TCP-LISTENではうまく機能します。私は、そうでない場合は、私はすべてのC.でそれを書くことができ、コードに回避しています
ムハンマド・Hedayati

すべてを無限ループでラップする必要があります。socatのものを行います。完了
アダモ


0

Windows上で実行しており、cygwinなどの環境のようなUNIXを使用している場合、netcat migthは-eパラメーターを提供しません。これは私にとってはうまくいきました。

http://bansky.net/echotool/


0

netcat Ubunutuにプリインストールされたソリューション

netcatUbuntuの16.04でプリインストールから来てnetcat-openbsd、そして何も持っていない-cオプションをが、マニュアルには、ソリューションを提供します:

sudo mknod -m 777 fifo p
cat fifo | netcat -l -k localhost 8000 > fifo

次に、クライアントの例:

echo abc | netcat localhost 8000

TODO:入力文字列値を変更する方法は?以下は応答を返しません。

cat fifo | tr 'a' 'b' | netcat -l -k localhost 8000 > fifo

ただし、リモートシェルの例は機能します。

cat fifo | /bin/sh -i 2>&1 | netcat -l -k localhost 8000 > fifo

ただし、同時要求を単に処理する方法がわかりません。

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