python可以操作wifi嗎?
網址:https://pypi.org/project/pywifi/1.1.6/
github網址:
https://github.com/awkman/pywifi
開發者: Jiang Sheng-Jhih
pywifi提供了一個跨平臺的Python模塊,用于操作無線接口。支持Windows和Linux.
安裝條件“
在Linux上,您需要運行wpa_supplicant來操作wifi設備,然后pywifi可以通過socket與wpa_supplicant進行通信。
在Windows上,Native Wifi組件附帶的Windows版本大于Windows XP SP2。
安裝:
使用pip從源安裝:
pip install pywifi
開始 -》運行-》輸入
cmd.exe
進入指令操作界面。在界面中輸入:
pip install pywifi
pywifi 說明
常量
以下constatns在pywifi中定義。
在使用常量之前,請記住import pywifi。
接口狀態
Interface.status() 將返回以下狀態代碼之一。
const.IFACE_DISCONNECTED
const.IFACE_SCANNING
const.IFACE_INACTIVE
const.IFACE_CONNECTING
const.IFACE_CONNECTED
身份驗證算法
驗證算法應該綁定到配置文件。對于正常情況,幾乎所有AP都使用開放算法。
const.AUTH_OPEN
const.AUTH_SHARED
密鑰管理類型
密鑰管理類型應分配給配置文件。
對于普通AP,如果
AP沒有安全設置,將配置文件設置為akm AKM_TYPE_NONE。
AP處于WPA模式,將配置文件設置為akm AKM_TYUPE_WPAPSK。
AP處于WPA2模式,將配置文件設置為akm AKM_TYUPE_WPA2PSK。
AKM_TYPE_WPA并AKM_TYPE_WPA2通過企業的AP使用。
const.AKM_TYPE_NONE
const.AKM_TYPE_WPA
const.AKM_TYPE_WPAPSK
const.AKM_TYPE_WPA2
const.AKM_TYPE_WPA2PSK
密碼類型
如果akm不是,則應將密碼類型設置為ProfileAKM_TYPE_NONE。您可以參考要連接的AP的設置。
const.CIPHER_TYPE_NONE
const.CIPHER_TYPE_WEP
const.CIPHER_TYPE_TKIP
const.CIPHER_TYPE_CCMP
網絡資料
一個配置文件是我們要連接到AP的設置。個人資料的字段:
ssid - AP的ssid。
auth - AP的認證算法。
akm - AP的密鑰管理類型。
cipher - AP的密碼類型。
key (optinoal) - AP的關鍵。如果密碼不是,則應該設置此項CIPHER_TYPE_NONE。
例:
import pywifiprofile = pywifi.Profile()profile.ssid = 'testap'profile.auth = const.AUTH_ALG_OPENprofile.akm.append(const.AKM_TYPE_WPA2PSK)profile.cipher = const.CIPHER_TYPE_CCMPprofile.key = '12345678'wifi = pywifi.PyWiFi()iface = wifi.interfaces()[0]profile = iface.add_network_profile(profile)iface.connect(profile)接口一個接口意味著我們用它來執行Wi-Fi運營的Wi-Fi接口(例如,掃描,連接,斷開,...)。
獲取界面信息
通常,平臺中只有一個Wi-Fi接口。因此,使用索引0來獲得Wi-Fi接口。
import pywifi
wifi = pywifi.PyWiFi()
iface = wifi.interfaces()[0]
Interface.name
()
獲取Wi-Fi接口的名稱。
Interface.scan()
觸發接口掃描AP。
Interface.scan_results()
獲取先前觸發掃描的結果。一個配置文件列表將被退回。
注意。因為每個Wi-Fi接口的掃描時間是不同的。呼叫后scan_results()2~8秒后呼叫更安全scan()。
Interface.add_network_profile(個人資料)
添加AP配置文件以便以后連接。
Interface.remove_all_network_profiles()
刪除所有AP配置文件。
Interface.network_profiles()
通過返回配置文件列表獲取所有已保存的AP配置文件。
Interface.connect(配置文件)
通過給定的配置文件連接到指定的AP 。 注意。作為當前的設計,add_network_profile(profile)應該在調用之前connect(profile)調用。
Interface.disconnect()
斷開當前的AP連接。
Interface.status()
獲取當前狀態的狀態。