Wireshark é o principal analisador de tráfego de rede de código aberto, usado para captura e inspeção de pacotes em tempo real. A ferramenta suporta mais de dois mil protocolos de rede e funciona em todas as principais plataformas. Segundo o Wireshark User Guide (2026), o utilitário é usado para diagnóstico de redes, depuração de API e análise de segurança no desenvolvimento mobile e web.
Pontos principais
Wireshark é um programa de código aberto (GPLv2) que captura os pacotes de dados que passam pela interface de rede do computador. Baseia-se na biblioteca libpcap (Unix) ou Npcap (Windows) para a captura no nível da camada de enlace do modelo OSI.
No modo normal, a placa de rede recebe apenas os quadros destinados ao seu endereço MAC. O Wireshark muda a interface para o modo promiscuous (indiscriminado), no qual o sistema processa todos os quadros que passam, independentemente do destinatário. Os dados capturados são enviados ao núcleo através de um raw socket, após o que a biblioteca libpcap os copia para o espaço do usuário para análise.
O Wireshark usa uma arquitetura modular: cada protocolo é implementado como um dissector separado — um plugin que analisa os dados binários e os exibe de forma estruturada. Em 2026, o programa implementa dissectors para 2 874 protocolos, incluindo HTTP/2, QUIC, gRPC e MQTT. Os dissectors funcionam através do sistema de árvore de protocolos — cada pacote é analisado camada por camada: do quadro Ethernet ao nível de aplicação.
// Exemplo de um dissector simples para um protocolo personalizado
static int dissect_custom(tvbuff_t *tvb, packet_info *pinfo,
proto_tree *tree, void *data) {
proto_item *ti = proto_tree_add_item(tree, hf_custom_field,
tvb, 0, tvb_captured_length(tvb), ENC_NA);
return 0;
}
A interface gráfica do Wireshark é dividida em três painéis: lista de pacotes (packet list), detalhes de protocolos (packet details) e dump hexadecimal (packet bytes). Cada painel é atualizado em tempo real e suporta navegação interativa — clicar em uma linha de pacote abre sua estrutura completa.
A ferramenta lê arquivos de captura nos formatos pcap, pcapng, snoop e NetMon. A exportação é possível para JSON, XML, CSV e texto simples. Entre os principais protocolos de nível de aplicação estão HTTP/HTTPS, DNS, DHCP, TCP, UDP, TLS, QUIC, WebSocket, MQTT, AMQP e Protobuf. Para o desenvolvimento mobile, o suporte a gRPC e HTTP/2 com multiplexação de fluxos é especialmente importante.
Os utilitários integrados incluem Follow Stream (reconstrução do diálogo completo TCP/UDP/TLS), IO Graph (gráfico de throughput), estatísticas de conversas (Conversations) e hierarquia de protocolos (Protocol Hierarchy). O recurso Flow Graph visualiza a sequência de pacotes entre nós, o que facilita encontrar as causas dos atrasos ao depurar a interação cliente-servidor.
O início da captura começa com a seleção de uma interface de rede — Ethernet, Wi-Fi, Bluetooth PAN ou Loopback. No Windows, pode ser necessário instalar o Npcap no WinPcap API Compatible Mode. Para captura em dispositivos mobile, usa-se o Remote Packet Capture através de um túnel SSH.
Em um dispositivo Android, o tráfego é capturado com tcpdump ou PCAPdroid e, em seguida, o arquivo é transferido para o computador de trabalho. O comando para captura remota via ADB:
# Captura de tráfego no Android via ADB shell
adb shell tcpdump -i wlan0 -s 0 -w /sdcard/capture.pcap
# Copiar para o computador
adb pull /sdcard/capture.pcap .
No Windows, o tráfego de localhost (127.0.0.1) não passa pela interface física, então o Wireshark não o vê diretamente. A solução é instalar o Npcap com a opção Loopback Support ou redirecionar o tráfego através do RawCap. No Linux e no macOS, a interface loopback (lo) é capturada sem configurações adicionais.
O Wireshark oferece dois tipos de filtros: capture filters (aplicados antes da captura, no nível do libpcap) e display filters (aplicados aos dados já capturados). Os capture filters usam a sintaxe BPF (Berkeley Packet Filter), os display filters — a linguagem própria do Wireshark com autocompletar.
Os filtros BPF são escritos no formato tcpdump e executados no núcleo, o que minimiza a perda de pacotes sob alta carga. Exemplos de filtros:
| Filtro | Função |
|---|---|
| tcp port 80 | Apenas tráfego HTTP na porta padrão |
| host 192.168.1.1 | Pacotes de um host específico |
| not arp | Todos os pacotes, exceto requisições ARP |
Os display filters são aplicados posteriormente e suportam condições complexas com os operadores lógicos and, or, not. Por exemplo: http.request.method == "POST" and ip.src == 192.168.0.100 filtrará apenas as requisições POST de um IP específico. Os filtros podem ser salvos como favoritos para reutilização.
O tráfego HTTP é exibido no Wireshark de forma legível: método de requisição, URI, cabeçalhos e corpo da resposta. A função Follow TCP Stream reúne o diálogo completo entre cliente e servidor em uma única janela. Para HTTPS, é necessário descriptografar as sessões TLS, pois o conteúdo está criptografado.
Os navegadores Chrome e Firefox suportam a variável de ambiente SSLKEYLOGFILE, que grava as chaves de sessão TLS em um arquivo de texto. O Wireshark usa esse arquivo para descriptografar os registros. A configuração é feita através de Preferences → Protocols → TLS → (Pre)-Master-Secret log filename.
# Iniciar o Chrome com registro de chaves TLS
export SSLKEYLOGFILE=/tmp/sslkeys.log
google-chrome .
# Após a captura, indicar o caminho no Wireshark
# Edit → Preferences → Protocols → TLS → Log Filename
O gRPC usa HTTP/2 como transporte e Protobuf para serialização de dados. O Wireshark descriptografa mensagens gRPC se for fornecido um arquivo .proto com as definições das estruturas. O dissector Protobuf mapeia os campos binários para os nomes do arquivo proto, o que é fundamental ao depurar uma arquitetura de microsserviços.
A depuração mobile com o Wireshark exige a proxytização do tráfego do dispositivo para o computador. O método mais confiável é criar um ponto de acesso Wi-Fi no notebook e redirecionar o tráfego via NAT. No Android, também está disponível o método VPN com o aplicativo PCAPdroid sem direitos de root.
O PCAPdroid cria um serviço VPN local que redireciona o tráfego dos aplicativos para o Wireshark através de um fluxo UDP. O aplicativo não exige acesso root e suporta filtragem por processos individuais. Os arquivos pcap obtidos são abertos no Wireshark para análise completa.
# Recebimento do tráfego do PCAPdroid no computador
# PCAPdroid → Settings → PCAP dumper → UDP Exporter
nc -l -u 192.168.0.10 12345 > capture.pcap
O Wireshark é uma ferramenta universal, mas para tarefas específicas existem soluções mais especializadas. O tcpdump é mais eficaz para captura em servidor sem gráficos, o Charles Proxy é mais conveniente para analisar tráfego HTTPS, e o Fiddler — para inspeção de tráfego web com a possibilidade de modificar requisições em tempo real.
O Charles Proxy atua como um servidor proxy intermediário com a capacidade de interceptar HTTPS através de sua própria certificação SSL. Ao contrário do Wireshark, o Charles não exige configuração do SSLKEYLOGFILE e pode não apenas visualizar, mas também modificar o tráfego — substituir respostas, simular atrasos e repetir requisições.
O Fiddler é outra ferramenta de proxy popular no ecossistema .NET. Ele fornece um editor de requisições integrado, suporte a AutoResponder para mocks e um composer para criar requisições personalizadas. O Fiddler é mais adequado para análise de tráfego web do navegador, o Wireshark — para análise de rede de baixo nível.
| Ferramenta | Tipo | HTTPS sem chaves | Modificação de tráfego |
|---|---|---|---|
| Wireshark | Sniffer | Não (precisa de SSLKEYLOGFILE) | Apenas visualização |
| Charles | Proxy | Sim (certificado personalizado) | Sim |
| Fiddler | Proxy | Sim (certificado personalizado) | Sim |
| tcpdump | Sniffer | Não | Apenas visualização |
O Wireshark exige compreensão dos princípios básicos da captura de tráfego. Um dos cenários frequentes é encontrar a origem dos atrasos em um aplicativo mobile através do filtro tcp.analysis.ack_rtt. Para encontrar requisições HTTP lentas, use a condição http.time maior que 1.
Para encontrar requisições HTTP lentas, filtre http.time maior que 1 — o Wireshark mostrará as requisições com tempo de resposta superior a 1 segundo. Combine com ip.addr para analisar um servidor específico. Um IO Graph com intervalo de 1 segundo mostrará claramente os picos de carga.
O Wireshark suporta exportação para CSV, JSON e XML através do menu File. Para análise automática, use o tshark — a versão de console que funciona em pipelines CI/CD. O Tshark suporta os mesmos filtros e formatos de saída que a versão gráfica.
O Wireshark exige compreensão dos princípios básicos da captura de tráfego. Um dos cenários frequentes é encontrar a origem dos atrasos em um aplicativo mobile através do filtro tcp.analysis.ack_rtt. Para encontrar requisições HTTP lentas, use a condição http.time maior que 1.
Para encontrar requisições HTTP lentas, filtre http.time maior que 1 — o Wireshark mostrará as requisições com tempo de resposta superior a 1 segundo. Combine com ip.addr para analisar um servidor específico. Um IO Graph com intervalo de 1 segundo mostrará claramente os picos de carga.
O Wireshark suporta exportação para CSV, JSON e XML através do menu File. Para análise automática, use o tshark — a versão de console que funciona em pipelines CI/CD. O Tshark suporta os mesmos filtros e formatos de saída que a versão gráfica.
Perguntas frequentes
O Wireshark fornece uma interface gráfica com visualização de pacotes, filtros integrados e estatísticas. O tcpdump é um utilitário de console sem GUI, conveniente para captura em servidor via SSH. O Wireshark consegue ler arquivos do tcpdump e vice-versa.
Para descriptografar, é necessário um arquivo de chaves de sessão TLS (SSLKEYLOGFILE). O Chrome e o Firefox exportam as chaves quando iniciados com a variável de ambiente. O caminho do arquivo é indicado nas configurações Protocols → TLS no Wireshark.
O tráfego loopback no Windows não passa pelo driver Npcap por padrão. A solução é instalar o Npcap com a opção Loopback Support ativada ou usar o utilitário RawCap para capturar o tráfego local.
Sim, através da proxytização do tráfego para o computador. O Android suporta captura via PCAPdroid (sem root) ou tcpdump (com root). O iOS exige RVI (Remote Virtual Interface) via macOS ou jailbreak para captura.
O display filter frame contains procura uma string ou sequência hexadecimal em todo o pacote. Exemplo: frame contains "password" encontrará pacotes com a substring password em qualquer campo. Para busca exata por campo, use http.request.uri contains "api".
Resumo
Vamos desenvolver um aplicativo móvel chave na mão
A IT Sectr cria aplicativos para iOS e Android para startups e empresas desde 2017. Nós vamos aconselhá-lo e propor a melhor solução.
Leia também