Extrair Campos de Pacotes no Tshark

WiresharkBeginner
Pratique Agora

Introdução

Neste laboratório, você aprenderá como extrair campos específicos de pacotes do tráfego de rede usando a ferramenta de linha de comando tshark do Wireshark. Você praticará a seleção de campos comuns como o IP de origem (ip.src) e a porta TCP (tcp.port), enquanto domina a formatação da saída com -T fields e separadores personalizados.

Os exercícios irão guiá-lo através da captura de pacotes, extração de campos com a flag -e e exportação de dados para o formato CSV. Você aprenderá a estruturar a saída para melhor legibilidade e análise, usando técnicas como a configuração de separadores com -E separator=, e redirecionamento de saída.

Selecionar Campos com -e ip.src -e tcp.port

Nesta etapa, você aprenderá como extrair campos específicos de capturas de pacotes de rede usando a ferramenta de linha de comando tshark do Wireshark. Os pacotes de rede contêm muitas informações diferentes, e frequentemente precisamos apenas olhar para campos específicos para nossa análise. Aqui, focaremos em dois campos importantes: o endereço IP de origem (ip.src), que nos diz de onde veio o pacote, e o número da porta TCP (tcp.port), que identifica o serviço ou aplicação específica que está sendo usada.

Primeiro, precisamos de algum tráfego de rede de amostra para trabalhar. O seguinte comando irá gerar um tráfego web simples que podemos capturar:

curl -s http://example.com > /dev/null

Agora, vamos capturar este tráfego usando tshark. O comando abaixo irá capturar 10 pacotes e salvá-los em um arquivo chamado sample.pcap. O formato .pcap é padrão para armazenar capturas de tráfego de rede:

tshark -c 10 -w sample.pcap

Com nosso arquivo de captura pronto, agora podemos extrair apenas os campos que nos interessam. O seguinte comando lê o arquivo de captura e produz apenas os endereços IP de origem e as portas TCP:

tshark -r sample.pcap -T fields -e ip.src -e tcp.port

Vamos detalhar o que cada parte deste comando faz:

  • -r sample.pcap diz ao tshark para ler do nosso arquivo capturado
  • -T fields especifica que queremos a saída no formato de campo (em oposição a outros formatos como XML ou JSON)
  • -e ip.src seleciona o campo de endereço IP de origem
  • -e tcp.port seleciona o campo de porta TCP

A saída aparecerá como valores separados por tabulação, com cada linha representando um pacote e mostrando primeiro o IP de origem, depois o número da porta:

192.168.1.1    443
192.168.1.2    80

Para facilitar o trabalho com isso, podemos salvar a saída em um arquivo. Isso é particularmente útil ao lidar com capturas grandes ou quando queremos processar os dados posteriormente:

tshark -r sample.pcap -T fields -e ip.src -e tcp.port > temp.txt
cat temp.txt

O símbolo > redireciona a saída para um arquivo, e cat nos permite visualizar o conteúdo desse arquivo. Essa abordagem nos dá um registro permanente de nossos dados filtrados que podemos consultar mais tarde ou analisar com outras ferramentas.

Definir Saída para Campos com -T fields

Nesta etapa, exploraremos como personalizar a saída do tshark para exibir apenas os campos de pacote específicos que precisamos. A opção -T fields transforma a exibição padrão de pacotes em um formato estruturado que é mais fácil de processar e analisar.

Quando você executa tshark pela primeira vez sem nenhuma especificação de campo, ele mostra uma visão abrangente, mas às vezes avassaladora, de cada pacote:

tshark -r sample.pcap -c 3

Esta visualização padrão inclui todos os detalhes disponíveis do pacote. No entanto, para uma análise focada, muitas vezes precisamos apenas de algumas informações-chave. É aí que a extração de campos entra em ação. O seguinte comando demonstra como selecionar campos específicos:

tshark -r sample.pcap -T fields -e frame.number -e ip.src -e ip.dst -e tcp.port

Vamos detalhar o que cada parte deste comando faz:

  • -T fields diz ao tshark que queremos uma saída baseada em campos em vez do resumo padrão do pacote
  • -e frame.number extrai a posição do pacote no arquivo de captura
  • -e ip.src mostra de onde veio o pacote (IP de origem)
  • -e ip.dst mostra para onde o pacote está indo (IP de destino)
  • -e tcp.port revela qual porta de rede está sendo usada

O resultado é uma saída limpa, separada por tabulações, que se parece com isto:

1    192.168.1.1    192.168.1.2    443
2    192.168.1.2    192.168.1.1    80

Este formato é particularmente útil quando você precisa processar os dados posteriormente ou importá-los para outras ferramentas. Se você não tiver certeza de quais campos estão disponíveis ou precisar verificar os nomes dos campos, pode pesquisar a lista completa:

tshark -G fields | grep -E 'ip.src|ip.dst|tcp.port'

Este comando ajuda você a descobrir todos os campos relacionados para endereços IP e portas TCP que você pode querer incluir em sua análise.

Usar Separador Vírgula com -E separator=

Nesta etapa, aprenderemos como alterar o separador de campo na saída do tshark de tabulações para vírgulas. Essa modificação é particularmente útil quando você precisa importar os dados para aplicativos de planilha como o Excel ou analisá-los com ferramentas que esperam o formato CSV (Valores Separados por Vírgula).

Primeiro, vamos revisitar o comando básico que usamos anteriormente que produz uma saída separada por tabulações. Isso nos ajuda a entender o que estamos mudando:

tshark -r sample.pcap -T fields -e frame.number -e ip.src -e ip.dst -e tcp.port -c 3

Para converter esta saída para o formato CSV, usaremos a opção -E com separator=,. Isso diz ao tshark para usar vírgulas em vez de tabulações entre os campos:

tshark -r sample.pcap -T fields -e frame.number -e ip.src -e ip.dst -e tcp.port -E separator=, -c 3

Vamos detalhar o que cada parte deste comando faz:

  • -E separator=, é a adição chave que altera o separador para uma vírgula
  • Todas as outras opções (-r, -T fields, campos -e, -c) funcionam exatamente como antes
  • A ordem das opções não importa, desde que todas estejam presentes

Após executar este comando, você verá uma saída formatada assim:

1,192.168.1.1,192.168.1.2,443
2,192.168.1.2,192.168.1.1,80
3,192.168.1.3,192.168.1.4,22

Para confirmar que o separador realmente mudou para vírgulas (especialmente útil se você não conseguir distinguir visualmente tabulações de espaços), você pode canalizar a saída para od -c, que mostra caracteres especiais:

tshark -r sample.pcap -T fields -e frame.number -e ip.src -E separator=, -c 1 | od -c

Esta etapa de verificação ajuda a garantir que sua saída seja interpretada corretamente pelos leitores CSV, o que é crucial ao preparar dados para análise em outras ferramentas.

Exportar para Arquivo com > fields.csv

Nesta etapa, aprenderemos como salvar os dados de pacotes extraídos em um arquivo CSV (Valores Separados por Vírgula). CSV é um formato de arquivo simples que armazena dados tabulares em texto simples, tornando-o perfeito para análise em aplicativos de planilha ou ferramentas de processamento de dados. Ao salvar nossos dados de pacotes em um arquivo, criamos um registro permanente que pode ser compartilhado, analisado ou processado posteriormente.

Vamos combinar tudo o que aprendemos até agora em um único comando que extrai vários campos de pacotes e os salva em um arquivo:

tshark -r sample.pcap -T fields -e frame.number -e ip.src -e ip.dst -e tcp.port -E separator=, > fields.csv

Aqui está o que cada parte faz:

  • -r sample.pcap lê nosso arquivo de captura de pacotes
  • -T fields diz ao Tshark que queremos a saída de campos
  • Cada flag -e especifica um campo a ser extraído (número do pacote, IP de origem, IP de destino e porta)
  • -E separator=, define a vírgula como nosso separador de campo
  • > fields.csv redireciona a saída para um arquivo em vez de mostrá-la na tela

Após executar este comando, vamos verificar se nosso arquivo foi criado corretamente:

ls -l fields.csv
head fields.csv

O comando ls -l mostra os detalhes do arquivo, enquanto head exibe as primeiras linhas. Sua saída deve ser semelhante a esta:

1,192.168.1.1,192.168.1.2,443
2,192.168.1.2,192.168.1.1,80
3,192.168.1.3,192.168.1.4,22

Para tornar esses dados mais compreensíveis, podemos adicionar cabeçalhos de coluna. Veja como criar um novo arquivo com cabeçalhos e combiná-lo com nossos dados:

echo "Packet,Source,Destination,Port" > headers.csv
cat headers.csv fields.csv > final.csv
mv final.csv fields.csv

Isso cria uma nova versão do nosso arquivo CSV com cabeçalhos descritivos no topo, tornando muito mais fácil trabalhar com os dados em aplicativos de planilha.

Resumo

Neste laboratório, você aprendeu como extrair campos específicos de pacotes usando a ferramenta de linha de comando tshark do Wireshark. Os exercícios cobriram a seleção de campos com a flag -e, a formatação da saída com -T fields e a salvaguarda dos resultados em arquivos para análise.

Você também praticou a combinação de múltiplos campos como frame.number, ip.src e tcp.port em saídas estruturadas. Essas técnicas permitem a transformação eficiente de dados brutos de pacotes em formatos organizados adequados para a solução de problemas de rede.