server echo con netcat o socat


18

Voglio un server echo UDP per ottenere i pacchetti e rispondere esattamente a ciò che ha ricevuto. Come posso semplicemente farlo usando netcato socat? Dovrebbe rimanere in vita per sempre e gestire i pacchetti provenienti da più host.


7
Per favore, non rendere questa cosa accessibile a Internet. Poiché è basato su UDP, può essere utilizzato per inviare un flusso di pacchetti a destinazioni arbitrarie utilizzando pacchetti forgiati alla fonte.
Evan Anderson,

Risposte:


17

Un altro strumento simile a netcat è la versione nmap ncat, che ha molte chicche integrate per semplificare cose come questa. Questo funzionerebbe:

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

-e significa che esegue / bin / cat (per ripetere ciò che digiti)
-k significa keep-alive, che continua ad ascoltare dopo ogni connessione
-u significa udp
-l 1235 significa che è in ascolto sulla porta 1235



6

È inoltre possibile utilizzare socat (anziché utilizzare netcat) come server echo e netcat come client.

Socat echo server (ascolta sulla porta TCP 1234):

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

Client Netcat (si collega a serverip sulla porta TCP 1234):

nc serverip 1234

2

È possibile scrivere un programma C che esegue il fork nc -u -l -p 4321 e quindi utilizza dup (2) per connettersi:

  • nc stdin con lo stdout del genitore
  • nc stdout con lo stdin del genitore

Quindi in un ciclo infinito il genitore legge da stdin e scrive in stdout qualunque cosa il genitore legga.


Posso usare socat -v PIPE UDP-LISTEN:5555,fork, ma la seconda connessione viene rifiutata. A proposito, funziona benissimo con TCP-LISTEN. Sto evitando il codice, altrimenti potrei scrivere tutto in C.
Mohammad Hedayati

Devi avvolgere il tutto in un ciclo infinito: mentre vero; fare cose socat; fatto
adamo,

Puoi anche trarre ispirazione da questo tutorial
Adamo,

0

Se si esegue Windows e si utilizza un ambiente simile a unix come cygwin, netcat migth non fornisce il parametro -e. Questo ha funzionato bene per me.

http://bansky.net/echotool/


0

netcat soluzione preinstallata in Ubunutu

Il netcatpreinstallato in Ubuntu 16.04 proviene netcat-openbsde non ha -copzioni, ma il manuale offre una soluzione:

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

Quindi esempio client:

echo abc | netcat localhost 8000

TODO: come modificare il valore della stringa di input? Quanto segue non restituisce alcuna risposta:

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

L'esempio della shell remota funziona comunque:

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

Tuttavia, non so come gestire le richieste simultanee.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.