在今天的博客中,我们将学习如何使用Python编写一个简单的脚本,用于获取连接过的WiFi网络的密码。这个脚本适用于Windows操作系统,并使用了一些Python的标准库和命令行工具。即使你是零基础的人,也能轻松理解,我将一步步解释代码的每个部分。
这个脚本有两个主要功能:
让我们逐步解析这段代码:
import subprocess
import re
首先,我们导入了两个Python标准库,subprocess
用于运行外部命令,re
用于处理正则表达式。
def get_wifi_profiles():
try:
# 获取所有连接过的WiFi配置文件
result = subprocess.check_output(['netsh', 'wlan', 'show', 'profiles'], shell=True, text=True)
print(result)
# 使用正则表达式提取WiFi配置文件名称
profile_names = re.findall(r'所有用户配置文件 \: (.*)', result)
return profile_names
except subprocess.CalledProcessError:
print("获取WiFi配置文件失败")
return []
这是一个函数 get_wifi_profiles
,它封装了获取WiFi配置文件名称的过程。首先,它使用 subprocess.check_output
运行了一个命令来显示所有连接过的WiFi配置文件。
原理是在cmd终端输入netsh wlan show profiles
可以获取到连接过的所有WiFi的名称
接口 WLAN 上的配置文件:
组策略配置文件(只读)
---------------------------------
<无>
用户配置文件
-------------
所有用户配置文件 : D0ublecl1ck
所有用户配置文件 : D0blecl1ck
所有用户配置文件 : HZNU
当前用户配置文件 : 513
学习自这篇文章【学习笔记】利用cmd命令查看所有连接过的WiFi及其密码(超简洁,快速上手)
然后根据返回的数据格式特点,使用正则表达式 re.findall
从输出中提取WiFi配置文件的名称。
re.findall(r'所有用户配置文件 \: (.*)', result)
def get_wifi_password(wifi_name):
try:
# 获取WiFi配置文件中的密码
result = subprocess.check_output(['netsh', 'wlan', 'show', 'profile', f'name="{wifi_name}"', 'key=clear'], shell=True, text=True)
# 在输出中查找密码
password_index = result.find("关键内容") + len("关键内容") + 2
password = result[password_index:].split('\n', 1)[0].strip()
return password
except subprocess.CalledProcessError:
print(f"获取WiFi密码失败: {wifi_name}")
return None
这是第二个函数 get_wifi_password
,它用于获取特定WiFi配置文件的密码。它同样使用了 subprocess.check_output
运行了一个命令,通过参数 name="{wifi_name}"
指定了WiFi的名称,并使用 key=clear
显示密码。等同于cmd
输入 netsh wlan show profiles name="Wifi名" key=clear
,然后,通过字符串处理,找到密码的位置并提取出来。
# 获取所有连接过的WiFi配置文件
wifi_profiles = get_wifi_profiles()
# 遍历每个WiFi配置文件并获取密码
for wifi_name in wifi_profiles:
wifi_password = get_wifi_password(wifi_name)
if wifi_password:
if ': ' in wifi_password:
print(f"WiFi网络'{wifi_name}'的密码是{wifi_password}")
else:
print(f"WiFi网络'{wifi_name}'无密码")
最后,主程序部分。首先,调用 get_wifi_profiles
获取所有WiFi配置文件的名称,然后通过循环遍历每个WiFi配置文件,并调用 get_wifi_password
获取密码。最后,根据密码的格式输出相应的信息。
WiFi网络'D0ublecl1ck'的密码是: 88888888
WiFi网络'D0blecl1ck'的密码是: 88888888
WiFi网络'HZNU'无密码
进程已结束,退出代码为 0
通过这个简单的例子,我们学会了如何使用Python获取连接过的WiFi网络的密码。这对于有时候我们忘记了家里或办公室WiFi密码的情况非常有用。希望这个博客对你理解这段代码并学习Python有所帮助。如果有任何问题,可以私信或者评论区留言。