title: python/scapy DNS sniffer and parser
body: <p>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.</p>
  
  <pre><code>#!/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)
  </code></pre>