2

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

4

1 回答 1

1

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。

这是一个关于位标志的一般问题:按位操作和使用

例子:

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"
于 2013-01-04T14:37:09.633 回答