servidor de eco com netcat ou socat

18

Quero que um servidor de eco UDP obtenha pacotes e responda exatamente o que recebeu. Como posso simplesmente fazer isso usando netcator socat? Ele deve permanecer vivo para sempre e manipular pacotes provenientes de vários hosts.

Mohammad Hedayati
fonte
7
Por favor, não torne essa coisa acessível à Internet. Como é baseado em UDP, pode ser usado para enviar um fluxo de pacotes para destinos arbitrários usando pacotes forjados na origem.
Evan Anderson

Respostas:

17

Outra ferramenta semelhante ao netcat é a versão nmap,, ncatque possui muitos brindes embutidos para simplificar coisas como esta. Isso funcionaria:

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

-e significa que executa / bin / cat (para repetir o que você digita)
-k significa manter vivo, que continua ouvindo após cada conexão
-u significa udp
-l 1235 significa que escuta na porta 1235

Mattias Ahnberg
fonte
11

Eu costumava socat -v PIPE udp-recvfrom:5553,forkexecutar o servidor e socat - udp:localhost:5553para clientes. Esta foi uma grande ajuda!

Mohammad Hedayati
fonte
11
Uma alternativa, vindo de stackoverflow.com/a/35857095/222529 ésocat TCP4-LISTEN:2000,fork EXEC:cat
Jir
6

Você também pode usar o socat (em vez de usar o netcat) como servidor de eco e o netcat como cliente.

Servidor de eco Socat (escuta na porta TCP 1234):

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

Cliente Netcat (conecta ao serverip na porta TCP 1234):

nc serverip 1234
Andre Miras
fonte
2

Você pode escrever um programa C que bifurca nc -u -l -p 4321 e depois usa o dup (2) para conectar:

  • nc stdin com stdout dos pais
  • nc stdout com stdin dos pais

Então, em um loop infinito, o pai lê de stdin e grava em stdout o que o pai lê.

adamo
fonte
Eu posso usar socat -v PIPE UDP-LISTEN:5555,fork, mas a segunda conexão é recusada. A propósito, ele funciona bem com o TCP-LISTEN. Eu estou evitando ao código, caso contrário, eu poderia escrever tudo em C.
Mohammad Hedayati
Você tem que envolver tudo em um loop infinito: enquanto verdadeiro; faça coisas sociais; feito
adamo
Você também pode obter alguma inspiração usando este tutorial
adamo
0

Se você estiver executando no Windows e usar um ambiente unix como o cygwin, o netcat migth não fornecerá o parâmetro -e. Isso funcionou muito bem para mim.

http://bansky.net/echotool/

Chris
fonte
0

netcat solução pré-instalada em Ubunutu

O netcatpré-instalado no Ubuntu 16.04 vem netcat-openbsde não tem -copção, mas o manual fornece uma solução:

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

Exemplo de cliente:

echo abc | netcat localhost 8000

TODO: como modificar o valor da string de entrada? O seguinte não retorna nenhuma resposta:

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

O exemplo do shell remoto, no entanto, funciona:

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

No entanto, não sei como lidar com solicitações simultâneas.

Ciro Santilli adicionou uma nova foto
fonte