Я использую продукты Big-IP F5 Networks, которые добавляют пользовательский фрейм трейлера Ethernet II для целей отладки. Я пытаюсь с помощью Scapy связать новый слой для этого трейлера, но не могу.
Я вижу интересующую полезную нагрузку в поле Padding, но использование bind_layers не выполняет должного анализа требуемого раздела Padding.
class MyEthTrailer(Packet):
name = "Ethernet Trailer"
fields_desc = [ ####Fields Mapping Section ]
def dissect(self, s):
self.payl,self.pad = self.extract_padding(s)
s = self.do_dissect(self.pad)
Одно из решений, которое я задумал, заключалось в создании нового класса замены Ethernet (или перегруженного), который я затем могу ссылаться на типичную полезную нагрузку Ethernet и мой новый трейлер. Но я не супер-программист Python / scapy, и я не уверен, что это лучший вариант.
Вот как Scapy в настоящее время отображает мой пакет после того, как я применил bind_layers (TCP, MyEthTrailer). Информация, которую я должен проанализировать, находится в классе Padding
<Ether dst=00:00:00:00:00:00 src=00:00:00:00:00:01 type=0x8100 |<Dot1Q prio=0L id=0L vlan=01L type=0x800 |<IP version=4L ihl=5L tos=0x0 len=67 id=1 flags=DF frag=0L ttl=255 proto=tcp chksum=0x01 src=10.0.0.1 dst=10.0.1.1 options=[] |<TCP sport=1111 dport=https seq=1 ack=1 dataofs=5L reserved=0L flags=PA window=4380 chksum=0xb718 urgptr=0 options=[] |<MyEthTrailer |<Padding load='\xPayload of MyEtherTrailer' |>>>>>>
[ОБНОВЛЕНИЕ-1]
Я могу принудительно декодировать пакет TCP SYN, позвонив:
packet[TCP].decode_payload_as(MyEthTrailer)
Однако метод bind_layers, похоже, не работает автоматически, и он не работает с более сложными пакетами, потому что он смешивает TCP Padding с полезной нагрузкой MyEthTrailer.
[ОБНОВЛЕНИЕ-2]
У меня он частично работает, но каждый пакет должен быть правильно передан, тогда я могу прочитать полезную нагрузку трейлера и расшифровать его. Например, если это пакет TCP / DNS / MyEthTrailer, это будет работать. Если я не знаю, что это DNS, и он не настроен должным образом, он все равно смешан с полезной нагрузкой TCP и Padding.
Ваша помощь очень ценится.