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.


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



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

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.


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

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.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.