詳解Python如何實(shí)現(xiàn)查看WiFi密碼
由于最近公司加強(qiáng)對(duì)無線安全的管理,wifi密碼從以前的12345678,變成復(fù)雜難記的一串,導(dǎo)致我時(shí)常忘記WIFI密碼,而遭受同事的“毒打”。由于我不是那種喜歡打擾同事認(rèn)真工作的人,于是,我決定用python來試試,看看能不能讀取到已連接過WIFI的密碼,這樣就不用老是叨擾別人了!
1. windows查看WIFI密碼的方法
經(jīng)過我的一番思考和查閱資料(搜索引擎),原理大致是這樣。 通過windows的wifi屬性查看密碼。這種方式,操作起來相當(dāng)麻煩,一般人根本找不到。即使第一次找到了,找第二次也要折磨死人。
另外,我們可以使用命令行來實(shí)現(xiàn)上述操作:
netsh wlan show profiles
列出已連接wifi的列表 然后再使用命令 ``netsh wlan show profiles WiFi名稱 key=clear:
netsh wlan show profiles ZXQ key=clear
查看安全設(shè)置獲得密碼:
上面的方式,仍然比較麻煩,對(duì)于我這種懶人來說,實(shí)在是有點(diǎn)聒噪!我就想快速的查看密碼,不要輸入!
想到python也可以執(zhí)行cmd命令,那么第二種命令行的方式,不就可以用python來實(shí)現(xiàn)了嗎?!
2. 使用subprocess模塊
subprocess
是Python
標(biāo)準(zhǔn)庫中的一個(gè)模塊,用于在Python
程序中執(zhí)行外部命令或子進(jìn)程。它可以通過創(chuàng)建子進(jìn)程并與其進(jìn)行通信,來調(diào)用系統(tǒng)命令或其他可執(zhí)行文件。
subprocess
模塊提供了多個(gè)函數(shù)來調(diào)用子進(jìn)程,如subprocess.run()
、subprocess.Popen()
等。這些函數(shù)可以執(zhí)行命令并返回執(zhí)行結(jié)果,也可以通過傳遞參數(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
命令來獲取已連接WiFi網(wǎng)絡(luò)的信息。獲取到的信息中包含WiFi網(wǎng)絡(luò)的名稱和密碼。
送給公司行政的小姐姐用,下次她見到我,不得叫一聲大哥?
3. pywifi模塊暴力破解
PyWifi
是一個(gè)用于操作WiFi的第三方庫,提供了方便的API以獲取WiFi信息。其本身并不支持獲取已連接過的wifi的密碼。該庫主要用于連接、斷開以及掃描wifi網(wǎng)絡(luò)。
首先,我們需要使用pip命令來安裝pywifi
庫:
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破解密碼,通用做法是讀取密碼字典庫 pass if __name__ == '__main__': scan_wifi()
因此,小伙伴們要當(dāng)心哦,wifi密碼設(shè)置要復(fù)雜!否則被人偷用網(wǎng)絡(luò)都不知道哦! 當(dāng)然咯,這個(gè)暴力破解的方法耗時(shí)也不穩(wěn)定,而且也不一定正確,本文只是從技術(shù)角度來闡述如何使用Python來玩WIFI, 并不建議大家做任何破壞性的操作和任何不當(dāng)?shù)男袨椤?/p>
4.總結(jié)
為了能夠快速查看 Wi-Fi 密碼,我們介紹了兩種方法:一種是通過 Windows 的 Wi-Fi 屬性查看密碼,另一種是使用Python 中的 subprocess 模塊來執(zhí)行命令行獲取密碼;
另外呢,有個(gè)名為 PyWifi 的第三方庫,它可以用于操作 Wi-Fi,并提供了簡(jiǎn)單的 API 來獲取 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)文章
解決pytorch?model代碼內(nèi)tensor?device不一致的問題
這篇文章主要介紹了pytorch?model代碼內(nèi)tensor?device不一致的問題,本文給大家分享完美解決方案,對(duì)pytorch?tensor?device不一致問題解決方案感興趣的朋友跟隨小編一起看看吧2023-07-07Python使用bcrypt?或?Passlib?對(duì)系統(tǒng)用戶密碼進(jìn)行哈希和驗(yàn)證處理操作
在Python?開發(fā)中,我們可以引入bcrypt?或?Passlib?對(duì)系統(tǒng)用戶密碼進(jìn)行哈希和驗(yàn)證處理,以及介紹使用其他類庫實(shí)現(xiàn)常規(guī)加解密處理操作,需要的朋友可以參考下2024-08-08膠水語言Python與C/C++的相互調(diào)用的實(shí)現(xiàn)
這篇文章主要介紹了膠水語言Python與C/C++的相互調(diào)用的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-05-05Python游戲開發(fā)之魔塔小游戲的實(shí)現(xiàn)
魔塔小游戲作為一款角色扮演RPG小游戲,一直深受大家的喜愛。本文將利用Python的cpgames模塊制作這一經(jīng)典小游戲,感興趣的可以跟隨小編一起動(dòng)手試一試2022-02-02Python3利用openpyxl讀寫Excel文件的方法實(shí)例
這篇文章主要給大家介紹了關(guān)于Python3利用openpyxl讀寫Excel文件的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-02-02python使用MySQLdb訪問mysql數(shù)據(jù)庫的方法
這篇文章主要介紹了python使用MySQLdb訪問mysql數(shù)據(jù)庫的方法,實(shí)例分析了Python使用MySQLdb模塊操作mysql數(shù)據(jù)庫的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-08-08