用Python脚本能获取Wifi密码么?能。
注意,本文不是破解 WIFI 密碼,當然你把程序發給別人再獲取對方密碼,那是社會工程學。
文章目錄
- ?? 實戰場景與 `subprocess` 模塊介紹
- ?? Python 獲取本地 Wifi 密碼
?? 實戰場景與 subprocess 模塊介紹
這篇博客給大家帶來一個小小的案例,使用 Python 腳本獲取本地電腦記錄的所有 Wifi 密碼。
先介紹一下用到的模塊 subprocess,看模塊名就知道這是進程模塊,它可以讓我們生成新的進程,并對進行進行管理。
模塊中的常用函數,如下所示。
- subprocess.run():執行指定命令,等待執行完成后返回一個包含執行結果的 CompletedProcess 類對象;
- subprocess.call():執行指定命令,返回命令執行狀態,與 os.system(cmd) 功能類似;
- subprocess.check_call():執行指定命令,如果執行成功返回狀態碼,否則拋出異常;
- subprocess.check_output() :執行指定命令,如果執行狀態碼為 0,返回執行結果,否則拋出異常;
- subprocess.getoutput():接收字符串格式的命令,執行并返回執行結果,與之相同的函數有 os.popen(cmd).read();
- subprocess.getstatusoutput():執行命令,返回一個元組(命令執行狀態,命令執行結果)。
使用這個模塊還有一些注意事項。
既然優先使用 subprocess.run() 方法,那我們看一下其語法格式。
subprocess.run(args, *, stdin=None, input=None, stdout=None, stderr=None, capture_output=False, shell=False, cwd=None, timeout=None, check=False, encoding=None, errors=None, text=None, env=None, universal_newlines=None)參數說明如下:
- args:要執行的 shell 命令,需要傳入字符串或者字符串參數列表;
- stdin,stdout,stderr:子進程的標準輸入,輸出和錯誤;
- timeout:命令超時時間;
- check:默認為 False,如果設置為 True,則當進程退出狀態碼不是 0 的時候,拋出 CalledProcessError 異常;
- encoding:如果設置該參數,則 stdin,stdout,stderr 可以接收字符串數據,并以該編碼進行編碼,否則只接收字節類型數據;
- shell:設置命令是否通過 Shell 執行。
有些這些基礎參數說明之后,就可以調用最簡單的 Shell 命令了,例如查看本地 pip 包安裝清單。
import subprocesssubprocess.run(["pip","list"])運行代碼,自行查看結果,當然也可以把返回值捕獲到一個變量中,查看一下返回對象類型。
import subprocessret = subprocess.run(["pip","list"]) print(ret)輸出結果如下所示:
CompletedProcess(args=['pip', 'list'], returncode=0)此時返回的是 CompletedProcess 類的對象實例,它表示的是結束進程之后的狀態心虛,包含如下屬性。
- args:該進程執行的命令;
- returncode:退出狀態碼,為 0 表示進程成功運行,負值-N 表示進程被信號 N 終止;
- stdout:從進程捕獲到的輸出信息;
- stderr:從進程捕獲到的錯誤信息。
🍁 有了上述知識鋪墊之后,就可以完成 Python 獲取本地 Wifi 密碼案例了 🍁
?? Python 獲取本地 Wifi 密碼
獲取本地 wifi 密碼,先通過 CMD 命令實現,分為兩步,如下所示。
第一步,獲取所有用戶配置文件,其結果為當前電腦連接過的 wifi 名稱。
得到的結果如下所示。
這里僅在本機中找到了一個配置文件 realme GT Neo2T,然后通過下述命令查看 Wifi 密碼。
第二步,獲取上述配置文件對應的密碼。
可以在運行結果中找到保存密碼,如下所示。
有了上述兩條 CMD 命令,我們將其應用到 Python 中,就實現了本案例訴求。
將 CMD 命令翻譯為 Python 代碼,首先獲取所有 wifi 信息。
import subprocess# 獲取本機wifi列表 output = subprocess.run(['netsh', 'wlan', 'show', 'profiles'], capture_output=True).stdout.decode('gbk').split('\n') print(output) wifi_list = [item.split(':')[1][1:-1] for item in output if "所有用戶配置文件" in item]print(wifi_list)接下來執行第二條命令,獲取指定 wifi 密碼。
# 獲取 wifi 密碼 for wifi in wifi_list:ret = subprocess.run(['netsh', 'wlan', 'show', 'profile', f'name={wifi}', 'key=clear'],capture_output=True).stdout.decode('gbk', errors='ignore').split('\n')print(ret)results = [item.split(':')[1][1:-1] for item in ret if "關鍵內容" in item]print(f'{wifi} 密碼:{results[0] if len(results)>0 else "無" }')最終的運行結果如下所示。
realme GT Neo2T 密碼:12345678💰💰 完成本案例!
📢📢📢📢📢📢
💗 你正在閱讀 【夢想橡皮擦】 的博客
👍 閱讀完畢,可以點點小手贊一下
🌻 發現錯誤,直接評論區中指正吧
📆 橡皮擦的第 752 篇原創博客
從訂購之日起,案例 5 年內保證更新
- ?? Python 爬蟲 120,點擊訂購 ??
- ?? 爬蟲 100 例教程,點擊訂購 ??
總結
以上是生活随笔為你收集整理的用Python脚本能获取Wifi密码么?能。的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [VBS]_[活动分组程序]
- 下一篇: ViG核心代码及网络结构图