📜  Python – 获取系统已连接的所有 Wifi 设备(1)

📅  最后修改于: 2023-12-03 15:34:09.255000             🧑  作者: Mango

Python - 获取系统已连接的所有 WiFi 设备

在 Python 中,我们可以使用 subprocess 模块和命令行工具 netsh 来获取系统当前连接的所有 WiFi 设备。以下是一个简单的 Python 程序示例,可以用来获取所有连接的 WiFi 设备名称。

import subprocess

result = subprocess.check_output(['netsh', 'wlan', 'show', 'profiles'])
result = result.decode('utf-8')
result = result.split('\n')

profiles = [i.split(":")[1][1:-1] for i in result if "All User Profile" in i]

for i in profiles:
    try:
        results = subprocess.check_output(['netsh', 'wlan', 'show', 'profile', i, 'key=clear'])
        results = results.decode('utf-8')
        results = results.split('\n')
        results = [b.split(":")[1][1:-1] for b in results if "Key Content" in b]
        try:
            print("{:<30}|  {:<}".format(i, results[0]))
        except IndexError:
            print("{:<30}|  {:<}".format(i, ""))
    except subprocess.CalledProcessError:
        print("{:<30}|  {:<}".format(i, "ENCODING ERROR"))
代码解释
  1. 引入 subprocess 模块。这个模块允许 Python 脚本与操作系统上的命令行工具进行交互。
  2. 使用 check_output 函数执行命令行 netsh wlan show profiles,用于获取系统中的所有 WiFi 设备的配置文件。
  3. 将结果转换为 utf-8 编码,然后将其拆分成字符串列表。
  4. 使用列表推导式遍历结果列表,从每个配置文件中提取 WiFi 设备的名称。
  5. 对于每个 WiFi 设备,再次使用 check_output 执行命令行 netsh wlan show profile <wifi_ssid> key=clear,以获取包含设备密码的详细配置。
  6. 如果成功获取到了设备密码,将其从结果中提取出来,并将 WiFi 设备的名称和密码格式化为输出字符串。
  7. 如果在获取详细配置时出现错误,则打印出 WiFi 设备的名称和错误信息。
输出格式

使用以上代码,将输出一个类似下列的表格:

WiFi Device Name               Password
------------------------------|------------------
WiFi1                          |  password1
WiFi2                          |  password2
WiFi3                          |  
WiFi4                          |  password4
ENCODING ERROR                 |  
总结

使用 subprocess 模块和命令行工具 netsh,我们可以轻松地在 Python 中获取系统中所有连接的 WiFi 设备和密码。在实际应用中,我们可以使用这些信息来自动连接到 WiFi 设备,或将其用于网络安全测试和分析等用途。