I have python/scapy sniffer for DNS. I am able to sniff DNS messages and get IP/UDP source and destination IP address and ports but I have problems parsing DNS part I would appreciate some help or solution to work this out.
#!/usr/bin/env python from scapy.all import * from datetime import datetime import time import datetime import sys ############# MODIFY THIS PART IF NECESSARY ############### interface = 'eth0' filter_bpf = 'udp and port 53' # ------ SELECT/FILTER MSGS def select_DNS(pkt): pkt_time = pkt.sprintf('%sent.time%') # ------ SELECT/FILTER DNS MSGS try: if DNSQR in pkt and pkt.dport == 53: # queries print '[**] Detected DNS QR Message at: ' + pkt_time # elif DNSRR in pkt and pkt.sport == 53: # responses print '[**] Detected DNS RR Message at: ' + pkt_time # except: pass # ------ START SNIFFER sniff(iface=interface, filter=filter_bpf, store=0, prn=select_DNS)