电脑连接wifi后,很难直观地看到当前连接wifi的密码,需要借助命令行公管局才可以查看到相关信息。
CMD命令
查看所有已保存的wifi配置信息
netsh wlan show profiles
查看某一个wifi
的详细信息,需要输入wifi
名称来查询
netsh wlan show profile name="XXXXXXXXX" key=clear
打开CMD命令行,执行上述命令,即可看到相关信息。
python脚本
CMD
命令可以通过python
来进行调用,需要一个模块,即subprocess
。
subprocess.check_output
函数是Python标准库subprocess
模块中的一个函数,用于执行系统命令并返回命令的输出结果。
使用方法如下:
subprocess.check_output(args, *, stdin=None, stderr=None,
shell=False, universal_newlines=False)
返回结果是字符串,也就是执行命令返回的信息。
python对命令执行结果进行处理,主要思路如下:
1、执行第一个命令netsh wlan show profiles
,获取到本地保存过的所有的wifi名称,存入一个list;
2、遍历list,去执行第二个命令,得到某一个wifi的详细信息,然后提取出来密码所在的行信息,保存处理即可。
执行结果如下:
代码如下:
import subprocess
# 执行netsh命令获取Wi-Fi密码
result = subprocess.check_output('netsh wlan show profiles', shell=True)
# print(result)
profiles = []
for line in result.split('\n'):
if "所有用户配置文件 :" in line:
profiles.append(line.split(':')[1].strip())
for profile in profiles:
try:
password_result = subprocess.check_output(f'netsh wlan show profile name="{profile}" key=clear',
shell=True)
# print(password_result)
for line in password_result.split('\n'):
if "关键内容" in line:
print('{:<40}{:>30}'.format('WIFI名称:'+profile,'WIFI密码:'+line.split(':')[1].strip()))
except:
print(f'无法获取{profile}的密码')
总结
主要用到了如下知识点:
- 命令获取wifi信息
- python调用CMD命令
- python
print()
输出格式化,左右对齐,print('{:<40}{:>30}'.format('aaaaaaaaaaaaa','bbbbbbbbbbb'))
split()
,分片函数,用于分割字符串strip()
,哟关于去除头尾特定字符,默认去除头尾空格
虽然本次实验仅获取了wifi信息,但是在其他命令执行方面,或许能有更多应用场景,甚至开发出相关的简易工具,有待朋友们进一步探索。