Ejemplo n.º 1
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:])
Ejemplo n.º 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
Ejemplo n.º 3
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
Ejemplo n.º 4
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 = ''
Ejemplo n.º 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:]
Ejemplo n.º 6
0
Archivo: ip6.py Proyecto: 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
Ejemplo n.º 7
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
Ejemplo n.º 8
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
Ejemplo n.º 9
0
Archivo: cdp.py Proyecto: 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
Ejemplo n.º 10
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
Ejemplo n.º 11
0
Archivo: ppp.py Proyecto: 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
Ejemplo n.º 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
Ejemplo n.º 13
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
Ejemplo n.º 14
0
Archivo: cdp.py Proyecto: 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
Ejemplo n.º 15
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)
Ejemplo n.º 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)
Ejemplo n.º 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 = ''
Ejemplo n.º 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 = ""
Ejemplo n.º 19
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 = ''
Ejemplo n.º 20
0
Archivo: dns.py Proyecto: 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 = ''
Ejemplo n.º 21
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
Ejemplo n.º 22
0
Archivo: gre.py Proyecto: 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)
Ejemplo n.º 23
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)
Ejemplo n.º 24
0
 def unpack(self, buf):
     Packet.unpack(self, buf)
     self.data = self.data[:self.len]
Ejemplo n.º 25
0
Archivo: tcp.py Proyecto: 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:]
Ejemplo n.º 26
0
Archivo: gre.py Proyecto: 4sp1r3/Honeyd
 def unpack(self, buf):
     Packet.unpack(self, buf)
     self.data = self.data[:self.len]
Ejemplo n.º 27
0
 def unpack(self, buf):
     Packet.unpack(self, buf)
     self.data = self.ip = ip.IP(self.data)
Ejemplo n.º 28
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)
Ejemplo n.º 29
0
 def unpack(self, buf):
     Packet.unpack(self, buf)
     self.data = self.ip6 = ip6.IP6(self.data)
Ejemplo n.º 30
0
 def unpack(self, buf):
     Packet.unpack(self, buf)
     self.data = buf[self.__hdr_len__:self.length + 1]
Ejemplo n.º 31
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)
Ejemplo n.º 32
0
 def unpack(self, buf):
     Packet.unpack(self, buf)
     self.data = self.ip6 = ip6.IP6(self.data)
Ejemplo n.º 33
0
 def unpack(self, buf):
     Packet.unpack(self, buf)
     n = struct.unpack('>I', self.data[:4])[0]
     self.data = self.data[4:4+n]
Ejemplo n.º 34
0
 def unpack(self, buf):
     Packet.unpack(self, buf)
     self.data = self.ip = ip.IP(self.data)
Ejemplo n.º 35
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:]
Ejemplo n.º 36
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):]