Netcat, presente no mercado há quase três décadas, é uma ferramenta de solução de problemas notavelmente simples, mas poderosa. Este artigo explora sua versatilidade e eficácia em várias aplicações.
Netcat como Cliente
Netcat permite testar servidores remotos em portas abertas de maneira fácil. Você pode enviar qualquer tipo de dados, seja via TCP ou UDP, para a porta desejada. Por exemplo, para enviar dados UDP básicos para um servidor local na porta 5000, usamos:
echo "hello" | nc -u 127.0.0.1 5000
Se o servidor esperar esse tipo de dados, responderá, e a resposta aparecerá no console. Netcat também maneja dados JSON ou binários de maneira similar.
Netcat como Servidor
Netcat pode funcionar como um servidor de soquetes simples. Com um comando como:
nc -l -u -p 5000 127.0.0.1
Você pode abrir a porta 5000 em sua máquina local para tráfego UDP. Combinado com comandos de cliente, Netcat pode ser usado para transmitir dados, funcionando como um servidor de mensagens.
Enviando Diversos Tipos de Cargas
Netcat é capaz de enviar uma variedade de cargas de dados. Por exemplo, para emitir uma solicitação HTTP GET com Netcat, usamos:
printf 'GET / HTTP/1.1\r\nHost:google.com\r\n\r\n' | nc google.com 80
Isso manualmente configura o formato da solicitação HTTP. Embora não seja ideal para sites grandes, é útil para servidores de desenvolvimento onde você deseja manipular manualmente a carga útil HTTP.
Descobrindo Portas Abertas
Netcat também pode ser usado para escanear infraestruturas em busca de portas abertas. Para verificar se uma porta TCP está aberta em um servidor, utiliza-se:
nc -zv google.com 80
Isso mostrará se a porta está aberta. O comando pode ser ajustado para verificar diferentes hosts e faixas de portas. Para portas UDP, adiciona-se a flag -u
.
Transferindo Arquivos
Embora não seja o método mais rápido ou confiável, Netcat pode transferir arquivos. Para configurar um servidor remoto para receber um arquivo, usa-se:
nc -l -p 5000 > foo.txt
E para enviar um arquivo de um cliente local para este servidor, utiliza-se:
nc <host> 5000 < foo.txt
Isso transfere o conteúdo de foo.txt
para o servidor Netcat remoto.
Netcat, apesar de sua simplicidade, é uma ferramenta de solução de problemas extremamente poderosa e flexível, adequada para uma variedade de tarefas em redes e desenvolvimento.
Sou um profissional na área de Tecnologia da informação, especializado em monitoramento de ambientes, Sysadmin e na cultura DevOps. Possuo certificações de Segurança, AWS e Zabbix.