2016-03-29 4 views
-3

Ich versuche ein Programm zu machen, das DNS-Pakete schnüffelt und dann den qnamen der Pakete in den "Schlüssel" eines Wörterbuchs und die dst-IP des Paket in den ‚Wert‘ des Wörterbuchs und aus irgendeinem Grund bekomme ich diesen Fehler in Zeile 6"Einrückungsfehler: Eingeklickt passt nicht zu irgendeiner äußeren Einrückungsebene" Problem

from scapy.all import * 
 

 
def query_ip_name(dns_packet): 
 
\t 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 : ' 
 

 

 

 
    \t \t \t 
 

 
main()

+2

Die Einrückung von Zeile 6 entspricht nicht den darüber liegenden Zeilen innerhalb der Funktion und auch nicht dem Einrücken von Code außerhalb der Funktion. – snakecharmerb

+0

@snakecharmerb Ich kann keine anderen Probleme finden. wenn ich den „strName =“ entfernen, damit es funktioniert gut – Shmuel

Antwort

1

die Definition von dns_dict weiter vertieft wird, als strName Sie müssen sie in der gleichen haben Einrückung, wie ich unten zeige. Ich sehe, dass Sie die Zeilennummer in dieser Zeile in Ihrem Code-Snippet haben. Stellen Sie sicher, dass es nicht in Ihrem Code ist.

def query_ip_name(dns_packet): 

    dns_dict = {} 

    strname = dns_packet[DNSQR].qname 
+0

Vielen Dank, was ist das Problem mit dieser Linie jetzt: ‚\t dns_dict.update (StrName: ip_add)‘? – Shmuel

+0

@Shmuel Welchen Fehler zeigt es? Welchen Editor benutzen Sie? – sabbahillel

0

Nicht Tabs und Leerzeichen mischen. Die Zeile dns_dict = {} ist mit einer Registerkarte eingerückt, während der Rest der Datei mit Leerzeichen gemeint ist. Ersetzen Sie die Registerkarte durch 4 Leerzeichen.

+0

Vielen Dank, Was ist das Problem mit dieser Linie jetzt: '\t dns_dict.update (strname: ip_add)'? – Shmuel

+0

@Shmuel rufen Sie eine Funktion mit einem ':' auf: Trennende Argumente anstelle von ','? Das könnte ein Tippfehler sein. – sabbahillel