serwer echa z netcat lub socat

18

Chcę, aby serwer echa UDP pobierał pakiety i odpowiadał dokładnie na to, co otrzymał. Jak mogę to zrobić za pomocą netcatlub socat? Powinien pozostać przy życiu na zawsze i obsługiwać pakiety pochodzące z kilku hostów.

Mohammad Hedayati
źródło
7
Proszę, nie udostępniaj tego w Internecie. Ponieważ jest oparty na UDP, może służyć do wysyłania strumienia pakietów do dowolnych miejsc docelowych przy użyciu pakietów sfałszowanych przez źródło.
Evan Anderson

Odpowiedzi:

17

Kolejnym narzędziem podobnym do netcat jest wersja nmap ncat, która ma wiele wbudowanych gadżetów upraszczających takie rzeczy. To by działało:

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

-e oznacza, że ​​wykonuje polecenie / bin / cat (aby powtórzyć to, co wpisujesz)
-k oznacza utrzymanie przy życiu, że nasłuchuje po każdym połączeniu
-u oznacza udp
-l 1235 oznacza, że ​​nasłuchuje na porcie 1235

Mattias Ahnberg
źródło
11

Kiedyś socat -v PIPE udp-recvfrom:5553,forkdziałałem na serwerze i socat - udp:localhost:5553dla klientów. To była świetna pomoc!

Mohammad Hedayati
źródło
1
Alternatywą, pochodzącą ze stackoverflow.com/a/35857095/222529, jestsocat TCP4-LISTEN:2000,fork EXEC:cat
Jir
6

Możesz także użyć socat (zamiast netcat) jako serwera echa i netcat jako klienta.

Serwer echa Socat (nasłuchuje na porcie TCP 1234):

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

Klient Netcat (łączy się z serverip na porcie TCP 1234):

nc serverip 1234
Andre Miras
źródło
2

Możesz napisać program C, który rozwidla, nc -u -l -p 4321 a następnie używa dup (2) do połączenia:

  • nc stdin z stdoutem rodzica
  • nc stdout ze stdinem rodzica

Następnie w nieskończonej pętli rodzic czyta ze standardowego wejścia i zapisuje na standardowym ekranie wszystko, co czyta rodzic.

adamo
źródło
Mogę użyć socat -v PIPE UDP-LISTEN:5555,fork, ale drugie połączenie zostanie odrzucone. Nawiasem mówiąc, działa dobrze z TCP-LISTEN.
Unikam
Musisz owinąć wszystko w nieskończoną pętlę: choć prawda; robić rzeczy towarzyskie; gotowe
adamo,
Możesz także czerpać inspirację, korzystając z tego samouczka
adamo
0

Jeśli pracujesz w systemie Windows i używasz środowiska uniksowego, takiego jak cygwin, netcat migth nie podaje parametru -e. Dla mnie to zadziałało.

http://bansky.net/echotool/

Chris
źródło
0

netcat rozwiązanie wstępnie zainstalowane w Ubunutu

netcatPreinstalowany w Ubuntu 16.04 pochodzi netcat-openbsdi nie ma -copcji, ale ręczny daje rozwiązanie:

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

Następnie przykład klienta:

echo abc | netcat localhost 8000

DO ZROBIENIA: jak zmodyfikować wartość ciągu wejściowego? Poniższe nie zwraca żadnej odpowiedzi:

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

Przykład powłoki zdalnej działa jednak:

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

Jednak nie wiem jak sobie radzić z równoległymi żądaniami.

Ciro Santilli
źródło