servidor echo con netcat o socat

18

Quiero que un servidor de eco UDP obtenga paquetes y responda exactamente lo que ha recibido. ¿Cómo puedo simplemente hacer esto usando netcato socat? Debería mantenerse vivo para siempre y manejar los paquetes que provienen de varios hosts.

Mohammad Hedayati
fuente
77
Por favor, no haga que esto sea accesible por Internet. Como está basado en UDP, puede usarse para enviar una secuencia de paquetes a destinos arbitrarios utilizando paquetes falsificados en origen.
Evan Anderson

Respuestas:

17

Otra herramienta similar a netcat es la versión nmap ncat, que tiene muchos objetos incorporados para simplificar cosas como esta. Esto funcionaría:

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

-e significa que ejecuta / bin / cat (para repetir lo que escribe)
-k significa mantener vivo, que sigue escuchando después de cada conexión
-u significa udp
-l 1235 significa que escucha en el puerto 1235

Mattias Ahnberg
fuente
11

Solía socat -v PIPE udp-recvfrom:5553,forkejecutar el servidor y socat - udp:localhost:5553para clientes. ¡ Fue de gran ayuda!

Mohammad Hedayati
fuente
1
Una alternativa, que viene de stackoverflow.com/a/35857095/222529 essocat TCP4-LISTEN:2000,fork EXEC:cat
Jir
6

También puede usar socat (en lugar de usar netcat) como servidor echo y netcat como cliente.

Servidor de eco Socat (escucha en el puerto TCP 1234):

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

Cliente Netcat (se conecta a serverip en el puerto TCP 1234):

nc serverip 1234
Andre Miras
fuente
2

Puede escribir un programa en C que se bifurca nc -u -l -p 4321 y luego usa dup (2) para conectarse:

  • nc stdin con stdout de los padres
  • nc stdout con el stdin de los padres

Luego, en un bucle sin fin, el padre lee de stdin y escribe en stdout lo que lee el padre.

adamo
fuente
Puedo usar socat -v PIPE UDP-LISTEN:5555,fork, pero la segunda conexión se rechaza. Por cierto, funciona bien con TCP-LISTEN. Estoy evitando codificar, de lo contrario podría escribirlo todo en C.
Mohammad Hedayati
Tienes que envolver todo en un bucle sin fin: si bien es cierto; hacer cosas socat; hecho
adamo
También puede obtener algo de inspiración con este tutorial
adamo
0

Si está ejecutando en Windows y utiliza un entorno similar a Unix como cygwin, netcat migth no proporcionará el parámetro -e. Esto funcionó bien para mí.

http://bansky.net/echotool/

Chris
fuente
0

netcat solución preinstalada en Ubunutu

El netcatpreinstalado en Ubuntu 16.04 proviene netcat-openbsdy no tiene -copción, pero el manual ofrece una solución:

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

Entonces ejemplo del cliente:

echo abc | netcat localhost 8000

TODO: ¿cómo modificar el valor de la cadena de entrada? Lo siguiente no devuelve ninguna respuesta:

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

Sin embargo, el ejemplo de shell remoto funciona:

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

Sin embargo, no sé cómo tratar las solicitudes concurrentes.

Ciro Santilli 新疆 改造 中心 法轮功 六四 事件
fuente