利用python和DOS獲取wifi密碼

2021-10-22 17:41:26 字數 4197 閱讀 2212

設定乙個場景,假如我忘記了自家的wifi密碼,這時候小夥伴來家裡跟我開黑,問我wifi密碼是多少?我就抓住了這個小秀一波的機會。

上才藝:

按下win+r鍵,輸入cmd開啟dos視窗,然後輸入以下命令檢視電腦裡配置過的wifi。

這是電腦連過的wifi,假設我家裡的wifi是cmcc-cmcc,接下來我需要檢視cmcc-cmcc的資訊,上**:

可以看到,安全金鑰這裡顯示的是存在,說明這個wifi是有密碼的,接下來,我們用在上面的**基礎上加上"key=clear",密碼就會顯示了。(不用擔心這個clear,不會刪除你的wifi密碼的,只是乙個顯示作用)

這個就是我的wifi密碼了!

首先匯入兩個庫subprocess、re

我們建立乙個通道來執行dos命令,列出所有的連線過的wifi,並且用profile_names來存下這些wifi名稱,輸出採用字典的形式,每個wifi名密碼為乙個字典中的鍵值對,並且先定義乙個列表用來存下這些字典。

command_output = subprocess.run(

['netsh'

,'wlan'

,'show'

,'profiles'

],capture_output=

true

).stdout.decode(encoding=

'gbk'

)profile_names = re.findall(

'所有使用者配置檔案 :(.*)\r'

,command_output)

#返回乙個列表

wifi_list=

list

()

將下乙個命令即「檢視wifi是否存在金鑰」寫進**

if

len(profile_names)!=0

:for name in profile_names:

wifi_profile =

dict()

profile_info = subprocess.run(

['netsh'

,'wlan'

,'show'

,'profiles'

,name]

,capture_output=

true

).stdout.decode(encoding=

'gbk'

)

如果安全金鑰的內容不是存在的話,說明wifi是沒有密碼的,我們就不用去瞎搞了,直接continue了。如果是存在的話,我們才進行下一步操作,就是進行下乙個命令:加上key=clear,檢視密碼。這裡解釋一下為什麼要用name[1:],可能是因為編碼的原因,通過正則得來的name前面包含了乙個空格,如果直接用這個name的話,電腦會告訴你沒有這個wifi。例如上文中,我的wifi是「cmcc-cmcc」,當是通過正則獲取的wifi名就是「 cmcc-cmcc」多了乙個空格。電腦會以為這兩個東西它不一樣。。。

if re.search(

'安全金鑰 : 不存在'

,profile_info)

:continue

else

: wifi_profile[

'ssid'

]= name[1:

] profile_info_pass = subprocess.run(

['netsh'

,'wlan'

,'show'

,'profiles'

,name[1:

],'key=clear'

],capture_output=

true

).stdout.decode(encoding=

'gbk'

) password = re.search(

'關鍵內容 :(.*)\r'

,profile_info_pass)

if password ==

none

: wifi_profile[

"password"]=

none

else

: wifi_profile[

"password"

]= password[

1]

最後,只要把列表(wifi_list)中的內容列印出來就行了,我把所有**跟在後面,方便大家理解。

import subprocess

import re

command_output = subprocess.run(

['netsh'

,'wlan'

,'show'

,'profiles'

],capture_output=

true

).stdout.decode(encoding=

'gbk'

)profile_names = re.findall(

'所有使用者配置檔案 :(.*)\r'

,command_output)

wifi_list=

list()

print

(type

(profile_names))if

len(profile_names)!=0

:for name in profile_names:

wifi_profile =

dict()

profile_info = subprocess.run(

['netsh'

,'wlan'

,'show'

,'profiles'

,name]

,capture_output=

true

).stdout.decode(encoding=

'gbk'

)if re.search(

'安全金鑰 : 不存在'

,profile_info)

:continue

else

: wifi_profile[

'ssid'

]= name[1:

] profile_info_pass = subprocess.run(

['netsh'

,'wlan'

,'show'

,'profiles'

,name[1:

],'key=clear'

],capture_output=

true

).stdout.decode(encoding=

'gbk'

) password = re.search(

'關鍵內容 :(.*)\r'

,profile_info_pass)

if password ==

none

: wifi_profile[

"password"]=

none

else

: wifi_profile[

"password"

]= password[1]

for x in

range

(len

(wifi_list)):

print

(wifi_list[x]

)

如果大家有什麼高見請批評指

如何利用python和DOS獲取wifi密碼

設定乙個場景,假如我忘記了自家的wifi密碼,這時候小夥伴來家裡跟我開黑,問我wifi密碼是多少?我就抓住了這個小秀一波的機會。上才藝 按下win r鍵,輸入cmd開啟dos視窗,然後輸入以下命令檢視電腦裡配置過的wifi。netsh wlan show profiles 這是電腦連過的wifi,假...

Dos下獲取日期和時間

date 和 time 2007 08 08 23 13 c echo date 2007 08 08 星期三 c echo date 0,4 2007 碟符 輸出 date 是乙個引數 但是他後面帶的這些就是取值範圍,說說後面的數值 第乙個0代表從頭開始 後面的4代表共取4個字元 c echo d...

學習筆記 利用DOS命令和E

學習筆記 利用dos命令和excel配合批量更改檔名 閑庭信步 用ps的資料驅 形得到的psd檔案名字雖然規律,但是不是想要的結果。現在希望能用資料組中的某個欄位來命名,ps是做不到了,但是我們可以用dos excel配合批量更改檔案的名字。主要用到兩個dos命令 rename命令 tree命令 e...