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.


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



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

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ê.


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/


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.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.