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

Posted

技术标签:

【中文标题】DBus-Python 网络管理器脚本 - WpaFlags 问题【英文标题】:DBus-Python Network Manager script - WpaFlags issue 【发布时间】:2012-12-08 11:29:47 【问题描述】:

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

【问题讨论】:

【参考方案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。

这是一个关于位标志的一般问题: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"

【讨论】:

以上是关于DBus-Python 网络管理器脚本 - WpaFlags 问题的主要内容,如果未能解决你的问题,请参考以下文章

如何禁用所有 systemd 网络配置功能并运行我的网络初始化 shell 脚本?

推荐使用 pydbus 或 dbus-python 有啥区别?

适用于 Windows 的 Dbus-Python

dbus-python 如何获得原生类型的响应?

如何在 macOS 上安装 dbus-python?

Bluez BLE 连接监控使用 DBUS-Python