如何创建DNS TXT记录?

2024-10-03 06:32:07 发布

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

我想用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')

Tags: oftheselftxtdatapacketresponsetype
1条回答
网友
1楼 · 发布于 2024-10-03 06:32:07

来自dnslib(域名系统.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"
    """

相关问题 更多 >