echo server mit netcat oder socat

18

Ich möchte, dass ein UDP-Echoserver Pakete abruft und genau das antwortet, was er erhalten hat. Wie kann ich das einfach mit netcatoder machen socat? Es sollte für immer am Leben bleiben und Pakete verarbeiten, die von mehreren Hosts stammen.

Mohammad Hedayati
quelle
7
Bitte machen Sie dieses Ding nicht für das Internet zugänglich. Da es UDP-basiert ist, kann es verwendet werden, um einen Paketstrom unter Verwendung von Quell-gefälschten Paketen an beliebige Ziele zu senden.
Evan Anderson

Antworten:

17

Ein weiteres netcat-ähnliches Tool ist die nmap-Version, ncatdie viele eingebaute Extras enthält, um solche Dinge zu vereinfachen. Das würde funktionieren:

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

-e bedeutet, dass es / bin / cat ausführt (um das zurückzugeben, was Sie eingeben).
-k bedeutet, dass es nach jeder Verbindung lauscht.
-u bedeutet, dass udp
-l 1235 bedeutet, dass es Port 1235 abhört

Mattias Ahnberg
quelle
11

Früher habe ich socat -v PIPE udp-recvfrom:5553,forkden Server und socat - udp:localhost:5553für Clients ausgeführt. Das war eine große Hilfe!

Mohammad Hedayati
quelle
1
Eine Alternative, die von stackoverflow.com/a/35857095/222529 kommt, istsocat TCP4-LISTEN:2000,fork EXEC:cat
Jir
6

Sie können auch socat (anstatt netcat) als Echoserver und netcat als Client verwenden.

Socat-Echoserver (lauscht auf TCP-Port 1234):

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

Netcat-Client (stellt über TCP-Port 1234 eine Verbindung zum Server-IP her):

nc serverip 1234
Andre Miras
quelle
2

Sie können ein C-Programm schreiben, das gabelt nc -u -l -p 4321 und dann dup (2) verwendet , um eine Verbindung herzustellen :

  • nc stdin mit dem stdout der Eltern
  • nc stdout mit dem stdin der Eltern

Dann liest der Elternteil in einer Endlosschleife aus stdin und schreibt in stdout, was auch immer der Elternteil liest.

adamo
quelle
Ich kann verwenden socat -v PIPE UDP-LISTEN:5555,fork, aber die zweite Verbindung wird abgelehnt. Übrigens funktioniert es gut mit TCP-LISTEN. Ich vermeide es zu codieren, sonst könnte ich alles in C schreiben.
Mohammad Hedayati
Sie müssen das Ganze in eine Endlosschleife wickeln: solange es wahr ist; mache soziales Zeug; erledigt
adamo
Sie können sich auch von diesem Tutorial
inspirieren lassen
0

Wenn Sie unter Windows arbeiten und eine Unix-ähnliche Umgebung wie cygwin verwenden, stellt netcat migth den Parameter -e nicht zur Verfügung. Das hat gut funktioniert für mich.

http://bansky.net/echotool/

Chris
quelle
0

netcat Lösung in Ubunutu vorinstalliert

Das netcatin Ubuntu 16.04 vorinstallierte kommt von netcat-openbsdund hat keine -cOption, aber das Handbuch gibt eine Lösung:

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

Dann Kundenbeispiel:

echo abc | netcat localhost 8000

TODO: Wie ändere ich den Wert der Eingabezeichenfolge? Folgendes gibt keine Antwort zurück:

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

Das Remote-Shell-Beispiel funktioniert jedoch:

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

Ich weiß jedoch nicht, wie ich mit gleichzeitigen Anfragen umgehen soll.

Ciro Santilli ist ein Schauspieler
quelle