Python中pywifi模塊的基本用法講解
跨平臺(tái)的pywifi模塊支持操作無(wú)線網(wǎng)卡,該模塊易于使用,同時(shí)支持Windows、Linux等多個(gè)系統(tǒng)。pywifi模塊不是Python的標(biāo)準(zhǔn)模塊,需單獨(dú)安裝,同時(shí)該模塊依賴comtypes模塊,最好同時(shí)安裝comtypes模塊,否則調(diào)用pywifi的函數(shù)時(shí)可能會(huì)報(bào)錯(cuò)。
pip install comtypes pip install pywifi
pywifi模塊中的類(lèi)不算太多,其中主要用到的類(lèi)包括PyWiFi、Profile、Interface等,詳述如下:
PyWiFi類(lèi)用于操作無(wú)線設(shè)備,該類(lèi)的主要函數(shù)interfaces返回可用的無(wú)線網(wǎng)卡集合,也即Interface對(duì)象集合。
Profile類(lèi)表示無(wú)線接入點(diǎn)(AP),也即無(wú)線網(wǎng)卡搜索出的無(wú)線連接,一個(gè)Profile對(duì)象表示一個(gè)可以連接或可用的無(wú)線連接,Profile類(lèi)的主要屬性如下表所示:
| 序號(hào) | 屬性名 | 說(shuō)明 |
|---|---|---|
| 1 | ssid | 無(wú)線網(wǎng)絡(luò)名稱 |
| 2 | auth | 認(rèn)證算法,包括AUTH_ALG_OPEN、.AUTH_ALG_SHARED兩種,默認(rèn)為AUTH_ALG_OPEN,關(guān)于認(rèn)證算法的介紹詳見(jiàn)參考文獻(xiàn)5 |
| 3 | akm | 授權(quán)密鑰管理方式,包括AKM_TYPE_NONE、AKM_TYPE_WPA、AKM_TYPE_WPAPSK、AKM_TYPE_WPA2、AKM_TYPE_WPA2PSK、AKM_TYPE_UNKNOWN,默認(rèn)為AKM_TYPE_NONE,關(guān)于授權(quán)密鑰管理方式詳見(jiàn)參考文獻(xiàn)6-7 |
| 4 | cipher | 密碼類(lèi)型,包括CIPHER_TYPE_NONE、CIPHER_TYPE_WEP、CIPHER_TYPE_TKIP、CIPHER_TYPE_CCMP、CIPHER_TYPE_UNKNOWN,默認(rèn)為CIPHER_TYPE_NONE |
| 5 | key | 無(wú)線網(wǎng)絡(luò)連接密碼,如果密碼類(lèi)型不未CIPHER_TYPE_NONE,則應(yīng)設(shè)置本屬性值 |
;Interface類(lèi)用于執(zhí)行無(wú)線網(wǎng)絡(luò)操作,主要包括以下函數(shù):
| 序號(hào) | 函數(shù)名 | 說(shuō)明 |
|---|---|---|
| 1 | name | 獲取無(wú)線網(wǎng)卡名稱 |
| 2 | scan | 調(diào)用無(wú)線網(wǎng)卡掃描可用的無(wú)線網(wǎng)絡(luò)(AP) |
| 3 | scan_results | 獲取scan函數(shù)的掃描結(jié)果,返回的是Profile對(duì)象列表 |
| 4 | add_network_profile | 添加特定無(wú)線網(wǎng)絡(luò)(AP)以便后續(xù)連接 |
| 5 | remove_network_profile | 移除指定的無(wú)線網(wǎng)絡(luò)(AP) |
| 6 | remove_all_network_profiles | 移除所有無(wú)線網(wǎng)絡(luò)(AP) |
| 7 | network_profiles | 獲取保存的所有無(wú)線網(wǎng)絡(luò)(AP) |
| 8 | connect | 連接指定的無(wú)線網(wǎng)絡(luò)(AP) |
| 9 | disconnect | 斷掉當(dāng)前無(wú)線網(wǎng)絡(luò)連接 |
| 10 | status | 獲取當(dāng)前無(wú)線網(wǎng)絡(luò)連接狀態(tài) |
最后是照著參考文獻(xiàn)3編寫(xiě)的測(cè)試程序(測(cè)試前請(qǐng)確保已記住當(dāng)前計(jì)算機(jī)連接的wifi密碼)
import pywifi
wifi = pywifi.PyWiFi()
iface = wifi.interfaces()[0]
print('interface name: ',iface.name())
print('interface status: ',iface.status())
iface.disconnect()
print('interface status: ',iface.status())
profile = pywifi.Profile()
profile.ssid = "XXXXXXX"
profile.auth = pywifi.const.AUTH_ALG_OPEN
profile.akm.append(pywifi.const.AKM_TYPE_WPA2PSK)
profile.cipher = pywifi.const.CIPHER_TYPE_CCMP
profile.key = 'XXXXXXX'
iface.remove_all_network_profiles()
tep_profile = iface.add_network_profile(profile)
iface.connect(tep_profile)
sleep(5)
print('interface status: ',iface.status())參考文獻(xiàn)
[1]https://github.com/awkman/pywifi
[2]https://github.com/awkman/pywifi/blob/master/DOC.md
[3]https://blog.csdn.net/Feng_liangmu/article/details/122911002
[4]https://docs.python.org/zh-cn/3/index.html
[5]https://www.likecs.com/show-655827.html
[6]https://www.likecs.com/show-655827.html
[7]https://code84.com/739564.html
到此這篇關(guān)于Python中pywifi模塊的基本用法的文章就介紹到這了,更多相關(guān)Python pywifi模塊內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python關(guān)于倒排列的知識(shí)點(diǎn)總結(jié)
在本篇文章里小編給大家分享的是一篇關(guān)于python關(guān)于倒排列的知識(shí)點(diǎn)總結(jié),有需要的朋友們可以參考下。2020-10-10
Python使用asyncio異步時(shí)的常見(jiàn)問(wèn)題總結(jié)
這篇文章主要為大家整理了開(kāi)發(fā)人員在?Python?中使用?asyncio?時(shí)提出的常見(jiàn)問(wèn)題以及解決方法,文中的示例代碼講解詳細(xì),感興趣的可以學(xué)習(xí)一下2023-04-04
Python調(diào)用Jar包的兩種方式小結(jié)
這篇文章主要介紹了Python調(diào)用Jar包的兩種方式小結(jié),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-12-12
python plt.plot bar 如何設(shè)置繪圖尺寸大小
這篇文章主要介紹了python plt.plot bar 設(shè)置繪圖尺寸大小的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-06-06
python連接讀寫(xiě)操作redis的完整代碼實(shí)例
這篇文章主要介紹了python連接讀寫(xiě)操作redis的完整代碼實(shí)例,包括redis連接與讀寫(xiě)操作,redis-sentinel哨兵模式下Python操作redis,redis-cluster(集群)模式下Python操作redis,需要的朋友可以參考下2023-01-01
PyCharm在新窗口打開(kāi)項(xiàng)目的方法
今天小編就為大家分享一篇PyCharm在新窗口打開(kāi)項(xiàng)目的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-01-01

