1001Ferramentas
📡Geradores

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 0 para 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 para usuario logo 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