PyWiFi學習筆記

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

PyWiFi學習文檔

PyWiFi中定義了以下常量

在使用PyWiFi之前,應先 import pywifi

接口狀態(tài)

Interface.status() 將返回以下狀態(tài)代碼之一

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 被企業(yè)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

網(wǎng)絡配置文件

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 指我們用于執(zhí)行的Wi-Fi接口
Wi-Fi操作 (例如: 掃描、連接、斷開......).

獲取接口信息

通常,平臺中只有一個Wi-Fi接口。
因此,使用索引 0 獲得Wi-Fi接口。

import pywifi

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

Interface.name()

  • 獲取接口名字。

Interface.scan()

  • 觸發(fā)接口以掃描AP。

Interface.scan_results()

  • 獲取上一次觸發(fā)掃描的結果。
  • 將返回 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()

獲取當前狀態(tài)的狀態(tài)。

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內(nèi)容