Estou procurando diminuir meu tcpdump
comprimento de pacote. Eu sei que posso `| grep, mas eu queria saber se posso passar esse comprimento de pacote específico como uma opção em 'tcpdump'. Estou tentando escrever um script para me mostrar todos os multicast MPEG-TS presentes na rede usando o seguinte comando:
sudo tcpdump -c 1000 -ti <network_interface> multicast | grep 1316 | sort | uniq
Então este comando funciona e me dá exatamente a saída que eu quero, mas eu estava pensando em simplificá-lo passando o comprimento no tcpdump
comando, algo como:
sudo tcpdump -c 1000 -ti <network_interface> multicast and length 1316 | sort | uniq
Tamanho total do pacote Ethernet
De acordo com pcap-filter(7) , você pode usar as seguintes condições:
less length
, equivalente alen <= length
greater length
, equivalente alen >= length
Com base nos exemplos, você também deve ser capaz de usar , mas isso não está documentado.
len == length
Observe que isso inclui os cabeçalhos da camada de enlace e da camada de rede (ou seja, tudo o que foi capturado), portanto, um TCP ACK vazio terá um campo IP de "comprimento total" de 60, mas será visto como um total de 74 bytes.
Veja também este tópico do StackOverflow: https://stackoverflow.com/questions/9874093/how-to-filter-tcpdump-output-based-on-packet-length
Tamanho total do pacote IP
De acordo com tcpdump(1) , você pode acessar o campo "Total Length" do cabeçalho IPv4:
ip[2:2] > 576
ip[2:2] <= 1000
Pacote UDP total ou tamanho da carga útil
O UDP não tem um campo de comprimento, mas seu tamanho de cabeçalho é sempre 8, e geralmente você pode assumir que o tamanho do cabeçalho IPv4 sempre será 20 (as opções de IPv4 são muito raras, embora sejam usadas em IGMP).
Então, se você está tentando filtrar datagramas UDP de 1316 bytes,
você obtém o filtro
ip[2:2] == 1344
.