如何获取连接的接入点的 MAC 地址?

How to get MAC address of connected Access point?

我正在使用 Scapy 嗅探接入点 (AP) 信标数据包并获取所有 AP 信标数据包,它是 AP 附近的 MAC 地址,但我需要确切的 MAC 已连接 AP 的地址 然后如何仅嗅探已连接的 AP 信标帧 如何使用 scapy [=15 过滤已连接的 AP 信标帧=]或任何替代想法。

*我在 python 2.7

假设信标帧称为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)

这是一个很好的 link 回复:信标帧。 https://www.4armed.com/blog/forging-wifi-beacon-frames-using-scapy/

我选择替代方法,即在 python 程序中使用命令

代码片段

def Check_connected_ap():
    cmd =["nmcli -f BSSID,ACTIVE dev wifi list | awk ' ~ /yes/ {print }'"]
    address = subprocess.Popen(cmd, stdout=subprocess.PIPE, shell=True)
    (out, err) = address.communicate()
    print out