1. 为什么需要Wi-Fi密码二维码生成工具每次家里来客人问Wi-Fi密码你是不是也经历过这样的尴尬场景翻箱倒柜找当初记密码的小纸条或者打开手机相册翻拍路由器底部的贴纸最后还要一个字一个字地确认是大写的W还是小写的w数字1还是字母l更麻烦的是有些客人手机输入法不兼容输了几次都提示密码错误。我在帮朋友调试智能家居设备时就遇到过连续输入5次密码都失败的窘境。后来发现是因为密码中包含特殊符号而他的手机默认开启了中文输入法。这种场景下二维码分享就成了最优解——扫一下就能自动连接完全规避了人工输入可能带来的各种问题。从安全角度考虑直接口头告知或短信发送明文密码也存在隐患。密码可能在传输过程中被第三方截获或者被不怀好意的人记下来。而二维码可以设置有效期甚至加密内容用完即失效。实测下来用Python脚本生成的Wi-Fi二维码连接成功率接近100%比手动输入靠谱得多。2. 环境准备与依赖安装2.1 Python环境配置首先确保你的Windows系统已经安装Python 3.6或更高版本。我推荐使用Python 3.8因为这个版本对后面要用到的pywifi库兼容性最好。可以在命令行输入python --version检查版本号。如果还没安装去Python官网下载安装包时记得勾选Add Python to PATH选项。2.2 必备库安装我们需要三个关键库qrcode生成二维码图片pywifi获取Wi-Fi配置信息pyperclip将密码复制到剪贴板安装命令如下pip install qrcode pywifi pyperclip这里有个坑要注意pywifi在Windows上可能需要额外依赖。如果安装后运行报错可以尝试先安装pip install comtypes。我在三台不同电脑上测试时有一台就遇到了这个情况。3. 完整脚本代码解析3.1 获取Wi-Fi密码的核心逻辑先来看获取当前连接Wi-Fi密码的关键代码import pywifi wifi pywifi.PyWiFi() iface wifi.interfaces()[0] # 获取第一个无线网卡接口 profile iface.current_network() # 当前连接配置 password profile.key # 提取密码这段代码的原理是通过Windows的WLAN API获取当前活跃的网络配置信息。这里有个技术细节Windows其实把所有连接过的Wi-Fi密码都保存在系统里只是普通用户看不到。我们的脚本相当于用编程方式读取了这些信息。3.2 二维码生成与展示得到密码后生成二维码就很简单了import qrcode qr qrcode.QRCode( version1, error_correctionqrcode.constants.ERROR_CORRECT_L, box_size10, border4, ) qr.add_data(fWIFI:T:WPA;S:{ssid};P:{password};;) # 标准Wi-Fi二维码格式 qr.make(fitTrue) img qr.make_image(fill_colorblack, back_colorwhite) img.show() # 弹出图片查看窗口这里我特别设置了error_correction参数为L级别即使二维码部分损坏也能被识别。实际测试中即使用手机拍屏幕上的二维码识别率也很高。3.3 完整脚本整合把各个模块组合起来最终完整脚本如下import qrcode import pywifi import pyperclip from pywifi import const def get_current_wifi_password(): wifi pywifi.PyWiFi() iface wifi.interfaces()[0] if iface.status() const.IFACE_CONNECTED: profile iface.current_network() return profile.ssid, profile.key else: raise Exception(当前没有连接的Wi-Fi网络) def generate_qr_code(ssid, password): # 标准Wi-Fi二维码格式 wifi_config fWIFI:T:WPA;S:{ssid};P:{password};; qr qrcode.QRCode( version1, error_correctionqrcode.constants.ERROR_CORRECT_L, box_size10, border4, ) qr.add_data(wifi_config) qr.make(fitTrue) img qr.make_image(fill_colorblack, back_colorwhite) img.show() return img if __name__ __main__: try: ssid, password get_current_wifi_password() pyperclip.copy(password) print(fWi-Fi名称: {ssid}) print(密码已复制到剪贴板) generate_qr_code(ssid, password) print(二维码已生成扫描即可连接) except Exception as e: print(f出错: {str(e)})4. 安全增强与实用技巧4.1 密码安全处理方案虽然脚本很方便但直接显示明文密码存在风险。我建议增加以下安全措施自动隐藏密码在控制台显示时用星号替代print(f密码: {* * len(password)})设置二维码有效期可以结合图像处理库生成带时间戳的二维码24小时后自动失效。访问控制在脚本开头添加密码验证只有知道解锁密码的人才能运行脚本。4.2 企业级应用改造如果是办公室环境使用可以考虑这些增强功能日志记录记录每次密码查询的时间和请求者邮件通知当密码被提取时自动发邮件给管理员多Wi-Fi支持列出所有保存过的Wi-Fi网络供选择一个进阶版的代码片段示例def list_saved_networks(): wifi pywifi.PyWiFi() iface wifi.interfaces()[0] profiles iface.network_profiles() print(已保存的Wi-Fi网络:) for i, profile in enumerate(profiles, 1): print(f{i}. {profile.ssid}) selection int(input(请选择要查询的网络编号: )) - 1 return profiles[selection].ssid, profiles[selection].key4.3 常见问题排查在实际使用中可能会遇到这些问题pywifi报错确保以管理员身份运行命令行因为读取网络配置需要权限。二维码无法识别检查生成的二维码是否符合Wi-Fi联盟的标准格式。正确的格式应该以WIFI:T:WPA;开头。中文SSID问题如果Wi-Fi名称包含中文建议先转换为UTF-8编码ssid ssid.encode(utf-8).decode(latin-1)我在实际部署中发现有些旧款手机对中文SSID的二维码兼容性不好转码后问题就解决了。