2016-03-29 11 views
-3

DNSパケットをスニッフィングするプログラムを作成しようとしていて、パケットのqnameを辞書の「キー」と辞書の「価値」へのパケットと、何らかの理由で、私はdns_dictの定義は遠くよりインデントされ6"インデントエラー:インデントが外側インデントレベルと一致しません"問題

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

行6のインデントは、関数内の行のインデントと関数外のインデントには対応しません。 – snakecharmerb

+0

@snakecharmerb私は他の問題を見つけることができません。 "strname ="を削除してもうまくいきますので – Shmuel

答えて

1

ラインでこのエラーを取得するには、あなたが同じでそれらを持っている必要がありSTRNAME私が下に示すようにインデント。あなたのコードスニペットにその行に含まれている行番号があることがわかります。それがあなたのコードにないことを確認してください。

def query_ip_name(dns_packet): 

    dns_dict = {} 

    strname = dns_packet[DNSQR].qname 
+0

ありがとうございます。 この行の問題点は次のとおりです。 '\t dns_dict.update(strname:ip_add)'? – Shmuel

+0

@Shmuelどのようなエラーが表示されますか?どのエディタを使用していますか? – sabbahillel

0

タブとスペースを混用しないでください。行dns_dict = {}はタブで字下げされ、残りのファイルはスペースで区切られています。タブを4つのスペースに置き換えます。

+0

ありがとうございます。 この行の問題点は次のとおりです。 '\t dns_dict.update(strname:ip_add)'? – Shmuel

+0

@Shmuelは、 '、':ではなく、 '、'の代わりに引数を区切っている関数を呼び出していますか?それはタイプミスかもしれません。 – sabbahillel

関連する問題