Я пытаюсь декодировать трафик 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
получает меня внутреннее ИНТ представление перечисления (1), а символическое значение строки («A» или «В»). То же самое касается раздела DNSRR пакетов ответов.
Как я могу получить поле DNSQR или DNSRR в символической форме?
Ваше решение работает, спасибо! –