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

时间:2017-03-21 04:32:45

标签: python-2.7 networking network-programming wireless scapy

我正在使用 Scapy 来嗅探接入点(AP)信标数据包,并获取所有AP信标数据包及其附近AP的MAC地址,但我需要连接AP的确切 MAC地址那么如何仅嗅探连接的AP信标帧如何使用scapy 任何替代想法过滤连接的AP信标帧。

*我在python 2.7中这样做

2 个答案:

答案 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