scapy dns嗅了另外的记录

时间:2014-08-02 07:00:18

标签: parsing dns records scapy

我有用于DNS的python / scapy嗅探器。 我能够嗅探DNS消息并获取IP / UDP源和目标IP地址和端口以及DNS,但是如果有多个答案,我在解析和获取其他答案时会遇到问题。 从scapy我看到我可以得到的DNS数据,但不知道如何获得ls(DNS),ls(DNSQR)和ls(DNSRR)的额外记录 我希望得到一些帮助或解决方案来解决这个问题。 我的python / scapy脚本在

下面
#!/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 Message at: ' + pkt_time
           p_id = pkt[DNS].id
           cli_ip = pkt[IP].src 
           cli_port = pkt.sport
           srv_ip = pkt[IP].dst
           srv_port = pkt.dport
           query = pkt[DNSQR].qname
           q_class = pkt[DNSQR].qclass
           qr_class = pkt[DNSQR].sprintf('%qclass%')
           type =  pkt[DNSQR].sprintf('%qtype%')
# 
        elif DNSRR in pkt and pkt.sport == 53:
        # responses
           pkt_time = pkt.sprintf('%sent.time%')
           p_id = pkt[DNS].id
           srv_ip = pkt[IP].src
           srv_port = pkt.sport
           cli_ip = pkt[IP].dst
           cli_port = pkt.dport
           response = pkt[DNSRR].rdata
           r_class = pkt[DNSRR].rclass
           rr_class = pkt[DNSRR].sprintf("%rclass%")
           type = pkt[DNSRR].sprintf("%type%")
           ttl = pkt[DNSRR].ttl
           len = pkt[DNSRR].rdlen
# 
           print response
    except:
        pass
# ------ START SNIFFER 
sniff(iface=interface, filter=filter_bpf, store=0,  prn=select_DNS)

0 个答案:

没有答案