Я работаю с scapy в течение некоторого времени, и у меня возникла проблема с преобразованием байтовых данных в GTPv2- C msg с правильным заголовком и IE телом. Я подготовил переменную msg байтового типа (содержит правильное сообщение GTPV2EchoRequest):
echo_bytes_msg =b'H\x01\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x01\x00\x00\xff\x00\x03\x00\xa99\x12'
Я знаю, как создать сообщение с использованием класса GTPHeader, объекта типа IElist и объединить его в одно сообщение, но я не знаю, как обратить этот процесс вспять. Я пытался использовать класс GTPHeader с одним частным методом (_pkt):
from scapy.contrib.gtp_v2 import *
echo_res_bin = b'H\x01\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x01\x00\x00\xff\x00\x03\x00\xa99\x12'
Original_msg = GTPHeader(_pkt=echo_res_bin)
Original_msg.show()
Но результат возврата такой же:
##[ GTP v2 Header ]###
version = 2
P = 0
T = 1
SPARE = 0
SPARE = 0
SPARE = 0
gtp_type = echo_request
length = 15
teid = 0x0
seq = 0
SPARE = 0
###[ Raw ]###
load = '\x03\x00\x01\x00\x00\xff\x00\x03\x00\xa99\x12'
Сам заголовок декодируется правильно, но IE элементы тела рассматриваются как необработанная нагрузка. Кто-нибудь может помочь мне с этим или иметь представление, как с ними справиться. Цель состоит в том, чтобы декодировать сообщение, не зная, какое сообщение ожидается от службы, например
Использование python ver: 3.8.3
Используемая версия scapy-lib: scapy === git -archive.devcb13a5fa19