Używam produktów F5 Networks Big-IP, które dołączają niestandardową ramkę przyczepy Ethernet II do celów debugowania. Próbuję z Scapy związać nową warstwę dla tego zwiastuna, ale nie jestem w stanie tego zrobić.Scapy - jak zinterpretować pole Trailer Ethernetu
Widzę ładunek interesujący w polu Wypełnienie, ale użycie bind_layers nie przeprowadza właściwego rozbioru wymaganej sekcji Wypełnienie.
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)
Jednym rozwiązaniem myślałem było stworzenie nowej klasy zastępczej Ethernet (lub przeciążona), które mogę potem odnosi się do typowego ładunku Ethernet i mój nowy trailer. Ale nie jestem super programistą Python/scapy i nie jestem pewien, czy to najlepsza opcja.
Oto jak Scapy obecnie mapuje mój pakiet po zastosowaniu bind_layers (TCP, MyEthTrailer). INFO powinien mieć analizy składniowej w klasie Dodat
<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' |>>>>>>
[Update 1]
można wymusić dekodowania pakietów TCP SYN pod numerem:
packet[TCP].decode_payload_as(MyEthTrailer)
Jednakże sposób bind_layers , wydaje się nie działać automatycznie, a to nie działa w przypadku bardziej złożonego pakietu, ponieważ jest to mieszanie protokołu TCP Padding z ładunkiem MyEthTrailer.
[UPDATE-2]
mam to częściowo działa, ale każdy pakiet musi być odpowiednio lanego, to mogę przeczytać ładowność przyczepy i dekoduje go. Na przykład, jeśli pakiet to TCP/DNS/MyEthTrailer, to zadziała. Jeśli nie wiem, że to DNS, a nie jest poprawnie skonfigurowany, to nadal jest mieszany w ładunek TCP i wypełnienie.
Twoja pomoc jest doceniana.
Źródło wtyczki F5 znajduje się tutaj: https://devcentral.f5.com/wiki/AdvDesignConfig.F5WiresharkPlugin.ashx. Mam nadzieję, że to pomoże ci się wyizolować. –