用dnslib在Python中创建DNS数据包

0 投票
1 回答
2968 浏览
提问于 2025-04-18 16:53

使用dnslib和Python 2.6

我写了以下代码

#!/usr/bin/env python

from dnslib import *
import sys

a = DNSRecord.question(sys.argv[1])

print a.pack()

当我尝试做以下操作时

a = DNSRecord.question(sys.argv[1],"A MX NS AAAA dnssec trace multiline")

我遇到了这个错误:dnslib.dns.DNSError: QTYPE: 无效的反向查找: [A MX NS AAAA dnssec trace multiline]

我想做的事情其实很简单

就是构造一个数据包,并在里面设置一些标志,然后打印出这个打包的数据

使用dnslib可以做到这一点吗?

1 个回答

0
  1. tracemultiline 是专门针对 dig 工具的选项,它们会影响 dig 的行为,而不是网络协议本身。

  2. dnssec 这个选项会在一个叫 EDNS0 的特殊记录中设置一个标志,叫做 DNSSEC OK(也就是 DO)。你需要创建这个记录,并把它放在查询的“附加”部分。不过,dnslib 对 EDNS0 的支持非常差。

  3. 在一个问题中,你不能同时放多个 QTYPE(比如 A MX NS AAAA),每种类型都需要单独提问。

撰写回答