我正在尝试修改以下脚本,以便在检测到与特定格式匹配的探测时能够在终端中发出警报。我想要匹配的格式是' KD - ??????????????任何人都可以帮助我吗?
#!/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 :(得分:0)
首先,如果您想要唯一值,请不要使用list
个对象。使用set
个对象。
其次,您可以使用Dot11 in pkt
而不是pkt.haslayer(Dot11)
。
然后,您只需要解析Dot11Elt
图层以找到相关值:
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