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

时间:2012-12-20 21:27:49

标签: python dbus

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

1 个答案:

答案 0 :(得分:0)

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"