serveur d'écho avec netcat ou socat


18

Je veux qu'un serveur d'écho UDP reçoive des paquets et réponde exactement à ce qu'il a reçu. Comment puis-je simplement faire cela en utilisant netcatou socat? Il devrait rester en vie pour toujours et gérer les paquets provenant de plusieurs hôtes.


7
Veuillez ne pas rendre cette chose accessible sur Internet. Comme il est basé sur UDP, il peut être utilisé pour envoyer un flux de paquets vers des destinations arbitraires à l'aide de paquets falsifiés.
Evan Anderson

Réponses:


17

Un autre outil de type netcat est la version nmap ncat, qui a beaucoup de goodies intégrés pour simplifier des choses comme ça. Cela fonctionnerait:

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

-e signifie qu'il exécute / bin / cat (pour répéter ce que vous tapez)
-k signifie garder en vie, qu'il continue d'écouter après chaque connexion
-u signifie udp
-l 1235 signifie qu'il écoute sur le port 1235



6

Vous pouvez également utiliser socat (plutôt que d'utiliser netcat) comme serveur d'écho et netcat comme client.

Serveur d'écho Socat (écoute sur le port TCP 1234):

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

Client Netcat (se connecte à serverip sur le port TCP 1234):

nc serverip 1234

2

Vous pouvez écrire un programme C qui bifurque nc -u -l -p 4321 puis utilise dup (2) pour se connecter:

  • nc stdin avec la sortie standard du parent
  • nc stdout avec stdin du parent

Ensuite, dans une boucle sans fin, le parent lit à partir de stdin et écrit dans stdout tout ce que le parent lit.


Je peux utiliser socat -v PIPE UDP-LISTEN:5555,fork, mais la deuxième connexion est refusée. Soit dit en passant, cela fonctionne bien avec TCP-LISTEN. J'évite de coder, sinon je pourrais tout écrire en C.
Mohammad Hedayati

Vous devez envelopper le tout dans une boucle sans fin: tout en étant vrai; faire des trucs socat; fait
adamo

Vous pouvez également vous inspirer en utilisant ce tutoriel
adamo

0

Si vous utilisez Windows et utilisez un environnement de type Unix comme cygwin, netcat migth ne fournit pas le paramètre -e. Cela a très bien fonctionné pour moi.

http://bansky.net/echotool/


0

netcat solution préinstallée dans Ubunutu

Le netcatpré-installé dans Ubuntu 16.04 vient de netcat-openbsd, et n'a pas d' -coption, mais le manuel donne une solution:

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

Ensuite, exemple client:

echo abc | netcat localhost 8000

TODO: comment modifier la valeur de la chaîne d'entrée? Ce qui suit ne renvoie aucune réponse:

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

L'exemple de shell distant fonctionne cependant:

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

Cependant, je ne sais pas comment traiter les demandes simultanées.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.