Encontre os 5 principais endereços IP de origem (de acordo com o número de pacotes enviados)

4

Eu estou fazendo uma tarefa, me pedem para responder certas perguntas baseadas no arquivo pcap que eu recebo. Uma das questões é encontrar os 5 principais endereços IP de origem (de acordo com o número de pacotes enviados).

Eu criei o comando abaixo:

$ tshark -r assign1.pcap | sort -n -7 | tail -n 5 | awk '{print $3}'

onde

  • tshark -r lê o arquivo pcap
  • assign.pcap é o arquivo de captura de pacotes
  • sort -n -7 classifica o arquivo com base na coluna 7 (esta coluna tem tamanho de pacote para cada endereço IP)
  • tail -n 5 imprime os últimos 5 registros que possuem o maior comprimento para o pacote
  • awk '{print $3} imprime somente a terceira coluna.

Agora, aqui está o meu problema, já que eu preciso dos 5 principais endereços IP originais, então eu tentei canalizar o comando uniq no final do script, mas não ajuda. Eu também tentei usar sort -u -t, -k3,3 deste link mas isso também não imprime endereços IP exclusivos!

Meu cabeçalho de coluna do arquivo pcap se parece com isto:

    
por Hazmat 05.07.2018 / 05:50

2 respostas

1

Então, depois de receber uma dica da esta resposta, eu criei este script:

$ tshark -r assign1.pcap | sort -n -r -k7 | awk '!seen[$3]++' | awk '{print $3}' | head -n 5 >> result.txt

Explicando cada comando na linha:

  • tshark -r assign1.pcap leu o arquivo pcap
  • sort -n -r -k7 numérico sort (-n) o arquivo baseado em (-r) ordem inversa da coluna (-k7) 7 [esta coluna tem tamanho de pacote para cada endereço ip]
  • awk '!seen[$3]++' endereço IP de origem de impressão (3ª coluna) que não foi visto antes, portanto, imprime somente IPs exclusivos
  • awk '{print $3}' apenas imprime a terceira coluna (endereço IP de origem)
  • head -n 5 >> result.txt desde que eu preciso do top 5, então limitei meus resultados a apenas 5 usando o comando head , e também% last>> result.txt acrescenta o resultado do terminal ao arquivo de texto.

Espero que isso ajude alguém trabalhando com o mesmo tipo de problema:)

    
por 06.07.2018 / 05:33
4

Acho que, se você reorganizar a saída de tshark usando -T fields , será muito mais fácil. Eu consegui realizar o que você quer da seguinte forma:

$ tshark -r blah.pcap -T fields -e frame.len -e ip.src | sort -k 1n | tail -5
92  10.0.2.2
92  10.0.2.2
92  10.0.2.2
100 10.0.2.15
156 10.0.2.15

campos tshark

Você pode usar este comando para obter uma lista de todos os campos:

$ tshark -G field

Mas eu achei um pouco difícil de ler. Se você quiser entender as colunas na saída -G field , elas serão descritas aqui: tshark - Dump and dump analisar o tráfego de rede :

 * Header Fields
 * -------------
 * Field 1 = 'F'
 * Field 2 = descriptive field name
 * Field 3 = field abbreviation
 * Field 4 = type (textual representation of the ftenum type)
 * Field 5 = parent protocol abbreviation
 * Field 6 = base for display (for integer types); "parent bitfield width" for FT_BOOLEAN
 * Field 7 = bitmask: format: hex: 0x....
 * Field 8 = blurb describing field

Você pode usar este grep para filtrar a saída se for corajoso:

$ tshark -G fields | grep -P '\s+(ip.src|frame.len)\s+'
F   Frame length on the wire    frame.len   FT_UINT32   frame   BASE_DEC    0x0
F   Source  ip.src  FT_IPv4 ip      0x0

Referências

por 05.07.2018 / 07:41