2017-08-04 5 views
1

特定のフォーマットに一致するプローブが検出されたときにターミナルで警告するために、以下のスクリプトを修正しようとしています。私が一致させたいフォーマットは 'KD - ????????????????'誰か助けてくれますか?あなたはユニークな値が必要な場合は特定のプローブを特定するためにscapyを適合させる

#!/usr/bin/env python 
# -- coding: utf-8 -- 

from scapy.all import * 

unique_probe = [] 

def Handler(pkt): 
    if pkt.haslayer(Dot11): # 802.11 
     if pkt.type == 0 and pkt.subtype == 4: # mgmt, probe request 
      if pkt.addr2 not in unique_probe : 
      unique_probe.append(pkt.addr2) 
#####need something here to match pkt.info to a condition e.g. if pkt.info=KD* then 
       print "MAC: %s probing for %s possible use of KarmaDetector" %(pkt.addr2, pkt.info) 

sniff(iface="wla0mon", count=0, prn=Handler, store=0) # sudo rfkill unblock wifi && sudo airmon-ng start wlan0 

答えて

0

まず、listオブジェクトを使用しないでください。 setオブジェクトを使用してください。

第2に、pkt.haslayer(Dot11)ではなくDot11 in pktを使用できます。

from scapy.all import * 

unique_probes = set() 

def handle(pkt): 
    if Dot11 in pkt and (pkt.type, pkt.subtype) == (0, 4): 
     unique_probes.add(pkt.addr2) 
     try: 
      subpkt = pkt[Dot11Elt] 
     except KeyError: 
      pass 
     while isinstance(subpkt, Dot11Elt): 
      if subpkt.ID == 0: # SSID 
       if subpkt.info.startswith('KD-'): 
        print "MAC %s probing for %s possible use of KarmaDetector" % (pkt.addr2, subpkt.info) 
       break 
      pkt = pkt.payload 

sniff(iface="wla0mon", count=0, prn=handler, store=0) # sudo rfkill unblock wifi && sudo airmon-ng start wlan0 

次に、あなただけの、関連する値を見つけるためにDot11Elt層を解析する必要があります

関連する問題