我正在尝试创建一个嗅探DNS数据包的程序,然后将数据包的qname放入字典的'key',并将数据包的dst ip放入字典的'value'中,由于某种原因我在第6行中得到此错误
from scapy.all import *
def query_ip_name(dns_packet):
dns_dict = {}
6- strname = dns_packet[DNSQR].qname
ip_add = dns_packet[IP].dst
dns_dic.update(dns_name : dns_ip_name)
def filter_dns(packet):
return (DNS in packet and packet[DNS].opcode == 0 and packet[DNSQR].qtype == 1)
def main():
print 'Starting to sniff!'
packets = sniff(count=30, lfilter=filter_dns, prn = query_ip_name)
print 'The sniffing was successfully ended.'
print 'The dictionary is : '
main()
答案 0 :(得分:1)
dns_dict的定义缩进比strname更远你需要将它们放在我下面显示的相同缩进处。我看到您的代码段中包含该行中包含的行号。确保它不在您的代码中。
def query_ip_name(dns_packet):
dns_dict = {}
strname = dns_packet[DNSQR].qname
答案 1 :(得分:0)
不要混合标签和空格。行dns_dict = {}
使用制表符缩进,而文件的其余部分则使用空格。用4个空格替换标签。