Skip to main content
 首页 » 编程设计

python之DBus-Python 网络管理器脚本之WpaFlags 问题

2025年05月04日9mate10pro

我正在 DBus-python 中编写一个 python 脚本,用于通过网络管理器获取有关可用接入点的一些信息。我可以正确获取 ssid、mac 地址、信号强度值。虽然当我尝试获取 WpaFlags 时,我只得到了一些整数值。我想,我应该知道如何使用“NM_802_11_AP_SEC” 但我不知道怎么办。我将不胜感激任何建议。

可读结果:

ssid = ap_prop_iface.Get("org.freedesktop.NetworkManager.AccessPoint","Ssid",byte_arrays=True) 
hwaddr = ap_prop_iface.Get("org.freedesktop.NetworkManager.AccessPoint", "HwAddress") 

不可读的结果:

encryption = ap_prop_iface.Get("org.freedesktop.NetworkManager.AccessPoint", "WpaFlags") 

encryption=0 如果没有加密-没关系- 我得到的其他结果是 324 和 392

请您参考如下方法:

WpaFlags(和其他*Flags)是由位标志组成的整数,这里NM_802_11_AP_SEC .所以 324 ix 0x144(十六进制)是 NM_802_11_AP_SEC_KEY_MGMT_PSK | NM_802_11_AP_SEC_GROUP_TKIP | NM_802_11_AP_SEC_PAIR_TKIP。

这是一个关于一般位标志的 SO 问题:Bitwise operation and usage .

例子:

NM_802_11_AP_SEC_PAIR_TKIP = 0x04  // declare other constants too... 
flags = 324                        // from an API call really 
if flags & NM_802_11_AP_SEC_PAIR_TKIP: 
    print "PAIR_TKIP is enabled"