当前位置: 代码网 > it编程>前端脚本>Python > 使用Python提取本机连接过WiFi名称和密码

使用Python提取本机连接过WiFi名称和密码

2026年02月05日 Python 我要评论
在 windows 系统上用python 获取当前电脑之前接过的 wifi 名称及密码,并导出csv文件。实现原理windows 会把所有连接过的 wifi 配置保存在系统中,使用命令:netsh w

在 windows 系统上用python 获取当前电脑之前接过的 wifi 名称及密码,并导出csv文件。

实现原理

windows 会把所有连接过的 wifi 配置保存在系统中,使用命令:

  • netsh wlan show profiles → 获取所有 wifi 名称
  • netsh wlan show profile name="xxx" key=clear → 获取指定 wifi 的密码

python 只需要调用这些命令并解析即可。

python 代码如下

# -*- coding: utf-8 -*-
import subprocess
import re
import csv
import sys

def run_cmd(cmd):
    """执行系统命令并返回输出(永不返回 none)"""
    try:
        result = subprocess.run(
            cmd,
            shell=true,
            capture_output=true,
            text=true,
            encoding="gbk",
            errors="ignore"
        )
        return result.stdout or ""
    except exception as e:
        return ""

def get_wifi_list():
    """获取所有 wifi 配置名称(兼容中英文系统)"""
    output = run_cmd("netsh wlan show profiles")

    # 兼容中文:所有用户配置文件
    # 兼容英文:all user profile
    profiles = re.findall(
        r"(?:所有用户配置文件|all user profile)\s*:\s*(.*)",
        output
    )

    return [p.strip() for p in profiles]

def get_wifi_password(name):
    """获取指定 wifi 的密码(兼容中英文系统)"""
    if not name:
        return ""

    output = run_cmd(f'netsh wlan show profile name="{name}" key=clear')

    # 兼容中文:关键内容
    # 兼容英文:key content
    match = re.search(
        r"(?:关键内容|key content)\s*:\s*(.*)",
        output
    )

    return match.group(1).strip() if match else ""

def export_wifi_passwords(csv_file="wifi_passwords.csv"):
    """导出所有 wifi 名称与密码到 csv,并打印到 stdout(供 c# 调用)"""
    wifi_list = get_wifi_list()
    data = []

    for wifi in wifi_list:
        pwd = get_wifi_password(wifi)
        data.append([wifi, pwd])
        print(f"{wifi} : {pwd}")

    # 写入 csv 文件
    try:
        with open(csv_file, "w", newline="", encoding="utf-8-sig") as f:
            writer = csv.writer(f)
            writer.writerow(["wifi 名称", "密码"])
            # writer.writerows(data)
            for wifi, pwd in data:
                writer.writerow([wifi, "\t" + pwd]) # 把它当成纯文本,不会吞掉前导 0
                # writer.writerow([wifi, f"'{pwd}"])

    except exception as e:
        print(f"写入 csv 文件失败: {e}")

    sys.stdout.flush()  # 关键:确保 c# 能读取完整输出

if __name__ == "__main__":
    export_wifi_passwords()

运行效果

终端输出:

wxzhongshuge : 20130423
ritchie : ritchie12345678
kfc free wifi : 
chinanet-starbucks : 
rd_meeting_room : 57744789
1205 : w136444564
高铁wifi : 
cmcc-jjj2 : 12345678
h3c_e4c764 : 6575754635

已导出到文件:wifi_passwords.csv

注意事项

  • 代码仅适用于 windows
  • 需要以 管理员权限运行 python(否则可能读取不到密码)
  • 输出编码使用 gbk 以兼容中文系统
  • run_cmd 增加安全保护,设置参数errors=“ignore”
  • 避免导出csv 文件将密码前面0省略,使用writer.writerow([wifi, “\t” + pwd]) 或writer.writerow([wifi, f’=“{pwd}”'])

以上就是使用python提取本机连接过wifi名称和密码的详细内容,更多关于python提取连接过wifi名称密码的资料请关注代码网其它相关文章!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2026  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com