importreimportosimportsignalimportsysimportsubprocessimportargparseimportscapy.allasscapyfromtermcolorimportcoloreddefdef_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="DNS Sniffer")parser.add_argument("-i","--interface",required=True,dest="interface",help="Interface to sniff")returnparser.parse_args()defroot():ifsubprocess.check_output(["whoami"]).decode().strip()=='root':returnTruedefprocess_dns_packet(packet):ifpacket.haslayer(scapy.DNSQR):domain=packet[scapy.DNSQR].qname.decode()exclude_keywords=["google","cloud","bing","static"]ifdomainnotindomains_seenandnotany(keywordindomainforkeywordinexclude_keywords):domains_seen.add(domain)split_domain=domain.split(".")ifre.findall("www",domain):print(colored(f"[+] Domain: {domain}","green"))eliflen(split_domain)==3:print(colored(f"[+] Domain: {domain}","green"))else:print(f"[+] Domain: {domain}")defset_global():globaldomains_seendomains_seen=set()defmain():ifroot():os.system("clear")set_global()arguments=get_arguments()print(colored("\n[+] Interceptando paquetes de la máquina víctima:\n","yellow"))scapy.sniff(iface=arguments.interface,filter="udp and port 53",prn=process_dns_packet,store=0)if__name__=='__main__':main()