Exemple #1
0
 def send(self, x):
 
     pkt_src_mac_field,pkt_src_mac_val = x.getfield_and_val('src')
     if self.__use_iface and pkt_src_mac_val is None:
         iff = self.iface
         if iff:
             try:
                 src_mac = scapy.arch.get_if_hwaddr(iff)
             except:
                 pass
         if src_mac is None:
             src_mac = "00:00:00:00:00:00"
         x.src = scapy.fields.MACField.i2h(pkt_src_mac_field, x, src_mac)
     
     if x.haslayer('IP') :
         pkt_src_ip_field,pkt_src_ip_val = x['IP'].getfield_and_val('src')
         if isinstance(pkt_src_ip_field,scapy.fields.Emph):
             pkt_src_ip_field = pkt_src_ip_field.fld
         if self.__use_iface and pkt_src_ip_val is None:
             iff = self.iface
             if iff:
                 try:
                     src_ip = scapy.arch.get_if_addr(iff)
                 except:
                     pass
             x['IP'].src = scapy.fields.SourceIPField.i2h(pkt_src_ip_field, x, src_ip)
         
     SuperSocket.send(self, x)
Exemple #2
0
 def close(self):
     if self.closed:
         return
     self.closed = 1
     if self.promisc:
         set_promisc(self.ins, self.iface, 0)
     SuperSocket.close(self)
Exemple #3
0
 def close(self):
     if self.closed:
         return
     self.closed = 1
     if self.promisc:
         set_promisc(self.ins, self.iface, 0)
     SuperSocket.close(self)
Exemple #4
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)
Exemple #5
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)
Exemple #6
0
 def close(self):
     if self.closed:
         return
     try:
         if self.promisc and self.ins:
             set_promisc(self.ins, self.iface, 0)
     except (AttributeError, OSError):
         pass
     SuperSocket.close(self)
Exemple #7
0
 def __init__(self, peer="127.0.0.1"):
     SuperSocket.__init__(self, socket.AF_INET, socket.SOCK_DGRAM,
                          socket.IPPROTO_UDP)
     self.rx_addr = (peer, 52002)
     self.ins.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 0)
     try:
         self.ins.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEPORT, 0)
     except AttributeError:
         pass
     self.ins.bind(self.rx_addr)
Exemple #8
0
 def close(self):
     # type: () -> None
     if self.closed:
         return
     try:
         if self.promisc and getattr(self, "ins", None):
             set_promisc(self.ins, self.iface, 0)
     except (AttributeError, OSError):
         pass
     SuperSocket.close(self)
Exemple #9
0
 def send(self, x):
     try:
         return SuperSocket.send(self, x)
     except socket.error as msg:
         if msg.errno == 22 and len(x) < conf.min_pkt_size:
             padding = b"\x00" * (conf.min_pkt_size - len(x))
             if isinstance(x, Packet):
                 return SuperSocket.send(self, x / Padding(load=padding))
             else:
                 return SuperSocket.send(self, raw(x) + padding)
         raise
Exemple #10
0
 def send(self, x):
     try:
         return SuperSocket.send(self, x)
     except socket.error as msg:
         if msg[0] == 22 and len(x) < conf.min_pkt_size:
             padding = b"\x00" * (conf.min_pkt_size - len(x))
             if isinstance(x, Packet):
                 return SuperSocket.send(self, x / Padding(load=padding))
             else:
                 return SuperSocket.send(self, raw(x) + padding)
         raise
Exemple #11
0
 def __init__(self, peer="127.0.0.1"):
     SuperSocket.__init__(self, socket.AF_INET, socket.SOCK_DGRAM, socket.IPPROTO_UDP)
     self.outs = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, socket.IPPROTO_UDP)
     self.tx_addr = (peer, 52001)
     self.rx_addr = (peer, 52002)
     self.ins.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
     self.outs.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
     try:
         self.ins.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEPORT, 1)
         self.outs.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEPORT, 1)
     except AttributeError:
         pass
     self.ins.bind(self.rx_addr)
Exemple #12
0
 def recv(self, x=MTU):
     # type: (int) -> Optional[Packet]
     pkt = SuperSocket.recv(self, x)
     if pkt and self.lvl == 2:
         pkt.payload.time = pkt.time
         return pkt.payload
     return pkt
Exemple #13
0
 def recv(self, x=BPF_BUFFER_LENGTH):
     """Receive on layer 3"""
     r = SuperSocket.recv(self, x)
     if r:
         r.payload.time = r.time
         return r.payload
     return r
Exemple #14
0
    def recv(self, x=0xffff):
        msg = SuperSocket.recv(self, x)

        if hasattr(msg, "src"):
            msg.src = self.src
        if hasattr(msg, "dst"):
            msg.dst = self.dst
        if hasattr(msg, "exsrc"):
            msg.exsrc = self.exsrc
        if hasattr(msg, "exdst"):
            msg.exdst = self.exdst
        return msg
    def send(self, x):
        try:
            if hasattr(x, "sent_time"):
                x.sent_time = time.time()

            # need to change the byteoder of the first four bytes,
            # required by the underlying Linux SocketCAN frame format
            bs = bytes(x)
            bs = bs + b'\x00' * (CAN_FRAME_SIZE - len(bs))
            bs = struct.pack("<I12s", *struct.unpack(">I12s", bs))
            return SuperSocket.send(self, bs)
        except socket.error as msg:
            raise msg
Exemple #16
0
    def send(self, x):
        try:
            if hasattr(x, "sent_time"):
                x.sent_time = time.time()

            # need to change the byteoder of the first four bytes,
            # required by the underlying Linux SocketCAN frame format
            bs = bytes(x)
            bs = bs + b'\x00' * (CAN_FRAME_SIZE - len(bs))
            bs = struct.pack("<I12s", *struct.unpack(">I12s", bs))
            return SuperSocket.send(self, bs)
        except socket.error as msg:
            raise msg
Exemple #17
0
    def recv(self, x=0xffff):
        # type: (int) -> Optional[Packet]
        msg = SuperSocket.recv(self, x)
        if msg is None:
            return msg

        if hasattr(msg, "src"):
            msg.src = self.src
        if hasattr(msg, "dst"):
            msg.dst = self.dst
        if hasattr(msg, "exsrc"):
            msg.exsrc = self.exsrc
        if hasattr(msg, "exdst"):
            msg.exdst = self.exdst
        return msg
    def recv(self, x=0xffff):
        # type: (int) -> Optional[Packet]
        msg = SuperSocket.recv(self, x)
        if msg is None:
            return msg

        if hasattr(msg, "tx_id"):
            msg.tx_id = self.tx_id
        if hasattr(msg, "rx_id"):
            msg.rx_id = self.rx_id
        if hasattr(msg, "ext_address"):
            msg.ext_address = self.ext_address
        if hasattr(msg, "rx_ext_address"):
            msg.rx_ext_address = self.rx_ext_address
        return msg
Exemple #19
0
 def close(self):
     """Close the socket and stop the receiving thread"""
     self.can_socket.close()
     self.rx_thread.stop()
     SuperSocket.close(self)
Exemple #20
0
 def sniff(self, *args, **kargs):
     # type: (Any, Any) -> PacketList
     if six.PY3:
         return SuperSocket.sniff(self, *args, **kargs)
     else:
         return SuperSocket.sniff.im_func(self, *args, **kargs)
Exemple #21
0
 def recv(self, x=MTU):
     # cls, pkt, ts, direction = self.recv_raw()
     # [Dissection stuff]
     pkt = SuperSocket.recv(self, x)
     # pkt.direction = direction
     return pkt
Exemple #22
0
 def recv(self, x=MTU):
     # cls, pkt, ts, direction = self.recv_raw()
     # [Dissection stuff]
     pkt = SuperSocket.recv(self, x)
     # pkt.direction = direction
     return pkt
Exemple #23
0
 def recv(self, x=MTU):
     pkt = SuperSocket.recv(self, x)
     if pkt and self.lvl == 2:
         pkt = pkt.payload
     return pkt
Exemple #24
0
 def sr1(self, *args, **kargs):
     # type: (Any, Any) -> Optional[Packet]
     if six.PY3:
         return SuperSocket.sr1(self, *args, **kargs)
     else:
         return SuperSocket.sr1.im_func(self, *args, **kargs)
Exemple #25
0
 def recv(self, x=MTU):  # type: ignore
     # type: (int) -> Optional[Packet]
     return SuperSocket.recv(self, x=x)
Exemple #26
0
 def close(self):
     SuperSocket.close(self)
     self.usbpcap_proc.kill()
Exemple #27
0
 def close(self):
     SuperSocket.close(self)
     self.usbpcap_proc.kill()
Exemple #28
0
 def recv(self, x=MTU):
     pkt = SuperSocket.recv(self, x)
     if pkt and self.lvl == 2:
         pkt.payload.time = pkt.time
         return pkt.payload
     return pkt
Exemple #29
0
 def recv(self, x=MTU):
     # type: (int) -> Optional[Packet]
     if six.PY3:
         return SuperSocket.recv(self, x)
     else:
         return SuperSocket.recv.im_func(self, x)