我正在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")
如果没有加密,则加密= 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"