我使用dnspython对DNS服务器进行查询并获得响应;我的回答是以dns.resolver.Answer
对象的形式出现的。
我想使用python套接字将此DNS回复转发到其他地方,为此,我需要此消息的原始形式,如下所示:
b'\x01\x01\x00\x00\x01\x00\x00\x00\x00\x00\x00\x03www\x10googletagmanager\x03com\x00\x00\x01\x00\x01'
我使用了文档和.__dict__
,发现dns.resolver.Answer
包含:
{'qname': <DNS name www.example.com.>, 'rdtype': <RdataType.A: 1>, 'rdclass': <RdataClass.IN: 1>, 'response': <DNS message, ID 1111>, 'nameserver': '8.8.8.8', 'port': 53, 'canonical_name': <DNS name www.example.com.>, 'rrset': <DNS www.example.com. IN A RRset: [<0.0.0.0>]>, 'expiration': 0000}
不幸的是,DNS响应没有原始字节消息。
可能使用另一个库,如何转换dns.resolver.Answer
到原始字节对象
一个
dns.resolver.Answer
是建立在一个接收到的dns.resolver.Message
之上的,它确实有一个to_wire
如果查看https://www.dnspython.org/docs/1.16.0/dns.resolver-pysrc.html#Resolver.query的结尾,可以看到
Answer
对象是如何从Message
计算出来的。但是查看它在https://www.dnspython.org/docs/1.16.0/dns.resolver-pysrc.html#Answer.__init_中的init
,您可以看到它保留了原始的Message
(您需要访问消息的头部分,作为标志等可用)因此,快速演示将是:
相关问题 更多 >
编程相关推荐