Gerador de Comando tcpdump
Monta um comando tcpdump com interface, filtro BPF (host, port), saída para arquivo e modo verboso.
tcpdump em profundidade: filtros BPF, arquivos de captura e análise legal de pacotes
O tcpdump é o analisador de pacotes canônico do mundo Unix/BSD. Ele abre um socket bruto em uma interface de rede, entrega cada frame ao motor BPF (Berkeley Packet Filter) dentro do kernel e imprime — ou grava — apenas os pacotes que casam com a expressão que você passou. Está presente em praticamente toda distribuição Linux, no macOS, no FreeBSD e em vários appliances de rede. Engenheiros usam para diagnosticar conexões, gerar arquivos .pcap para análise posterior no Wireshark, fazer forense digital, medir latência e validar regras de firewall. Esta ferramenta ajuda a montar um comando sintaticamente correto, mas a responsabilidade de capturar somente em redes que você está autorizado a monitorar é integralmente sua.
Sintaxe e flags essenciais
A forma geral é tcpdump [opções] [filtro BPF]. As opções mais usadas são:
-i <interface>— escolhe a interface (eth0,wlan0,any,lo).-w arquivo.pcap— grava os pacotes brutos em arquivo (abrir depois no Wireshark/tshark).-r arquivo.pcap— lê pacotes de uma captura existente.-n/-nn— não resolve DNS nem nome de porta (muito mais rápido e sem queries DNS extra).-X/-XX— imprime hex + ASCII (com cabeçalho de camada 2 no-XX).-v,-vv,-vvv— verbosidade crescente.-c N— para após capturar N pacotes.-s N— snaplen (bytes por pacote). O padrão moderno é 262144; em versões antigas use-s 0para pegar o pacote inteiro.-G N -W M— rotaciona o arquivo de saída a cada N segundos, mantendo no máximo M arquivos.-Z usuario— desce privilégios parausuariologo após abrir o socket.
Expressões BPF
O filtro vem depois das opções. São pequenos programas compilados JIT para código de kernel, então mesmo filtros grandes custam quase nada por pacote:
host 192.168.1.1 # origem ou destino
src host 10.0.0.5 # só origem
dst host 8.8.8.8 # só destino
port 443 # qualquer lado
tcp port 80 # protocolo + porta
not port 22 # exclui SSH
net 10.0.0.0/24 # sub-rede
icmp # protocolo
tcp[tcpflags] & tcp-syn != 0 # pacotes SYN (handshake)
udp and port 53 # DNS sobre UDP
arp # tráfego ARP
(tcp port 80 or tcp port 443) and host exemplo.com
Combine com and, or, not e parênteses. Sempre coloque o filtro entre aspas para o shell não comer caracteres especiais.
Exemplos comentados
# Tráfego HTTPS ao vivo em eth0, sem DNS
sudo tcpdump -ni eth0 'tcp port 443'
# Salva 1000 pacotes SSH para análise offline
sudo tcpdump -i any -c 1000 -w ssh.pcap 'tcp port 22'
# Rotação horária por 24 horas (24 arquivos)
sudo tcpdump -i eth0 -G 3600 -W 24 -w 'cap-%Y%m%d-%H.pcap'
# Lê um pcap e filtra por host
tcpdump -nr captura.pcap 'host 10.0.0.5'
# Apenas pacotes SYN (assinatura de port-scan)
sudo tcpdump -ni eth0 'tcp[tcpflags] & tcp-syn != 0 and not src net 10.0.0.0/24'
tcpdump vs alternativas
Wireshark oferece a melhor UX para análise offline; tshark é a versão CLI dele e suporta mais dissectores que o tcpdump. ngrep filtra por conteúdo (texto) do pacote. tcpflow reconstrói streams TCP. Para visualização de banda use iftop, nload ou nethogs. O tcpdump brilha quando você precisa de uma ferramenta portátil, scriptável e leve, geralmente já instalada na máquina-alvo.
Uso legal e ético
Capturar pacotes em redes que você não administra é ilegal em várias jurisdições. Nos Estados Unidos valem o CFAA e o Wiretap Act; no Brasil a Lei 12.737/2012 (Lei Carolina Dieckmann) e a LGPD restringem a interceptação de comunicações sem consentimento. Pentests precisam de escopo escrito e autorização explícita do dono da rede. Em laboratório ou sala de aula, capture apenas dentro de uma rede isolada sob seu controle total.
FAQ
Preciso de root? Sim — tcpdump abre um socket raw, o que exige CAP_NET_RAW. Use sudo ou conceda a capability ao binário: setcap cap_net_raw,cap_net_admin=eip /usr/sbin/tcpdump.
Consigo ver tráfego HTTPS? Só metadados — IP de origem/destino, hostname no SNI e o handshake TLS. O payload é cifrado; para decriptar é preciso as chaves TLS (SSLKEYLOGFILE) e o Wireshark.
Como rotaciono arquivos de captura? Combine -G <segundos> com -W <quantidade> e um padrão strftime no nome: -G 3600 -W 24 -w 'cap-%Y%m%d-%H.pcap' gera 24 arquivos de uma hora em buffer circular.
Por que perco pacotes em alta velocidade? O ring buffer do kernel estoura. Aumente com -B <KiB>, escreva em SSD, tire flags de verbosidade ou use um filtro BPF mais restritivo.
O formato .pcap é portátil? Sim — tanto o libpcap clássico quanto o pcapng abrem no Wireshark, tshark, Zeek, Suricata e na maioria das ferramentas de forense de rede.
Ferramentas Relacionadas
Gerador de Comando nmap (Completo)
Monta uma varredura nmap com alvo, intervalo de portas, tipo de scan (SYN/Connect/UDP) e detecção de serviço.
Gerador de comando tmux
Monte comandos tmux comuns: nova sessão, anexar, dividir janela, renomear, kill-session, new-window com nome.
Gerador de comando kubectl
Monta comandos kubectl comuns (get, apply, delete, logs, exec, scale) com namespace, rótulos e formatos de saída.