使用Python提取本機(jī)連接過WiFi名稱和密碼
在 Windows 系統(tǒng)上用Python 獲取當(dāng)前電腦之前接過的 WiFi 名稱及密碼,并導(dǎo)出csv文件。
實(shí)現(xiàn)原理
Windows 會把所有連接過的 WiFi 配置保存在系統(tǒng)中,使用命令:
netsh wlan show profiles→ 獲取所有 WiFi 名稱netsh wlan show profile name="xxx" key=clear→ 獲取指定 WiFi 的密碼
Python 只需要調(diào)用這些命令并解析即可。
Python 代碼如下
# -*- coding: utf-8 -*-
import subprocess
import re
import csv
import sys
def run_cmd(cmd):
"""執(zhí)行系統(tǒng)命令并返回輸出(永不返回 None)"""
try:
result = subprocess.run(
cmd,
shell=True,
capture_output=True,
text=True,
encoding="gbk",
errors="ignore"
)
return result.stdout or ""
except Exception as e:
return ""
def get_wifi_list():
"""獲取所有 WiFi 配置名稱(兼容中英文系統(tǒng))"""
output = run_cmd("netsh wlan show profiles")
# 兼容中文:所有用戶配置文件
# 兼容英文:All User Profile
profiles = re.findall(
r"(?:所有用戶配置文件|All User Profile)\s*:\s*(.*)",
output
)
return [p.strip() for p in profiles]
def get_wifi_password(name):
"""獲取指定 WiFi 的密碼(兼容中英文系統(tǒng))"""
if not name:
return ""
output = run_cmd(f'netsh wlan show profile name="{name}" key=clear')
# 兼容中文:關(guān)鍵內(nèi)容
# 兼容英文:Key Content
match = re.search(
r"(?:關(guān)鍵內(nèi)容|Key Content)\s*:\s*(.*)",
output
)
return match.group(1).strip() if match else ""
def export_wifi_passwords(csv_file="wifi_passwords.csv"):
"""導(dǎo)出所有 WiFi 名稱與密碼到 CSV,并打印到 stdout(供 C# 調(diào)用)"""
wifi_list = get_wifi_list()
data = []
for wifi in wifi_list:
pwd = get_wifi_password(wifi)
data.append([wifi, pwd])
print(f"{wifi} : {pwd}")
# 寫入 CSV 文件
try:
with open(csv_file, "w", newline="", encoding="utf-8-sig") as f:
writer = csv.writer(f)
writer.writerow(["WiFi 名稱", "密碼"])
# writer.writerows(data)
for wifi, pwd in data:
writer.writerow([wifi, "\t" + pwd]) # 把它當(dāng)成純文本,不會吞掉前導(dǎo) 0
# writer.writerow([wifi, f"'{pwd}"])
except Exception as e:
print(f"寫入 CSV 文件失敗: {e}")
sys.stdout.flush() # 關(guān)鍵:確保 C# 能讀取完整輸出
if __name__ == "__main__":
export_wifi_passwords()
運(yùn)行效果
終端輸出:
WXzhongshuge : 20130423 Ritchie : ritchie12345678 KFC FREE WIFI : ChinaNet-Starbucks : RD_Meeting_Room : 57744789 1205 : W136444564 高鐵WiFi : CMCC-JJJ2 : 12345678 H3C_E4C764 : 6575754635 已導(dǎo)出到文件:wifi_passwords.csv
注意事項(xiàng)
- 代碼僅適用于 Windows
- 需要以 管理員權(quán)限運(yùn)行 Python(否則可能讀取不到密碼)
- 輸出編碼使用
gbk以兼容中文系統(tǒng) - run_cmd 增加安全保護(hù),設(shè)置參數(shù)errors=“ignore”
- 避免導(dǎo)出csv 文件將密碼前面0省略,使用writer.writerow([wifi, “\t” + pwd]) 或writer.writerow([wifi, f’=“{pwd}”'])
以上就是使用Python提取本機(jī)連接過WiFi名稱和密碼的詳細(xì)內(nèi)容,更多關(guān)于Python提取連接過WiFi名稱密碼的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Python實(shí)現(xiàn)監(jiān)控屏幕界面內(nèi)容變化并發(fā)送通知
這篇文章主要為大家詳細(xì)介紹了如何利用Python實(shí)現(xiàn)實(shí)時(shí)監(jiān)控屏幕上的信息是否發(fā)生變化并發(fā)送通知,文中的示例代碼講解詳細(xì),感興趣的可以了解一下2023-04-04
使用python+pygame開發(fā)消消樂游戲附完整源碼
消消樂小游戲相信大家都玩過,大人小孩都喜歡玩的一款小游戲,那么基于程序是如何實(shí)現(xiàn)的呢?今天帶大家,用python+pygame來實(shí)現(xiàn)一下這個(gè)花里胡哨的消消樂小游戲功能,感興趣的朋友一起看看吧2021-06-06
openCV入門學(xué)習(xí)基礎(chǔ)教程第三篇
pencv是用于快速處理圖像處理、計(jì)算機(jī)視覺問題的工具,支持多種語言進(jìn)行開發(fā)如c++、python、java等,下面這篇文章主要給大家介紹了關(guān)于openCV入門學(xué)習(xí)基礎(chǔ)教程的相關(guān)資料,需要的朋友可以參考下2022-11-11
python re的findall和finditer的區(qū)別詳解
這篇文章主要介紹了python re的findall和finditer的區(qū)別詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11
開源軟件包和環(huán)境管理系統(tǒng)Anaconda的安裝使用
Anaconda是一個(gè)用于科學(xué)計(jì)算的Python發(fā)行版,支持 Linux, Mac, Windows系統(tǒng),提供了包管理與環(huán)境管理的功能,可以很方便地解決多版本python并存、切換以及各種第三方包安裝問題。2017-09-09
使用Python進(jìn)行數(shù)據(jù)清洗與存儲的基本方法
在爬蟲數(shù)據(jù)獲取完成后,數(shù)據(jù)往往是“原始”的,不適合直接使用,清洗和存儲是將爬取到的原始數(shù)據(jù)轉(zhuǎn)化為有用信息的關(guān)鍵步驟,本文將系統(tǒng)地介紹 Python 中進(jìn)行數(shù)據(jù)清洗與存儲的基本方法,幫助新手理解如何處理爬蟲數(shù)據(jù),使其更加適合分析和使用,需要的朋友可以參考下2024-11-11

