原理#
cmd 查詢本地 wifi 配置#
在 cmd 執行命令netsh wlan show profiles
:
能顯示出此電腦上所有的 Wlan 配置檔案,我們要查看其中一個的密碼,指定 name=wlan 名 (也就是 SSID) key=clear 即可,
netsh wlan show profiles name=連了是SB key=clear
Python 的 os.popen () 函數用 cmd 執行傳入參數#
Python 中有一個 os 檔案 / 目錄庫,其中有一個函數叫做 os,其中一條指令為 os.popen,能夠用於從一個命令打開一個管道
os.popen 介紹:python os.popen 方法 | 菜鳥教程
也就是這條命令能夠用 cmd 執行傳入的字串,比如os.popen('dir').read()
這就是用到的所有基本知識
代碼講解#
-
首先肯定要導入庫
import os
-
然後我們用 os.popen () 函數先查詢總的 wifi 配置:
cmd_get_allpfs = ('netsh wlan show profiles')
with os.popen(cmd_get_allpfs) as f:
SSID_list = []
for line in f:
if'所有用戶配置檔案 :' in line:
line = line.strip().split(":")[1]
SSID_list.append(line)
- 如果返回的內容行中含有 ' 所有用戶配置檔案 :' 這個字樣,就把這一行用:分割,將後面的部分,也就是 wifi 名,存儲到 wifi 名列表 SSID_list 中,然後我們再挨條執行密碼查詢語句並打印出來:
for SSID in SSID_list:
cmd_get_evepf = ('netsh wlan show profiles name={} key=clear'.format(SSID))
with os.popen(cmd_get_evepf) as r:
evepf = r.read()
print(evepf)
- 將列表中的 SSID 挨條格式化傳入查詢語句,然後打印出查詢內容,效果如下:
當然,如果你只想簡單地獲取 SSID 和密碼,比如
SSID_name1:passwod1
SSID_name2:passwod2
這樣的,簡單改一下就好了,以下為獲取SSID:password
的全部代碼:
#!/usr/bin/python
# -*- coding: utf-8 -*-
'''
@author: soapffz
@fucntion: 打印出電腦上所有的wifi帳號:密碼
@time:2018-12-15
'''
import os
cmd_get_allpfs = ('netsh wlan show profiles')
with os.popen(cmd_get_allpfs) as f:
SSID_list = []
for line in f:
if'所有用戶配置檔案 :' in line:
line = line.strip().split(":")[1]
SSID_list.append(line)
PASS_list = []
for SSID in SSID_list:
cmd_get_evepf = ('netsh wlan show profiles name={} key=clear'.format(SSID))
with os.popen(cmd_get_evepf) as r:
for line in r:
if'關鍵內容'in line:
line = line.strip().split(":")[1]
PASS_list.append(line)
for i in range(len(SSID_list)):
print("{}:{}".format(SSID_list[i], PASS_list[i]))
- 效果如下: