UDPエコーサーバーでパケットを取得し、受信した内容に正確に応答する必要があります。 netcat
またはsocat
を使用してこれを簡単に行うにはどうすればよいですか?それは永遠に生き続け、いくつかのホストから来るパケットを処理するべきです。
別のnetcatのようなツールは、nmapバージョンncat
です。これには、このようなことを単純化するための多くの組み込みの機能があります。これはうまくいくでしょう:
ncat -e /bin/cat -k -u -l 1235
-eは、/ bin/catを実行することを意味します(入力した内容をエコーバックするため)
-kはキープアライブを意味し、接続するたびにリッスンし続けます
-uはudpを意味します
-l 1235は、ポート1235でリッスンすることを意味します
socat -v PIPE udp-recvfrom:5553,fork
サーバーを実行し、socat - udp:localhost:5553
クライアント用。 これ は非常に役立ちました。
エコーサーバーとして(netcatではなく)socatを使用し、クライアントとしてnetcatを使用することもできます。
Socatエコーサーバー(TCPポート1234でリッスン)):
socat -v tcp-l:1234,fork exec:'/bin/cat'
Netcatクライアント(TCPポート1234)のserveripに接続):
nc serverip 1234
netcat
ソリューションがUbunutuにプリインストールされています
Ubuntu 16.04にプリインストールされているnetcat
は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
ただし、同時リクエストの処理方法はわかりません。
Windowsで実行していて、cygwinのようなUNIXのような環境を使用している場合、netcat migthは-eパラメータを提供しません。これでうまくいきました。