什么是DNSQR?

2024-06-28 19:12:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我找了一个发送DNS请求的脚本。我发现了一个使用“DNSQR”的脚本,但我不确定这个命令是什么,也没有找到一个好的文档 这是整个命令:qd=DNSQR(qname="www.facebook.com")。在

以下是整个脚本:

 my_packet = sr1(IP(dst="8.8.8.8")/UDP(dport = 53)/DNS(rd=1,qd=DNSQR(qname=URL)))

Tags: 文档命令ip脚本comfacebookpacketdns
1条回答
网友
1楼 · 发布于 2024-06-28 19:12:48

让我们打开源代码:

class DNSQR(Packet):
    name = "DNS Question Record"
    fields_desc = [ DNSStrField("qname",""),
                    ShortEnumField("qtype", 1, dnsqtypes),
                    ShortEnumField("qclass", 1, dnsclasses) ]

其中ShortEnumField和{}是这样定义的:

^{pr2}$

因此,这是一种将所有这些信息打包到一个元素中的方法。在

让我们看看什么是DNS,什么是{}:

class DNS(Packet):
    name = "DNS"
    fields_desc = [ ShortField("id",0),
                    BitField("qr",0, 1),
                    BitEnumField("opcode", 0, 4, {0:"QUERY",1:"IQUERY",2:"STATUS"}),
                    BitField("aa", 0, 1),
                    BitField("tc", 0, 1),
                    BitField("rd", 0, 1),
                    BitField("ra", 0 ,1),
                    BitField("z", 0, 3),
                    BitEnumField("rcode", 0, 4, {0:"ok", 1:"format-error", 2:"server-failure", 3:"name-error", 4:"not-implemented", 5:"refused"}),
                    DNSRRCountField("qdcount", None, "qd"),
                    DNSRRCountField("ancount", None, "an"),
                    DNSRRCountField("nscount", None, "ns"),
                    DNSRRCountField("arcount", None, "ar"),
                    DNSQRField("qd", "qdcount"),
                    DNSRRField("an", "ancount"),
                    DNSRRField("ns", "nscount"),
                    DNSRRField("ar", "arcount",0) ]

相关问题 更多 >