Ejemplo n.º 1
0
 def __init__(self, type = ETH_P_ALL, filter=None, promisc=None, iface=None, nofilter=0):
     self.type = type
     self.ins = socket.socket(socket.AF_PACKET, socket.SOCK_RAW, socket.htons(type))
     self.ins.setsockopt(socket.SOL_SOCKET, socket.SO_RCVBUF, 0)
     flush_fd(self.ins)
     if iface:
         self.ins.bind((iface, type))
     if not nofilter:
         if conf.except_filter:
             if filter:
                 filter = "(%s) and not (%s)" % (filter, conf.except_filter)
             else:
                 filter = "not (%s)" % conf.except_filter
         if filter is not None:
             attach_filter(self.ins, filter)
     self.ins.setsockopt(socket.SOL_SOCKET, socket.SO_RCVBUF, 2**30)
     self.outs = socket.socket(socket.AF_PACKET, socket.SOCK_RAW, socket.htons(type))
     self.outs.setsockopt(socket.SOL_SOCKET, socket.SO_SNDBUF, 2**30)
     if promisc is None:
         promisc = conf.promisc
     self.promisc = promisc
     if self.promisc:
         if iface is None:
             self.iff = get_if_list()
         else:
             if iface.__class__ is list:
                 self.iff = iface
             else:
                 self.iff = [iface]
         for i in self.iff:
             set_promisc(self.ins, i)
Ejemplo n.º 2
0
 def close(self):
     if self.closed:
         return
     self.closed = 1
     if self.promisc:
         for i in self.iff:
             set_promisc(self.ins, i, 0)
     SuperSocket.close(self)
Ejemplo n.º 3
0
 def close(self):
     if self.closed:
         return
     self.closed=1
     if self.promisc:
         for i in self.iff:
             set_promisc(self.ins, i, 0)
     SuperSocket.close(self)
Ejemplo n.º 4
0
 def __init__(self,
              type=ETH_P_ALL,
              filter=None,
              promisc=None,
              iface=None,
              nofilter=0):
     self.type = type
     self.ins = socket.socket(socket.AF_PACKET, socket.SOCK_RAW,
                              socket.htons(type))
     self.ins.setsockopt(socket.SOL_SOCKET, socket.SO_RCVBUF, 0)
     flush_fd(self.ins)
     if iface:
         self.ins.bind((iface, type))
     if not nofilter:
         if conf.except_filter:
             if filter:
                 filter = "(%s) and not (%s)" % (filter, conf.except_filter)
             else:
                 filter = "not (%s)" % conf.except_filter
         if filter is not None:
             attach_filter(self.ins, filter)
     self.ins.setsockopt(socket.SOL_SOCKET, socket.SO_RCVBUF, 2**30)
     self.outs = socket.socket(socket.AF_PACKET, socket.SOCK_RAW,
                               socket.htons(type))
     self.outs.setsockopt(socket.SOL_SOCKET, socket.SO_SNDBUF, 2**30)
     if promisc is None:
         promisc = conf.promisc
     self.promisc = promisc
     if self.promisc:
         if iface is None:
             self.iff = get_if_list()
         else:
             if iface.__class__ is list:
                 self.iff = iface
             else:
                 self.iff = [iface]
         for i in self.iff:
             set_promisc(self.ins, i)