【发布时间】:2017-01-05 17:13:08
【问题描述】:
我正在尝试解码 DNS 流量并打印查询/响应数据,并且我正在使用 python/scapy 来解码数据包。
一个代码sn-p:
def dns_sniff_v2(pkt):
if IP in pkt:
if pkt.haslayer(DNS):
dns = pkt.getlayer(DNS)
pkt_time = pkt.sprintf('%sent.time%')
if pkt.haslayer(DNSQR):
qr = pkt.getlayer(DNSQR) # DNS query
values = [ pkt_time, str(ip_src), str(ip_dst), str(dns.id), str(qr.qname), str(qr.qtype), str(qr.qclass) ]
print "|".join(values)
sniff(iface="eth0", filter="port 53", prn=dns_sniff_v2, store=0)
问题是 qr.qtype 或 qr.qclass 让我得到枚举的内部 int 表示 (1) 而不是符号字符串值(“A”或“IN”)。这同样适用于响应数据包的 DNSRR 部分。
如何获取符号形式的 DNSQR 或 DNSRR 字段?
【问题讨论】: