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