Contar Endereços IP em Logs do Tcpdump

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!

3 comentários sobre “Contar Endereços IP em Logs do Tcpdump

  1. Avatar
    andreyevbr disse:

    Antes de tudo, parabéns pelo blog!

    Eu testei assim:

    $ grep -Eo “([0-9]{1,3}\.){3}[0-9]{1,3}” convertido.txt | sort -u | wc -l

    E parece que também funcionou… 😀

    BTW, isso não aceita estritamente endereços IP, uma vez que aceitaria 999.999.999.999… Acho que isso “(([0-1][0-9]{2}|2([0-4][0-9]|5[0-6]))\.){3}([0-1][0-9]{2}|2([0-4][0-9]|5[0-6]))” seria preciso, embora talvez seja preciosismo demais… não?

  2. Avatar
    Leoanrdo Borges disse:

    Oi thiGu..tudo bem?
    bom cara li seu post sobre mac times e achei interessante, pois estou desenvolvendo um projeto em que preciso coletar as informações que os MAC TIMES criam. você consegue me auxiliar me informando em quais logs é granvado estas informações.??

    meu sistema deve fazer um mapeamento de usuario… buscando todas as informações possivel … como: nome de usuário, arquivos removidos e criados ou apenas modificados, permissão de usuario, enfim monitorar o que o usuario esta fazendo.

    Agradeço muito se puder me adjudar..
    E mais uma vez parabenizo, pois o fórum esta bacana..

    att, Loenardo Borges

Deixe uma resposta

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