def unpack(self, buf): Packet.unpack(self, buf) try: self.data = self._typesw[self.type](self.data) setattr(self, self.data.__class__.__name__.lower(), self.data) except: self.data = buf
def unpack(self, buf): Packet.unpack(self, buf) if self.type > 1500: # Ethernet II self._unpack_data(self.data) elif self.dst.startswith('\x01\x00\x0c\x00\x00') or \ self.dst.startswith('\x03\x00\x0c\x00\x00'): # Cisco ISL #self.vlan = st_unpack('>H', self.data[6:8])[0] self.unpack(self.data[12:]) elif self.data.startswith('\xff\xff'): # Novell "raw" 802.3 self.type = ETH_TYPE_IPX self.data = self.ipx = ipx.IPX(self.data[2:]) else: # 802.2 LLC #self.dsap, self.ssap, self.ctl = st_unpack('BBB', self.data[:3]) if self.data.startswith('\xaa\xaa'): # SNAP self.type = st_unpack('>H', self.data[6:8])[0] self._unpack_data(self.data[8:]) else: # non-SNAP dsap = ord(self.data[0]) if dsap == 0x06: # SAP_IP self.data = self.ip = ip.IP(self.data[3:]) elif dsap == 0x10 or dsap == 0xe0: # SAP_NETWARE{1,2} self.data = self.ipx = ipx.IPX(self.data[3:]) elif dsap == 0x42: # SAP_STP self.data = self.stp = stp.STP(self.data[3:])
def unpack(self, buf): Packet.unpack(self, buf) buf = self.data[:self.plen] try: self.data = self._protosw[self.nxt](buf) setattr(self, self.data.__class__.__name__.lower(), self.data) except: self.data = buf
def unpack(self, buf): Packet.unpack(self, buf) if self.stat == RPC_MISMATCH: self.low, self.high = struct.unpack('>II', self.data[:8]) self.data = self.data[8:] elif self.stat == AUTH_ERROR: self.why = struct.unpack('>I', self.data[:4])[0] self.data = self.data[4:]
def unpack(self, buf): Packet.unpack(self, buf) l = [] for off in range(0, 4 * self.count, 4): l.append(self.data[off:off+4]) self.addrs = l self.auth = self.data[off+4:] self.data = ''
def unpack(self, buf): Packet.unpack(self, buf) self.auth = self.data[:self.plen] buf = self.data[self.plen:] try: self.data = ip.IP._protosw[self.nxt](buf) setattr(self, self.data.__class__.__name__.lower(), self.data) except: self.data = buf
def unpack(self, buf): Packet.unpack(self, buf) buf = self.data l = [] while buf: flow = self.NetflowRecord(buf) l.append(flow) buf = buf[len(flow):] self.data = l
def unpack(self, buf): Packet.unpack(self, buf) buf = self.data l = [] while buf: tlv = self.TLV(buf) l.append(tlv) buf = buf[len(tlv):] self.data = l
def unpack(self, buf): Packet.unpack(self, buf) if self.p & PFC_BIT == 0: self.p = _st_unpack(">H", buf) self.data = self.data[1:] try: self.data = self._protosw[self.p](self.data) setattr(self, self.data.__class__.__name__.lower(), self.data) except: pass
def unpack(self, buf): Packet.unpack(self, buf) ol = ((self.v_hl & 0xf) << 2) - self.__hdr_len__ self.opts = buf[self.__hdr_len__:self.__hdr_len__ + ol] buf = buf[self.__hdr_len__ + ol:self.len] try: self.data = self._protosw[self.p](buf) setattr(self, self.data.__class__.__name__.lower(), self.data) except: self.data = buf
def unpack(self, buf): Packet.unpack(self, buf) if self.family > 1500: self.data = ethernet.Ethernet(self.data) else: v = ord(self.data[0]) >> 4 if self.family == 2 or v == 4: # AF_INET appears consistent self.data = ip.IP(self.data) elif v == 6: # XXX - AF_INET6 differs on *BSD, MacOS X, etc. self.data = ip6.IP6(self.data)
def unpack(self, buf): Packet.unpack(self, buf) self.data = self.data[:self.len - 4] if self.type == CDP_ADDRESS: n = struct.unpack('>I', self.data[:4])[0] buf = self.data[4:] l = [] for i in range(n): a = CDP.Address(buf) l.append(a) buf = buf[len(a):] self.data = l
def unpack(self, buf): Packet.unpack(self, buf) if self.opcode in (OP_RRQ, OP_WRQ): l = self.data.split('\x00') self.filename = l[0] self.mode = l[1] self.data = '' elif self.opcode in (OP_DATA, OP_ACK): self.block = struct.unpack('>H', self.data[:2]) self.data = self.data[2:] elif self.opcode == OP_ERR: self.errcode = struct.unpack('>H', self.data[:2]) self.errmsg = self.data[2:].split('\x00')[0] self.data = ''
def unpack(self, buf): Packet.unpack(self, buf) if self.opcode in (OP_RRQ, OP_WRQ): l = self.data.split("\x00") self.filename = l[0] self.mode = l[1] self.data = "" elif self.opcode in (OP_DATA, OP_ACK): self.block = struct.unpack(">H", self.data[:2]) self.data = self.data[2:] elif self.opcode == OP_ERR: self.errcode = struct.unpack(">H", self.data[:2]) self.errmsg = self.data[2:].split("\x00")[0] self.data = ""
def unpack(self, buf): Packet.unpack(self, buf) off = self.__hdr_len__ cnt = self.qd self.qd = [] for i in range(cnt): qd, off = self.unpack_qd(buf, off) self.qd.append(qd) for x in ('an', 'ns', 'ar'): cnt = getattr(self, x, 0) setattr(self, x, []) for i in range(cnt): rr, off = self.unpack_rr(buf, off) getattr(self, x).append(rr) self.data = ''
def __str__(self): if self.stat == RPC_MISMATCH: return struct.pack('>III', self.stat, self.low, self.high) + self.data elif self.stat == AUTH_ERROR: return struct.pack('>II', self.stat, self.why) + self.data return Packet.__str__(self)
def __str__(self): if self.nxt == 6 or self.nxt == 17 or self.nxt == 58: # XXX - set TCP, UDP, and ICMPv6 checksums p = str(self.data) s = _ip_cksum_add(0, self.src + self.dst) s = _ip_cksum_add(s, p) try: self.data.sum = _ip_cksum_done(s + self.p + len(p)) except AttributeError: pass return Packet.__str__(self)
def unpack(self, buf): Packet.unpack(self, buf) self.chaddr = self.chaddr[:self.hln] buf = self.data l = [] while buf: t = ord(buf[0]) if t == 0xff: buf = buf[1:] break elif t == 0: buf = buf[1:] else: n = ord(buf[1]) l.append((t, buf[2:2+n])) buf = buf[2+n:] self.opts = l self.data = buf
def unpack(self, buf): Packet.unpack(self, buf) fields, fmts = self.opt_fields_fmts() if fields: fmt = ''.join(fmts) fmtlen = struct.calcsize(fmt) vals = struct.unpack(fmt, self.data[:fmtlen]) self.data = self.data[fmtlen:] self.__dict__.update(dict(zip(fields, vals))) if self.flags & GRE_RP: l = [] while True: sre = SRE(self.data) l.append(sre) if not sre.len: break self.sre = l skip = sum(map(len, self.sre)) self.data = self.data[skip:] self.data = ethernet.Ethernet._typesw[self.p](self.data) setattr(self, self.data.__class__.__name__.lower(), self.data)
def unpack(self, buf): Packet.unpack(self, buf) if self.dir == CALL: self.data = self.call = self.Call(self.data) elif self.dir == REPLY: self.data = self.reply = self.Reply(self.data)
def unpack(self, buf): Packet.unpack(self, buf) self.data = self.ip = ip.IP(self.data)
def __str__(self): if not self.sum: self.sum = _icmp_cksum(Packet.__str__(self)) return Packet.__str__(self)
def unpack(self, buf): Packet.unpack(self, buf) n = struct.unpack('>I', self.data[:4])[0] self.data = self.data[4:4+n]
def unpack(self, buf): Packet.unpack(self, buf) self.data = self.ip6 = ip6.IP6(self.data)
def unpack(self, buf): Packet.unpack(self, buf) ol = ((self.off_x2 >> 4) << 2) - self.__hdr_len__ self.opts = buf[self.__hdr_len__:self.__hdr_len__ + ol] self.data = buf[self.__hdr_len__ + ol:]
def unpack(self, buf): Packet.unpack(self, buf) self.data = self.data[:self.len]
def unpack(self, buf): Packet.unpack(self, buf) self.data = buf[self.__hdr_len__:self.length + 1]
def unpack(self, buf): Packet.unpack(self, buf) if self.stat == MSG_ACCEPTED: self.data = self.accept = self.Accept(self.data) elif self.status == MSG_DENIED: self.data = self.reject = self.Reject(self.data)
def __str__(self): if self.stat == PROG_MISMATCH: return str(self.verf) + struct.pack('>III', self.stat, self.low, self.high) + self.data return str(self.verf) + Packet.__str__(self)
def unpack(self, buf): Packet.unpack(self, buf) self.cred = RPC.Auth(self.data) self.verf = RPC.Auth(self.data[len(self.cred):]) self.data = self.data[len(self.cred) + len(self.verf):]
def __str__(self): if not self.sum: self.sum = _pim_cksum(Packet.__str__(self)) return Packet.__str__(self)