Android

Comando Netcat (nc) com exemplos

Chatting Using nc/netcat command

Chatting Using nc/netcat command

Índice:

Anonim

O Netcat (ou nc) é um utilitário de linha de comando que lê e grava dados nas conexões de rede, usando os protocolos TCP ou UDP. É uma das ferramentas mais poderosas no arsenal de administradores de redes e sistemas e é considerada um canivete suíço de ferramentas de rede.

O Netcat é multiplataforma e está disponível para Linux, macOS, Windows e BSD. Você pode usar o Netcat para depurar e monitorar conexões de rede, procurar portas abertas, transferir dados, como proxy e muito mais. O pacote Netcat é pré-instalado no macOS e em distribuições populares do Linux como o Ubuntu.

Sintaxe do Netcat

A sintaxe mais básica do utilitário Netcat tem o seguinte formato:

nc host port

No Ubuntu, você pode usar o netcat ou o nc . Ambos são links simbólicos para a versão openBSD do Netcat.

Por padrão, o Netcat tentará iniciar uma conexão TCP com o host e a porta especificados. Se você deseja estabelecer uma conexão UDP, use a opção -u :

nc -u host port

Port Scanning

Portas de digitalização é um dos usos mais comuns do Netcat. Você pode digitalizar uma única porta ou um intervalo de portas.

Por exemplo, para procurar portas abertas no intervalo de 20 a 80, você usaria o seguinte comando:

nc -z -v 10.10.8.8 20-80

A opção -z diz ao nc para procurar apenas portas abertas, sem enviar nenhum dado a elas e a opção -v para fornecer informações mais detalhadas.

A saída será mais ou menos assim:

nc: connect to 10.10.8.8 port 20 (tcp) failed: Connection refused nc: connect to 10.10.8.8 port 21 (tcp) failed: Connection refused Connection to 10.10.8.8 22 port succeeded! nc: connect to 10.10.8.8 port 23 (tcp) failed: Connection refused… nc: connect to 10.10.8.8 port 79 (tcp) failed: Connection refused Connection to 10.10.8.8 80 port succeeded!

nc -z -v 10.10.8.8 20-80 2>&1 | grep succeeded

Connection to 10.10.8.8 22 port succeeded! Connection to 10.10.8.8 80 port succeeded!

Você também pode usar o Netcat para encontrar o software do servidor e sua versão. Por exemplo, se você enviar um comando "EXIT" para o servidor na porta SSH padrão 22:

echo "EXIT" | nc 10.10.8.8 22

A saída será mais ou menos assim:

SSH-2.0-OpenSSH_7.6p1 Ubuntu-4 Protocol mismatch.

Para procurar portas UDP, basta adicionar a opção -u ao comando, como mostrado abaixo:

nc -z -v -u 10.10.8.8 20-80

Na maioria das situações, o Nmap é uma ferramenta melhor que o Netcat para varredura de porta complexa.

Enviando arquivos pelo Netcat

O Netcat pode ser usado para transferir dados de um host para outro, criando um modelo básico de cliente / servidor.

Isso funciona configurando o Netcat para escutar uma porta específica (usando a opção -l ) no host de recebimento e estabelecendo uma conexão TCP regular do outro host e enviando o arquivo por ele.

No recebimento, execute o seguinte comando que abrirá a porta 5555 para a conexão recebida e redirecionará a saída para o arquivo:

nc -l 5555 > file_name

No host de envio, conecte-se ao host de recebimento e envie o arquivo:

nc receiving.host.com 5555 < file_name

Para transferir um diretório, você pode usar o tar para arquivar o diretório no host de origem e extrair o archive no host de destino.

No host de recebimento, configure a ferramenta Netcat para escutar uma conexão de entrada na porta 5555. Os dados recebidos são canalizados para o comando tar que extrairá o arquivo morto:

nc -l 5555 | tar xzvf -

No host de envio, empacote o diretório e envie os dados conectando-se ao processo de escuta nc no host de recebimento:

tar czvf - /path/to/dir | nc receiving.host.com 5555

Você pode assistir o progresso da transferência nos dois extremos. Depois de concluído, digite CTRL+C para fechar a conexão.

Criando um servidor de bate-papo simples

O procedimento para criar um bate-papo online entre dois ou mais hosts é o mesmo que ao transferir arquivos.

No primeiro host, inicie um processo Netcat para atender na porta 5555:

nc -l 5555

No segundo host, execute o seguinte comando para conectar-se à porta de atendimento:

nc first.host.com 5555

Agora, se você digitar uma mensagem e pressionar ENTER ela será mostrada nos dois hosts.

Para fechar a conexão, digite CTRL+C

Executando uma Solicitação HTTP

Embora existam ferramentas muito melhores para solicitações HTTP, como curl, você também pode usar o Netcat para enviar várias solicitações para servidores remotos.

Por exemplo, para recuperar a página de manual Netcat no site do OpenBSD, digite:

printf "GET /nc.1 HTTP/1.1\r\nHost: man.openbsd.org\r\n\r\n" | nc man.openbsd.org 80

A resposta completa, incluindo os cabeçalhos HTTP e o código HTML, será impressa no terminal.

Conclusão

Neste tutorial, você aprendeu como usar o utilitário Netcat para estabelecer e testar conexões TCP e UDP.

Para obter mais informações, visite a página do manual Netcat e leia sobre todas as outras opções poderosas do comando Netcat.

terminal netcat