Example #1
0
 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
Example #2
0
 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
Example #3
0
 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:])
Example #4
0
File: ip6.py Project: 4sp1r3/Honeyd
 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
Example #5
0
 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:]
Example #6
0
 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 = ''
Example #7
0
 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
Example #8
0
 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
Example #9
0
 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
Example #10
0
File: cdp.py Project: 4sp1r3/Honeyd
 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
Example #11
0
File: ppp.py Project: Azaraf/Honeyd
 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
Example #12
0
 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
Example #13
0
 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)
Example #14
0
 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
Example #15
0
File: cdp.py Project: 4sp1r3/Honeyd
 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
Example #16
0
 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)
Example #17
0
 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 = ''
Example #18
0
 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 = ""
Example #19
0
File: dns.py Project: 4sp1r3/Honeyd
 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 = ''
Example #20
0
 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 = ''
Example #21
0
 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)
Example #22
0
File: ip6.py Project: 4sp1r3/Honeyd
 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)
Example #23
0
 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
Example #24
0
 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)
Example #25
0
File: gre.py Project: 4sp1r3/Honeyd
 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)
Example #26
0
 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)
Example #27
0
 def unpack(self, buf):
     Packet.unpack(self, buf)
     self.data = self.ip = ip.IP(self.data)
Example #28
0
 def __str__(self):
     if not self.sum:
         self.sum = _icmp_cksum(Packet.__str__(self))
     return Packet.__str__(self)
Example #29
0
 def unpack(self, buf):
     Packet.unpack(self, buf)
     n = struct.unpack('>I', self.data[:4])[0]
     self.data = self.data[4:4+n]
Example #30
0
 def unpack(self, buf):
     Packet.unpack(self, buf)
     self.data = self.ip6 = ip6.IP6(self.data)
Example #31
0
File: tcp.py Project: 4sp1r3/Honeyd
 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:]
Example #32
0
File: gre.py Project: 4sp1r3/Honeyd
 def unpack(self, buf):
     Packet.unpack(self, buf)
     self.data = self.data[:self.len]
Example #33
0
 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:]
Example #34
0
 def unpack(self, buf):
     Packet.unpack(self, buf)
     self.data = buf[self.__hdr_len__:self.length + 1]
Example #35
0
 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)
Example #36
0
 def unpack(self, buf):
     Packet.unpack(self, buf)
     self.data = self.data[:self.len]
Example #37
0
 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)
Example #38
0
 def unpack(self, buf):
     Packet.unpack(self, buf)
     self.data = self.ip6 = ip6.IP6(self.data)
Example #39
0
 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):]
Example #40
0
File: pim.py Project: 4sp1r3/Honeyd
 def __str__(self):
     if not self.sum:
         self.sum = _pim_cksum(Packet.__str__(self))
     return Packet.__str__(self)
Example #41
0
 def unpack(self, buf):
     Packet.unpack(self, buf)
     self.data = self.ip = ip.IP(self.data)