4
我试图解码DNS流量并打印查询/响应数据,我使用python/scapy来解码数据包。scapy:以符号/字符串形式获取DNSQR/DNSRR字段值
的代码段:
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字段?
您的解决方案有效,谢谢! –