123456789101112131415161718192021222324252627282930313233343536373839 |
- from pypacker import pypacker
- import struct
- LLC_TYPE_IP = 0x0800 # IPv4 protocol
- LLC_TYPE_ARP = 0x0806 # address resolution protocol
- LLC_TYPE_IP6 = 0x86DD # IPv6 protocol
- class LLC(pypacker.Packet):
- __hdr__ = (
- ("dsap", "B", 0),
- ("ssap", "B", 0),
- ("ctrl", "B", 0),
- ("snap", "5s", b"\x00" * 5),
- )
- def _dissect(self, buf):
- # dsap = struct.unpack("B", buf[0])[0]
- if buf[0] == 170: # = 0xAA
- # SNAP is following ctrl
- htype = struct.unpack("H", buf[5:7])[0]
- self._init_handler(htype, buf[8:])
- else:
- # deactivate SNAP
- self.snap = None
- return 8
- # load handler
- from pypacker.layer12 import arp
- from pypacker.layer3 import ip, ip6
- pypacker.Packet.load_handler(LLC,
- {
- LLC_TYPE_IP: ip.IP,
- LLC_TYPE_ARP: arp.ARP,
- LLC_TYPE_IP6: ip6.IP6,
- }
- )
|