PyWiFi学习笔记

原文:github.com/awkman/pywifi/blob/master/DOC.md

PyWiFi学习文档

PyWiFi中定义了以下常量

在使用PyWiFi之前,应先 import pywifi

接口状态

Interface.status() 将返回以下状态代码之一

const.IFACE_DISCONNECTED #4
const.IFACE_SCANNING #1
const.IFACE_INACTIVE #2
const.IFACE_CONNECTING #3
const.IFACE_CONNECTED #0

认证算法

身份验证算法应分配到一个 Profile
在正常情况下,几乎所有AP都使用 开放 算法。

const.AUTH_OPEN
const.AUTH_SHARED

密钥管理类型

密钥管理类型应分配给一个 Profile.

对于普通AP,如果

  • AP没有安全设置,请将配置文件akm设置为 AKM_TYPE_NONE.
  • AP处于WPA模式时,将配置文件akm设置为 AKM_TYUPE_WPAPSK.
  • AP处于WPA2模式时,将配置文件akm设置为 AKM_TYUPE_WPA2PSK.

AKM_TYPE_WPAAKM_TYPE_WPA2 被企业AP所使用。

const.AKM_TYPE_NONE
const.AKM_TYPE_WPA
const.AKM_TYPE_WPAPSK
const.AKM_TYPE_WPA2
const.AKM_TYPE_WPA2PSK

密码类型

如果akm不可用,则应将密码类型设置为Profile AKM_TYPE_NONE
你也可以参考要连接到的AP的设置。

const.CIPHER_TYPE_NONE
const.CIPHER_TYPE_WEP
const.CIPHER_TYPE_TKIP
const.CIPHER_TYPE_CCMP

网络配置文件

Profile是我们要连接到的AP的配置。
配置文件的字段如下所示:

  • ssid - AP的ssid。
  • auth - AP的认证算法。
  • akm - AP的密钥管理类型。
  • cipher - AP的密码类型。
  • key (optinoal) - (optinoal) - AP的秘钥。

如果密码不正确,则应设置CIPHER_TYPE_NONE选项

例如:

import pywifi

profile = pywifi.Profile()
profile.ssid = 'testap'
profile.auth = const.AUTH_ALG_OPEN
profile.akm.append(const.AKM_TYPE_WPA2PSK)
profile.cipher = const.CIPHER_TYPE_CCMP
profile.key = '12345678'

wifi = pywifi.PyWiFi()
iface = wifi.interfaces()[0]
profile = iface.add_network_profile(profile)
iface.connect(profile)

接口

Interface 指我们用于执行的Wi-Fi接口
Wi-Fi操作 (例如: 扫描、连接、断开......).

获取接口信息

通常,平台中只有一个Wi-Fi接口。
因此,使用索引 0 获得Wi-Fi接口。

import pywifi

wifi = pywifi.PyWiFi()
iface = wifi.interfaces()[0]

Interface.name()

  • 获取接口名字。

Interface.scan()

  • 触发接口以扫描AP。

Interface.scan_results()

  • 获取上一次触发扫描的结果。
  • 将返回 Profile 列表。

注: 因为每个Wi-Fi接口的扫描时间是不同的。
2~8秒后调用scan_results()会比直接调用scan()更安全。

Interface.add_network_profile(profile)

添加AP配置文件以供以后连接。

Interface.remove_all_network_profiles()

删除所有AP配置文件。

Interface.network_profiles()

通过返回Profile列表获取所有保存的AP配置文件。

Interface.connect(profile)

通过给定的profile连接到指定的AP。
注: 作为目前的设计, add_network_profile(profile) 应该在connect(profile) 之前被调用。

Interface.disconnect()

断开当前AP连接。

Interface.status()

获取当前状态的状态。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容