Я новичок в pyshark. Я пытаюсь написать парсер для пользовательских пакетов UDP. Я использую объект FileCapture
для чтения пакетов из файла.
>>> cap = pyshark.FileCapture('sample.pcap')
>>> pkt = cap.next()
>>> pkt
<UDP/DATA Packet>
>>> pkt.data.data
'01ca00040500a4700500a22a5af20f830000b3aa000110da5af20f7c000bde1a000006390000666e000067f900000ba7000026ce000001d00000000100001726000100000000000000000000000017260500a4700500a22a608600250500a8c10500a22a608601310500a8c10500a22b608601200500a8cc0500a22a6086000c'
>>> dir(pkt.udp)
['DATA_LAYER', '__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__format__', '__getattr__', '__getattribute__', '__getstate__', '__hash__', '__init__', '__module__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__setstate__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', '_all_fields', '_field_prefix', '_get_all_field_lines', _get_all_fields_with_alternates', '_get_field_or_layer_repr', '_get_field_repr', '_layer_name', '_sanitize_field_name', 'checksum', 'checksum_status', 'dstport', 'field_names', 'get', 'get_field', 'get_field_by_showname', get_field_value', 'layer_name', 'length', 'port', 'pretty_print', raw_mode', 'srcport', 'stream']
Мне нужен метод для простого доступа к полезной нагрузке UDP пакета. Единственный метод, который я нашел для доступа к необработанным данным пакета, — это pkt.data.data
, но он возвращает все содержимое пакета, в то время как меня интересует только часть UDP. Что-то вроде pkt.udp.data
. Есть ли способ просто сделать это или мне нужно использовать pkt.data.data
и вычислить смещение, по которому размещаются мои данные?