当前位置: 首页 > news >正文

分享一个用python写的本地WIFI密码查看器

本章教程,主要分享一个本地wifi密码查看器,用python实现的,感兴趣的可以试一试。

在这里插入图片描述

具体代码

import subprocess  # 导入 subprocess 模块,用于执行系统命令
import tkinter as tk  # 导入 tkinter 模块,用于创建图形用户界面
from tkinter import messagebox, ttk  # 从 tkinter 模块中导入 messagebox 和 ttk 子模块def get_wifi_passwords():"""获取本地计算机上所有已连接过的 WiFi 配置文件及其密码。"""try:# 执行命令获取所有 WiFi 配置文件的列表profiles_data = subprocess.check_output(['netsh', 'wlan', 'show', 'profiles']).decode('utf-8', errors='ignore')# 解析输出,提取配置文件名称profiles = [line.split(':')[1].strip() for line in profiles_data.split('\n') if "All User Profile" in line]wifi_passwords = []  # 存储 WiFi 名称和密码的列表# 遍历每个配置文件,获取密码for profile in profiles:profile_info = subprocess.check_output(['netsh', 'wlan', 'show', 'profile', profile, 'key=clear']).decode('utf-8', errors='ignore')password_lines = [line.split(':')[1].strip() for line in profile_info.split('\n') if "Key Content" in line]password = password_lines[0] if password_lines else "N/A"  # 如果没有密码,则显示 "N/A"wifi_passwords.append((profile, password))return wifi_passwordsexcept Exception as e:# 如果发生错误,显示错误信息messagebox.showerror("错误", f"发生错误: {str(e)}")return []def copy_password(event):"""复制选中的 WiFi 密码到剪贴板。"""selected_item = tree.selection()[0]password = tree.item(selected_item, 'values')[1]root.clipboard_clear()root.clipboard_append(password)messagebox.showinfo("信息", "密码已复制到剪贴板")def center_window(window, width, height):"""将窗口显示在屏幕中央。"""screen_width = window.winfo_screenwidth()screen_height = window.winfo_screenheight()x = (screen_width - width) // 2y = (screen_height - height) // 2window.geometry(f'{width}x{height}+{x}+{y}')# 创建主窗口
root = tk.Tk()
root.title("WiFi 密码查看器")  # 设置窗口标题
window_width = 400
window_height = 300
root.geometry(f'{window_width}x{window_height}')  # 设置窗口大小
center_window(root, window_width, window_height)  # 窗口居中显示# 创建表格
tree = ttk.Treeview(root, columns=('SSID', '密码'), show='headings')
tree.heading('SSID', text='WiFi名称', anchor='center')
tree.heading('密码', text='WiFi密码', anchor='center')
tree.column('SSID', anchor='center')
tree.column('密码', anchor='center')
tree.pack(fill=tk.BOTH, expand=True)# 设置表格样式
style = ttk.Style()
style.configure('Treeview', rowheight=25)
style.configure('Treeview.Heading', font=('Arial', 12, 'bold'))# 获取 WiFi 密码并显示在表格中
wifi_passwords = get_wifi_passwords()
for wifi, password in wifi_passwords:tree.insert('', tk.END, values=(wifi, password))# 绑定双击事件,双击表格中的一行即可复制密码
tree.bind('<Double-1>', copy_password)# 启动主事件循环
root.mainloop()

点击wifi名称行,可以快速复制wifi密码到粘贴板上。

相关文章:

  • 【risc-v】arm和riscv有什么关系或者联系?
  • Elasticsearch 管道查询语言 ES|QL 现已正式发布
  • 归一化在神经网络训练中的作用
  • 如何在React中创建自定义Hooks
  • python数据分析-ZET财务数据分析
  • Java数据结构与算法(盛水的容器)
  • 搜索与图论:八皇后问题
  • 【MySQL】服务器配置和管理
  • 28 - 只出现一次的最大数字(高频 SQL 50 题基础版)
  • Functional ALV系列 (10) - 将填充FieldCatalog封装成函数
  • 端午节赛龙舟,我们的新队员---AI大模型
  • 百度高级项目经理洪刘生受邀为第十三届中国PMO大会演讲嘉宾
  • Gitte的使用(Windows/Linux)
  • B树、B+树与索引、联合索引
  • 深入探索:十种流行的深度神经网络及其运作原理
  • Android 架构优化~MVP 架构改造
  • Java方法详解
  • Magento 1.x 中文订单打印乱码
  • mockjs让前端开发独立于后端
  • Python 基础起步 (十) 什么叫函数?
  • 复习Javascript专题(四):js中的深浅拷贝
  • 我建了一个叫Hello World的项目
  • 我这样减少了26.5M Java内存!
  • 看到一个关于网页设计的文章分享过来!大家看看!
  • 继 XDL 之后,阿里妈妈开源大规模分布式图表征学习框架 Euler ...
  • 完善智慧办公建设,小熊U租获京东数千万元A+轮融资 ...
  • #Ubuntu(修改root信息)
  • #微信小程序:微信小程序常见的配置传值
  • (2009.11版)《网络管理员考试 考前冲刺预测卷及考点解析》复习重点
  • (C#)获取字符编码的类
  • (TOJ2804)Even? Odd?
  • (二)fiber的基本认识
  • (二十三)Flask之高频面试点
  • (四)Linux Shell编程——输入输出重定向
  • (转)Scala的“=”符号简介
  • (转)visual stdio 书签功能介绍
  • (转)从零实现3D图像引擎:(8)参数化直线与3D平面函数库
  • (转)关于pipe()的详细解析
  • .NET 4.0中的泛型协变和反变
  • .NET CORE 3.1 集成JWT鉴权和授权2
  • .NET Micro Framework初体验
  • .net php 通信,flash与asp/php/asp.net通信的方法
  • .NET Project Open Day(2011.11.13)
  • .Net Redis的秒杀Dome和异步执行
  • .Net 垃圾回收机制原理(二)
  • .Net(C#)常用转换byte转uint32、byte转float等
  • .Net6使用WebSocket与前端进行通信
  • .net解析传过来的xml_DOM4J解析XML文件
  • .NET开源项目介绍及资源推荐:数据持久层
  • .NET连接MongoDB数据库实例教程
  • .NET委托:一个关于C#的睡前故事
  • .NET下ASPX编程的几个小问题
  • .vollhavhelp-V-XXXXXXXX勒索病毒的最新威胁:如何恢复您的数据?
  • [ vulhub漏洞复现篇 ] Grafana任意文件读取漏洞CVE-2021-43798
  • [.NET 即时通信SignalR] 认识SignalR (一)