Contar Endereços IP em Logs do Tcpdump

ATENÇÃO: o conteúdo desta postagem pode estar desatualizado. Foi utilizado como base uma versão antiga do Linux Ubuntu. Tente o procedimento por sua própria conta e risco.

Problema simples: contar os endereços distintos que existem em um dump criado pelo tcpdump. Melhor solução, pelo menos ao meu ver, era correr para o Shell Script. Tenho que admitir que é uma das linguagens mais simples e flexíveis que conheço. Não sou nenhum bom entendedor, mas sei fazer alguma coisa quando possível. Vamos fazer o desafio proposto então.

O arquivo padrão do tcpdump é um formato binário um pouco difícil de trabalhar. Como o tempo para mim não é um problema, resolvi apelar para uma ferramenta bem interessante: o tcpreplay. O que ele faz? Simplesmente mostra em um formato humano o conteúdo existente no dump. Ele demora a trabalhar um pouco quando o arquivo é realmente grande. Vamos ao comando.

$ tcpreplay -v -i eth0 original.dump > convertido.txt

A sintaxe do comando é igual a do tcpdump. Precisamos especificar a interface de rede a qual será verificada no arquivo de dump. O arquivo que iremos trabalhar é o “convertido.txt”.

O comando para contar tudo? Veja abaixo.

$ grep “[0-9]\{1,3\}\.\{1\}[0-9]\{1,3\}\.\{1\}[0-9]\{1,3\}\.\{1\}[0-9]\{1,3\} ” convertido.txt | cut -f 3 -d’ ‘ | cut -f1,2,3,4 -d’.’ | sort | uniq | wc -l

O resultado será apenas o número de endereços distintos existentes na coluna de origem. Percebam que este pequeno script apenas conta uma coluna. Caso queira contar em ambas as colunas eu recomendo uma abordagem um pouco diferente, trabalhando com arquivos intermediários e depois comparando-os. Se souberer de alguma solução, fique a vontade para exibi-la aqui, se achar necessário.

Abraço a todos!

{fcomment}

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *