Chatting Using nc/netcat command
Índice:
- Sintaxe do Netcat
- Port Scanning
- Enviando arquivos pelo Netcat
- Criando um servidor de bate-papo simples
- Executando uma Solicitação HTTP
- Conclusão
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
:
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 netcatComando de execução do Docker com exemplos
O comando docker run cria um contêiner a partir de uma determinada imagem e inicia o contêiner usando um determinado comando. É um dos primeiros comandos com os quais você deve se familiarizar ao começar a trabalhar com o Docker.
Comando eco no linux com exemplos
O comando echo é um dos comandos mais básicos e mais usados no Linux. Os argumentos transmitidos para eco são impressos na saída padrão.
Comando Curl no linux com exemplos
O Curl é um utilitário de linha de comando para transferir dados de ou para um servidor projetado para funcionar sem a interação do usuário. Neste tutorial, mostraremos como usar a ferramenta de curvatura através de exemplos práticos e explicações detalhadas das opções de curvatura mais comuns.







