我想用python代码以编程方式创建dns TXT记录类型 我没有找到任何关于这样做的数据或者TXT记录的具体格式是什么。
以下是我尝试通过python创建TXT记录的方法:
# copy the id of the request
packet+=self.data[:2]
# Add the flags of response
packet+= "\x81\x80"
# Questions and Answers Counts
packet+='\x00\x01'
packet+='\x00\x01'
#No records follow
packet+='\x00\x00'
# Additional records follow
packet+='\x00\x00'
#packet+='\x00\x01'
(urlList,urlDataLength) = DecodeQuery(self.data)
urlPosition = urlDataLength
# Original Domain Name Question
packet+=self.data[12:12+urlDataLength+4]
# Pointer to domain name
packet+='\xc0\x0c'
#response type ~~~~~~~~~~~~~~~~
# Response type (TXT)
packet+='\x00\x10'
#CLASS
packet+='\x00\x01'
#TTL
packet+='\x00\x00\x02\x58'
#Data Length
packet+='\x00\x04'
#txt length
packet+='\x04'
packet+= 'hi'.encode('hex')
答案 0 :(得分:1)
来自dnslib(dns.py)
class TXT(RD):
"""
DNS TXT record. Pass in either a single string, or a tuple/list of strings.
>>> TXT('txtvers=1')
"txtvers=1"
>>> TXT(('txtvers=1',))
"txtvers=1"
>>> TXT(['txtvers=1',])
"txtvers=1"
>>> TXT(['txtvers=1','swver=2.5'])
"txtvers=1","swver=2.5"
>>> a = DNSRecord()
>>> a.add_answer(*RR.fromZone('example.com 60 IN TXT "txtvers=1"'))
>>> a.add_answer(*RR.fromZone('example.com 120 IN TXT "txtvers=1" "swver=2.3"'))
>>> print(a)
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: ...
;; flags: rd; QUERY: 0, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 0
;; ANSWER SECTION:
example.com. 60 IN TXT "txtvers=1"
example.com. 120 IN TXT "txtvers=1" "swver=2.3"
"""