Я использую продукты F5 Networks Big-IP, которые добавляют настраиваемый кадр трейлера Ethernet II для целей отладки. Я пытаюсь с Scapy связать новый слой для этого трейлера, но я не могу этого сделать.Scapy - Как рассечь поле трейлера Ethernet
Я вижу полезную нагрузку, интересующую поле Padding, но используя bind_layers не выполняет надлежащего раскрытия требуемой секции заполнения.
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.
Ваша помощь приветствуется.
Источник плагина F5 находится здесь: https://devcentral.f5.com/wiki/AdvDesignConfig.F5WiresharkPlugin.ashx. Надеюсь, это поможет вам изолировать. –