===== Exemplos do comando nc (netcat) ===== ==== Nível Básico ==== * **Verificar a conectividade com uma porta em um servidor remoto:** - nc -zv servidor_remoto 80 - Verifica se a porta `80` no servidor `servidor_remoto` está aberta (a opção `-z` evita enviar dados, e `-v` exibe informações detalhadas). * **Iniciar um servidor de escuta em uma porta específica:** - nc -l 12345 - Coloca o `netcat` em modo de escuta na porta `12345`, aguardando conexões. * **Conectar-se a um servidor via TCP em uma porta específica:** - nc servidor_remoto 12345 - Conecta-se ao servidor `servidor_remoto` na porta `12345` via TCP. * **Enviar uma mensagem de texto simples via netcat:** - echo "Olá, mundo" | nc servidor_remoto 12345 - Envia a mensagem "Olá, mundo" ao servidor `servidor_remoto` na porta `12345`. ==== Nível Intermediário ==== * **Transferir um arquivo de uma máquina para outra com `nc`:** - **No servidor de destino (receber):**
nc -l 12345 > arquivo_recebido.txt
**Na máquina de origem (enviar):**
nc servidor_remoto 12345 < arquivo.txt - Transfere o arquivo `arquivo.txt` de uma máquina para outra, salvando-o como `arquivo_recebido.txt`. * **Testar múltiplas portas em um servidor remoto:** - nc -zv servidor_remoto 20-25 - Testa as portas `20` a `25` no servidor `servidor_remoto` para verificar se estão abertas. * **Escutar em uma porta específica e mostrar uma mensagem de confirmação:** - nc -lv 12345 - Coloca o netcat em modo de escuta na porta `12345` e exibe mensagens detalhadas sobre a conexão. * **Iniciar um chat bidirecional com netcat:** - **No servidor A:**
nc -l 12345
**No cliente B:**
nc servidor_A 12345 - Inicia uma comunicação bidirecional entre o servidor A e o cliente B, funcionando como um chat. * **Verificar a conectividade via UDP:** - nc -u -zv servidor_remoto 12345 - Testa a conectividade com a porta `12345` no servidor `servidor_remoto` via UDP. ==== Nível Avançado ==== * **Criar uma conexão reversa para acesso remoto:** - **No cliente (iniciador da conexão):**
nc -lvp 4444 -e /bin/bash
**No servidor (conectando-se ao cliente):**
nc cliente_remoto 4444 - Cria uma conexão reversa, onde o servidor obtém um shell na máquina cliente, permitindo execução remota de comandos. * **Escutar em uma porta específica e logar conexões recebidas:** - nc -l 12345 | tee log_conexoes.txt - Escuta na porta `12345` e grava todas as conexões recebidas no arquivo `log_conexoes.txt`. * **Transferir múltiplos arquivos via tar e netcat:** - **No servidor de destino (receber):**
nc -l 12345 | tar xvf -
**Na máquina de origem (enviar):**
tar cvf - /diretorio_a_enviar | nc servidor_remoto 12345 - Transfere um diretório inteiro compactado com `tar` via netcat, descompactando diretamente no destino. * **Enviar um arquivo via UDP:** - **No servidor de destino (receber):**
nc -u -l 12345 > arquivo_recebido.txt
**Na máquina de origem (enviar):**
nc -u servidor_remoto 12345 < arquivo.txt - Envia o arquivo `arquivo.txt` via UDP para o servidor remoto, salvando-o como `arquivo_recebido.txt`. * **Executar um port scan simples em um servidor:** - nc -zv servidor_remoto 1-65535 - Escaneia todas as portas do servidor `servidor_remoto` (portas de `1` a `65535`) para verificar quais estão abertas. ==== Nível Especializado ==== * **Criar um proxy simples com netcat (proxying):** - nc -l 8888 | nc servidor_remoto 80 - Cria um proxy simples que escuta na porta `8888` e redireciona o tráfego para o servidor `servidor_remoto` na porta `80`. * **Criar um servidor HTTP simples com netcat:** - while true; do echo -e "HTTP/1.1 200 OK\r\n\r\nBem vindo ao servidor HTTP" | nc -l 8080; done - Cria um servidor HTTP simples que responde com uma mensagem de boas-vindas em todas as conexões na porta `8080`. * **Encaminhar portas para outros servidores (Port Forwarding) com netcat:** - nc -l 8080 -c "nc servidor_remoto 80" - Redireciona o tráfego da porta `8080` local para a porta `80` do `servidor_remoto`. * **Criar um relay TCP usando netcat:** - nc -l 12345 | nc outro_servidor 80 - Cria um relay TCP que recebe conexões na porta `12345` e encaminha as solicitações para outro servidor na porta `80`. * **Manter uma conexão persistente com reconexões automáticas:** - while true; do nc servidor_remoto 12345; sleep 5; done - Tenta se conectar ao servidor remoto na porta `12345`, e caso a conexão falhe, tenta novamente após 5 segundos. * **Escanear portas específicas via UDP:** - nc -uzv servidor_remoto 53 123 161 - Escaneia as portas `53`, `123`, e `161` no servidor `servidor_remoto` via UDP, verificando se estão abertas. * **Enviar um comando bash remoto via netcat:** - **No servidor que receberá o comando:**
nc -l -p 4444 -e /bin/bash
**Na máquina que envia o comando:**
nc servidor_remoto 4444 - Estabelece uma sessão de shell interativo entre a máquina cliente e o servidor.