我正在 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"
