學習python練手,腳本方便獲取電腦裡存儲過的所有WiFi密碼,其原理是自動化"netsh wlan show profiles"的查詢過程,後通過正則匹配獲取
私信小編01即可獲取python學習資源
# subprocess 模塊允許我們啟動一個新進程,并連接到它們的輸入/輸出/錯誤管道,從而獲取返回值
import subprocess
import re
# 用于判斷OS的語言
import locale
loc_lang = locale.getdefaultlocale()
# print(loc_lang[0])
# 代碼中用到的正則匹配模式字符串,提取出來以便不同語言系統使用,默認支持中文英文,其他語言需要更改匹配語句
if loc_lang[0] == "zh_CN":
re_pattern = ["所有用戶配置文件 : (.*)\r", "安全密鑰 : 不存在", "關鍵内容 : (.*)\r"]
else:
re_pattern = ["All User Profile : (.*)\r", "Security key : Absent", "Key Content : (.*)\r"]
# 如果 capture_output 設為 true,stdout 和 stderr 将會被捕獲
cmd_output = subprocess.run(["netsh", "wlan", "show", "profiles"], capture_output=True).stdout.decode('gbk')
# print(cmd_output)
wifi_names = (re.findall(re_pattern[0], cmd_output))
# print(wifi_names)
wifi_list = []
if len(wifi_names) != 0:
for name in wifi_names:
# 每一個wifi的信息存儲在一個字典裡
wifi_profile = {}
profile_info = subprocess.run(["netsh", "wlan", "show", "profiles", name],
capture_output=True).stdout.decode('gbk')
# print(profile_info)
# 判斷wifi密碼是否存儲在windows計算機裡,不存在則忽略
if re.search(re_pattern[1], profile_info):
continue
else:
wifi_profile["ssid"] = name
# 密碼存在時,加上命令參數“key=clear”顯示wifi密碼
profile_info_pass = subprocess.run(["netsh", "wlan", "show", "profiles", name, "key=clear"],
capture_output=True).stdout.decode('gbk')
password = re.search(re_pattern[2], profile_info_pass)
# print(password)
if not password:
wifi_profile["password"] = None
else:
wifi_profile["password"] = password[1]
wifi_list.append(wifi_profile)
for i in range(len(wifi_list)):
print(wifi_list[i])
結果
,
更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!