我正在使用 Scapy 来嗅探接入点(AP)信标数据包,并获取所有AP信标数据包及其附近AP的MAC地址,但我需要连接AP的确切 MAC地址那么如何仅嗅探连接的AP信标帧或如何使用scapy 或任何替代想法过滤连接的AP信标帧。
*我在python 2.7中这样做
答案 0 :(得分:0)
假设信标帧被称为pkt。 pkt.addr1是目标MAC,pkt.addr2是源MAC,pkt.addr3是AP的MAC地址。你可以这样写:
from scapy.all import *
def ap_mac(pkt):
if pkt.haslayer(Dot11)
if pkt.type == 0 and pkt.subtype == 8:
print('SSID: '+%s+' MAC:'+%s)(pk.info,pkt.addr3)
else: pass
else: pass
sniff(prn=ap_mac)
从信标帧中打印出所有AP MAC。然后你可以使用类似的东西:
from scapy.all import *
def sniff_ap(pkt):
if pkt.haslayer(Dot11):
if pkt.add3 == 'xx.xx.xx.xx.xx.xx': ## AP MAC
print(pkt.summary())
else: pass
else: pass
sniff(prn=sniff_ap)
这是一个很好的链接:信标帧。 https://www.4armed.com/blog/forging-wifi-beacon-frames-using-scapy/
答案 1 :(得分:0)
我选择替代方法,即在python程序中使用命令
代码段
def Check_connected_ap():
cmd =["nmcli -f BSSID,ACTIVE dev wifi list | awk '$2 ~ /yes/ {print $1}'"]
address = subprocess.Popen(cmd, stdout=subprocess.PIPE, shell=True)
(out, err) = address.communicate()
print out