詳解Python如何實(shí)現(xiàn)查看WiFi密碼
由于最近公司加強(qiáng)對(duì)無(wú)線安全的管理,wifi密碼從以前的12345678,變成復(fù)雜難記的一串,導(dǎo)致我時(shí)常忘記WIFI密碼,而遭受同事的“毒打”。由于我不是那種喜歡打擾同事認(rèn)真工作的人,于是,我決定用python來(lái)試試,看看能不能讀取到已連接過(guò)WIFI的密碼,這樣就不用老是叨擾別人了!
1. windows查看WIFI密碼的方法
經(jīng)過(guò)我的一番思考和查閱資料(搜索引擎),原理大致是這樣。 通過(guò)windows的wifi屬性查看密碼。這種方式,操作起來(lái)相當(dāng)麻煩,一般人根本找不到。即使第一次找到了,找第二次也要折磨死人。

另外,我們可以使用命令行來(lái)實(shí)現(xiàn)上述操作:
netsh wlan show profiles
列出已連接wifi的列表 然后再使用命令 ``netsh wlan show profiles WiFi名稱 key=clear:
netsh wlan show profiles ZXQ key=clear
查看安全設(shè)置獲得密碼:

上面的方式,仍然比較麻煩,對(duì)于我這種懶人來(lái)說(shuō),實(shí)在是有點(diǎn)聒噪!我就想快速的查看密碼,不要輸入!
想到python也可以執(zhí)行cmd命令,那么第二種命令行的方式,不就可以用python來(lái)實(shí)現(xiàn)了嗎?!
2. 使用subprocess模塊
subprocess是Python標(biāo)準(zhǔn)庫(kù)中的一個(gè)模塊,用于在Python程序中執(zhí)行外部命令或子進(jìn)程。它可以通過(guò)創(chuàng)建子進(jìn)程并與其進(jìn)行通信,來(lái)調(diào)用系統(tǒng)命令或其他可執(zhí)行文件。
subprocess模塊提供了多個(gè)函數(shù)來(lái)調(diào)用子進(jìn)程,如subprocess.run()、subprocess.Popen()等。這些函數(shù)可以執(zhí)行命令并返回執(zhí)行結(jié)果,也可以通過(guò)傳遞參數(shù)和讀取標(biāo)準(zhǔn)輸入輸出進(jìn)行進(jìn)程間的通信。
import subprocess
def get_wifi_password():
# 調(diào)用系統(tǒng)命令,獲取WiFi密碼
result = subprocess.check_output(['netsh', 'wlan', 'show', 'profile'])
result = result.decode('gbk') # 將命令輸出轉(zhuǎn)換為字符串
# 提取WiFi名稱
profiles = [i.split(':')[1][1:-1] for i in result.split('\n') if '所有用戶配置文件' in i]
# 獲取各個(gè)WiFi網(wǎng)絡(luò)的密碼
passwords = []
for profile in profiles:
password = subprocess.check_output(['netsh', 'wlan', 'show', 'profile', 'name=' + profile, 'key=clear'])
password = password.decode('gbk') # 轉(zhuǎn)換為字符串
password = [i.split(':')[1][1:-1] for i in password.split('\n') if '關(guān)鍵內(nèi)容' in i]
passwords.append((profile, password[0]))
return passwords
# 調(diào)用函數(shù)獲取WiFi密碼
wifi_passwords = get_wifi_password()
# 打印WiFi名稱和密碼
for wifi in wifi_passwords:
print(f'WiFi名稱:{wifi[0]},密碼:{wifi[1]}')
Got it!, 有了這個(gè)腳本,這不就是點(diǎn)一下的事么。在這個(gè)示例代碼中,我們使用subprocess.check_output 函數(shù)調(diào)用了 netsh 命令來(lái)獲取已連接WiFi網(wǎng)絡(luò)的信息。獲取到的信息中包含WiFi網(wǎng)絡(luò)的名稱和密碼。
送給公司行政的小姐姐用,下次她見(jiàn)到我,不得叫一聲大哥?
3. pywifi模塊暴力破解
PyWifi 是一個(gè)用于操作WiFi的第三方庫(kù),提供了方便的API以獲取WiFi信息。其本身并不支持獲取已連接過(guò)的wifi的密碼。該庫(kù)主要用于連接、斷開(kāi)以及掃描wifi網(wǎng)絡(luò)。
首先,我們需要使用pip命令來(lái)安裝pywifi庫(kù):
pip install pywifi
由于此模塊基于 comtypes 模塊,因此同時(shí)需要下載此模塊:
pip install comtypes
使用 PyWifi,首先我們需要?jiǎng)?chuàng)建一個(gè)PyWifi 對(duì)象:
#-*-coding:utf-8-*-
import pywifi,time
from pywifi import const
def scan_wifi():
wifi = pywifi.PyWiFi()
iface = wifi.interfaces()[0] #acquire the first Wlan card,maybe not
iface.scan() # 掃描wifi
time.sleep(1) # 休息一下
basewifi = iface.scan_results()
for i in basewifi:
print("wifi scan result:{}".format(i.ssid))
print("wifi device MAC address:{}".format(i.bssid))
# 嘗試連接wifi
profile = pywifi.Profile() #配置文件
profile.ssid = i.ssid #wifi名稱
profile.auth = const.AUTH_ALG_OPEN #需要密碼
profile.akm.append(const.AKM_TYPE_WPA2PSK) #加密類型
profile.cipher = const.CIPHER_TYPE_CCMP #加密單元
profile.key = gen_key() #wifi密碼
iface.remove_all_network_profiles() #刪除其它配置文件
tmp_profile = iface.add_network_profile(profile) #加載配置文件
iface.connect(tmp_profile)
time.sleep(5)
if iface.status() == const.IFACE_CONNECTED:
print("connect successfully!")
else:
print("connect failed!")
time.sleep(1)
return basewifi
def gen_key():
# 生成wifi破解密碼,通用做法是讀取密碼字典庫(kù)
pass
if __name__ == '__main__':
scan_wifi()
因此,小伙伴們要當(dāng)心哦,wifi密碼設(shè)置要復(fù)雜!否則被人偷用網(wǎng)絡(luò)都不知道哦! 當(dāng)然咯,這個(gè)暴力破解的方法耗時(shí)也不穩(wěn)定,而且也不一定正確,本文只是從技術(shù)角度來(lái)闡述如何使用Python來(lái)玩WIFI, 并不建議大家做任何破壞性的操作和任何不當(dāng)?shù)男袨椤?/p>
4.總結(jié)
為了能夠快速查看 Wi-Fi 密碼,我們介紹了兩種方法:一種是通過(guò) Windows 的 Wi-Fi 屬性查看密碼,另一種是使用Python 中的 subprocess 模塊來(lái)執(zhí)行命令行獲取密碼;
另外呢,有個(gè)名為 PyWifi 的第三方庫(kù),它可以用于操作 Wi-Fi,并提供了簡(jiǎn)單的 API 來(lái)獲取 Wi-Fi 信息。比較適合我們獲取到該網(wǎng)絡(luò)的信息,以及使用 pywifi 模塊實(shí)現(xiàn)一些更高級(jí)的功能,例如檢測(cè) Wi-Fi 網(wǎng)絡(luò)的質(zhì)量、分析數(shù)據(jù)流量等等。
到此這篇關(guān)于詳解Python如何實(shí)現(xiàn)查看WiFi密碼的文章就介紹到這了,更多相關(guān)Python查看WiFi密碼內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python網(wǎng)絡(luò)請(qǐng)求庫(kù)requests的10個(gè)基本用法
今天我們要聊聊Python中非常實(shí)用的一個(gè)庫(kù)——requests,這個(gè)庫(kù)讓發(fā)送HTTP請(qǐng)求變得超級(jí)簡(jiǎn)單,無(wú)論你是想抓取網(wǎng)頁(yè)數(shù)據(jù)還是測(cè)試API接口,requests都能派上大用場(chǎng),下面我們就一起來(lái)看看如何使用requests完成一些常見(jiàn)的任務(wù),需要的朋友可以參考下2024-10-10
Python實(shí)現(xiàn)對(duì)PPT文件進(jìn)行截圖操作的方法
這篇文章主要介紹了Python實(shí)現(xiàn)對(duì)PPT文件進(jìn)行截圖操作的方法,涉及Python操作幻燈片的相關(guān)技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2015-04-04
使用Python和OpenCV庫(kù)實(shí)現(xiàn)實(shí)時(shí)顏色識(shí)別系統(tǒng)
這篇文章主要介紹了使用Python和OpenCV庫(kù)實(shí)現(xiàn)的實(shí)時(shí)顏色識(shí)別系統(tǒng),這個(gè)系統(tǒng)能夠通過(guò)攝像頭捕捉視頻流,并在視頻中指定區(qū)域內(nèi)識(shí)別主要顏色(紅、黃、綠、藍(lán)),這種技術(shù)在機(jī)器人視覺(jué)、自動(dòng)化檢測(cè)和交互式應(yīng)用中有著廣泛的應(yīng)用前景,需要的朋友可以參考下2025-06-06
python實(shí)現(xiàn)高精度求自然常數(shù)e過(guò)程詳解
這篇文章主要為大家介紹了python實(shí)現(xiàn)高精度求自然常數(shù)e過(guò)程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05
Python?matplotlib.pyplot.subplots()用法詳解
這篇文章主要介紹了Python?matplotlib.pyplot.subplots()用法的相關(guān)資料,matplotlib.pyplot.subplots()用于創(chuàng)建子圖,可設(shè)置行數(shù)、列數(shù)、軸共享、額外關(guān)鍵字參數(shù)和布局選項(xiàng),需要的朋友可以參考下2024-12-12
Python中在腳本中引用其他文件函數(shù)的實(shí)現(xiàn)方法
下面小編就為大家?guī)?lái)一篇Python中在腳本中引用其他文件函數(shù)的實(shí)現(xiàn)方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-06-06
Python實(shí)現(xiàn)隨機(jī)生成有效手機(jī)號(hào)碼及身份證功能示例
這篇文章主要介紹了Python實(shí)現(xiàn)隨機(jī)生成有效手機(jī)號(hào)碼及身份證功能,結(jié)合完整實(shí)例形式分析了Python基于手機(jī)號(hào)與身份證算法實(shí)現(xiàn)隨機(jī)手機(jī)號(hào)及身份證的生成功能,涉及Python日期、隨機(jī)數(shù)、文件讀取等相關(guān)操作技巧,需要的朋友可以參考下2017-06-06

