Pywifi - python用法
凉沐流風 - 楓
1.介紹:pywifi是在python中一個用於操作無線接口的模塊,可以跨平台使用,Windows和Linux都支持
2.下載:①pip下載:打開命令提示符,輸入下載命令:
pip install pywifi
由於此模塊基於comtypes模塊,因此同時需要下載此模塊:
pip install comtypes
對於PyCharm,則直接下載兩個模塊即可
# 引入pywifi庫及所帶常量庫
import pywifi
from pywifi import const, Profile
# 1. 基礎
# 獲取網卡接口
wifi = pywifi.PyWiFi()
# 得到第一個無線網卡
ifaces = wifi.interfaces()[0]
# 切斷網卡連接
ifaces.disconnect()
# 獲取wifi的連接狀態
wifistatus = ifaces.status()
# 檢查wifi是否處於切斷狀態
if wifistatus == const.IFACE_DISCONNECTED:
# 網卡已被切斷
pass
# 如果網卡沒有被切斷
# 或者使用 " if wifistatus == const.IFACE_CONNECTED: "
else:
# 已連接wifi
pass
# 如果已經切斷網卡,一般執行下述操作
if wifistatus == const.IFACE_DISCONNECTED:
# 設置wifi連接文件
profile: Profile = pywifi.Profile()
# 你要連接的網絡的名稱
profile.ssid = " "
# 網卡的開放狀態
# " Auth - AP "的驗證算法
profile.auth = const.AUTH_ALG_OPEN
# wifi的加密算法
# 通常的加密算法值為 " WPA "
# 選擇wifi的加密方式
# " Akm - AP "的密鑰管理
profile.akm.append(const.AKM_TYPE_WPA2PSK)
# 加密單元
# " Cipher - AP "的密碼類型
profile.cipher = const.CIPHER_TYPE_CCMP
# 設置密碼
password = " "
# 回調密碼(wifi密碼)
# 如果沒有密碼,則設置值為 " CIPHER_TYPE_NONE "
profile.key = password
# 刪除已連接的所有wifi文件
ifaces.remove_all_network_profiles()
# 加載新的wifi連接文件
tep_profile = ifaces.add_network_profile(profile)
# 連接上面的wifi文件
ifaces.connect(tep_profile)
# 如果wifi已連接
if ifaces.status() == const.IFACE_CONNECTED:
print(True)
# 如果仍未連接
else:
print(False)
# 2.提高
# 獲取wifi接口名稱
name = ifaces.name()
# 掃描wifi ( AP )
ifaces.scan()
# 查看上面的wifi掃描結果 ( 返回值為列表 )
result = ifaces.scan_results()
# 刪除所有的AP配置文件
# 目的是為了接下來的連接
ifaces.remove_all_network_profiles()
# 返回配置文件的列表
files = ifaces.network_profiles()
# 設置配置文件的名字
ifaces.add_network_profile(profile)
# 連接wifi
ifaces.connect(profile)
# 斷開wifi
ifaces.disconnect()
# wifi的連接狀態
ifaces.status()
# 配置文件
profile = pywifi.Profile()
# 配置文件的方法
# ssid auth akm cipher key
# 這些的詳細講解可看基礎
# pywifi中const的量
# const.IFACE_DISCONNECTED = 0
# const.IFACE_SCANNING = 1
# const.IFACE_INACTIVE = 2
# const.IFACE_CONNECTING = 3
# const.IFACE_CONNECTED = 4
# Auth - AP
var1 = const.AUTH_ALG_OPEN
var2 = const.AUTH_ALG_SHARED
# Akm - AP
# 不安全的方法
var3 = const.AKM_TYPE_NONE
# WPA的方法
var4 = const.AKM_TYPE_WPAPSK
# WPA2的方法
var5 = const.AKM_TYPE_WPA2PSK
# 對於企業的方法
var6 = const.AKM_TYPE_WPA
var7 = const.AKM_TYPE_WPA2
# Cipher - AP
var8 = const.CIPHER_TYPE_NONE
var9 = const.CIPHER_TYPE_WEP
var10 = const.CIPHER_TYPE_TKIP
var11 = const.CIPHER_TYPE_CCMP
本教程原本是我寄存在的一個python程序,所以所有的講解都是在代碼中的,若有不便,敬請諒解
原本我所書寫的文件為英文版,教程可見下,若有疑問,可加Q:2633748531進行詢問
# Import the module of PyWifi
import pywifi
from pywifi import const, Profile
# 1. Basic
# Get the network card interface
wifi = pywifi.PyWiFi()
# Get the first wireless network card
ifaces = wifi.interfaces()[0]
# Disconnect the network card
ifaces.disconnect()
# Get the connection state of wifi
wifistatus = ifaces.status()
# Check if disconnect the wifi
if wifistatus == const.IFACE_DISCONNECTED:
# The network card disconnect
pass
# If the network card has already connected
# Or use the " if wifistatus == const.IFACE_CONNECTED: "
else:
# Have already connected the wifi
pass
# If you have already disconnect the network card, do the below
if wifistatus == const.IFACE_DISCONNECTED:
# Set up the file of wifi connection
profile: Profile = pywifi.Profile()
# The name of wifi which you want to connect
profile.ssid = "TP-LINKwangqing"
# The opening state of the network card
# The authentication algorithm of " Auth - AP"
profile.auth = const.AUTH_ALG_OPEN
# The encryption algorithm of wifi
# The encryption algorithm of common wifi is " WPA "
# Choose the encryption way of wifi
# The key management type of " Akm - AP "
profile.akm.append(const.AKM_TYPE_WPA2PSK)
# Encryption unit
# The password type of " Cipher - AP "
profile.cipher = const.CIPHER_TYPE_CCMP
# Set the password
password = "wangzijia123456"
# Call the password ( the password of wifi)
# If there's no password, set the value " CIPHER_TYPE_NONE "
profile.key = password
# Delete all the file of wifi which has already connected
ifaces.remove_all_network_profiles()
# Loading the new file of connection
tep_profile = ifaces.add_network_profile(profile)
# Connect the new file that above
ifaces.connect(tep_profile)
# If the wifi has already connected
if ifaces.status() == const.IFACE_CONNECTED:
print(True)
# If it has disconnected yet
else:
print(False)
# 2.Improvement
# Get the name of wifi interface
name = ifaces.name()
# Scan the wifi ( AP )
ifaces.scan()
# Look the result of scanning ( list )
result = ifaces.scan_results()
# Delete all the setting files of AP
# In order to the next connect
ifaces.remove_all_network_profiles()
# Return the list of setting files
files = ifaces.network_profiles()
# Set the name of setting file
ifaces.add_network_profile(profile)
# Connect the wifi
ifaces.connect(profile)
# Disconnect the wifi
ifaces.disconnect()
# The connection state of wifi
ifaces.status()
# Const in pywifi
# const.IFACE_DISCONNECTED = 0
# const.IFACE_SCANNING = 1
# const.IFACE_INACTIVE = 2
# const.IFACE_CONNECTING = 3
# const.IFACE_CONNECTED = 4
# Set up the file
profile = pywifi.Profile()
# The way to set up the file
# ssid auth akm cipher key
# These look above
# Auth - AP
var1 = const.AUTH_ALG_OPEN
var2 = const.AUTH_ALG_SHARED
# Akm - AP
# No safe mode
var3 = const.AKM_TYPE_NONE
# The mode of WPA
var4 = const.AKM_TYPE_WPAPSK
# The mode of WPA2
var5 = const.AKM_TYPE_WPA2PSK
# For business
var6 = const.AKM_TYPE_WPA
var7 = const.AKM_TYPE_WPA2
# Cipher - AP
var8 = const.CIPHER_TYPE_NONE
var9 = const.CIPHER_TYPE_WEP
var10 = const.CIPHER_TYPE_TKIP
var11 = const.CIPHER_TYPE_CCMP