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.


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



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

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.


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/


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.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.