Как извлечь полезную нагрузку из пакета с помощью Pyshark

Я пытаюсь прочитать полезную нагрузку всех пакетов в файле .pcap, используя Pyshark. Я могу открыть и прочитать файл, получить доступ к пакетам и другой их информации, но я не могу найти правильный атрибут/метод для доступа к полезной нагрузке пакета. Какие-либо предложения ? Есть ли другой способ прочитать полезные нагрузки пакетов в файлах .pcap, используя python для Windows 10?

(Я пытался использовать Scapy вместо Pyshark, но, видимо, есть проблема с запуском Scapy в Windows, он также не работает в моей системе)

Я нашел эти строки в разных фрагментах кода проектов pyshark в Интернете и на StackOverflow. Я пробовал их, но ни один из них не работает:

import pyshark
cap = pyshark.FileCapture('file.pcap')
pkt = cap[1]

#for other information
print(pkt.tcp.flags_ack) #this works
print(pkt.tcp.flags_syn) #this works
print(pkt.tcp.flags_fin) #this works

#for payload
print(pkt.tcp.data) #does not work, AttributeError
print(pkt.tcp.payload) #does not work, AttributeError
print(pkt.data.data) #does not work, AttributeError

person fusingaardvark8    schedule 14.02.2019    source источник


Ответы (2)


Этот код напечатает значение, связанное с именем поля tcp.payload.

capture = pyshark.FileCapture(pcap_file, display_filter='tcp')
for packet in capture:
    field_names = packet.tcp._all_fields
    field_values = packet.tcp._all_fields.values()
    for field_name in field_names:
        for field_value in field_values:
            if field_name == 'tcp.payload':
               print(f'{field_name} -- {field_value}')


# outputs 
tcp.payload -- \xc2\xb7\xc2\xb7\xc2\xb7\xc2\xb7\xc2\xb7\xc2\xb7\xc2\xb7AP\xc2\xb7\xc2\xb7\xc2\xb7
tcp.payload -- 0x00001e2c
tcp.payload -- 113977858
...
person Life is complex    schedule 15.02.2020

директор шапка[]. Это даст вам все доступные атрибуты, связанные с вашим захватом. Посмотрите там, есть ли опция полезной нагрузки.

person Aymen Lachkhem    schedule 08.03.2019