2014-02-13 6 views
1

Я занимаюсь Wi-Fi-трафиком с помощью tcpdump, используя параметр -s 100 (что означает, что я только фиксирую заголовки пакетов).Полная длина пакета Scapy

Когда я загружаю файл .pcap и обработать его с Scapy я:

pkts = rdpcap(pcapfile) 
totalbytes = 0 
for pkt in pkts: 
    totalbytes += len(pkt) 

Однако, как я усечение захвата, делая len(pkt) не даст мне всю длину пакета (длину кадра), он даст мне захваченную длину пакета. Как получить реальную длину пакета?

Extra: как я сделал в некоторых случаях, прежде чем я открыть файл PCAP в Wireshark и искать шестнадцатеричные значения, представляющие интерес. Но в этом случае (frame.len) будет отображаться значение, которое я ищу, но я не могу найти способ, которым wirehark получает эту реальную длину пакета без полного захвата пакета.

ответ

2

Функция rdpcap использует класс PcapReader для считывания пакетов. К сожалению, этот класс отбрасывает информацию, которую вы ищете, в методе read_packet, хотя он находится в файле pcap. Поэтому вам нужно напрямую использовать RawPcapReader.

totalbytes = 0 
for pkt, (sec, usec, wirelen) in RawPcapReader(pcapfile): 
    totalbytes += wirelen 
+0

Amazing Helmut! Спасибо! Никакая информация вообще не выглядит как сумасшедшая. Надеюсь, это поможет другим людям. – EnriqueH

Смежные вопросы