web-dev-qa-db-ja.com

netcatまたはsocatでサーバーをエコーする

UDPエコーサーバーでパケットを取得し、受信した内容に正確に応答する必要があります。 netcatまたはsocatを使用してこれを簡単に行うにはどうすればよいですか?それは永遠に生き続け、いくつかのホストから来るパケットを処理するべきです。

21

別のnetcatのようなツールは、nmapバージョンncatです。これには、このようなことを単純化するための多くの組み込みの機能があります。これはうまくいくでしょう:

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

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

18
Mattias Ahnberg

socat -v PIPE udp-recvfrom:5553,forkサーバーを実行し、socat - udp:localhost:5553クライアント用。 これ は非常に役立ちました。

12

エコーサーバーとして(netcatではなく)socatを使用し、クライアントとしてnetcatを使用することもできます。

Socatエコーサーバー(TCPポート1234でリッスン)):

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

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

nc serverip 1234
6
Andre Miras

forksnc -u -l -p 4321のCプログラムを作成し、次に dup(2) を使用して接続します。

  • 親の標準出力を持つnc stdin
  • 親の標準入力を持つnc stdout

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

2
adamo

netcatソリューションがUbunutuにプリインストールされています

Ubuntu 16.04にプリインストールされているnetcatnetcat-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

ただし、同時リクエストの処理方法はわかりません。

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

http://bansky.net/echotool/

0
Chris