python3GUI--Wifi密码查看工具(附源码)


使用Tkinter写一款Wifi密码查看小工具,支持Wifi密码的查看以及Wifi信息的导出,简单又实用。

一.准备工作

python Tkinter

二.预览

1.查看

请添加图片描述
启动后会读取本机存储的Wifi信息,通过点击对应的Wifi名,即可查看所选wifi的密码。

2.导出

请添加图片描述

三.源代码

1.WIfi_Password_View-Gui.py

from tkinter import *
from tkinter import ttk
from tkinter import messagebox
from tkinter.filedialog import *
from tkinter.scrolledtext import ScrolledText
from Wifi_View_Engine import View_Engine

class App:
    def __init__(self):
        self.root=Tk()
        self.root.title('Wifi密码查看')
        self.root.resizable(0,0)
        width=380
        height=380
        left=(self.root.winfo_screenwidth()-width)/2
        top=(self.root.winfo_screenheight()-height)/2
        self.root.geometry('%dx%d+%d+%d'%(width,height,left,top))
        self.e=View_Engine()
        self.create_widgets()
        self.set_widgets()
        self.place_widgets()
        self.show_local_wifi_infos()
        self.root.mainloop()

    def create_widgets(self):
        self.label1=ttk.Label(self.root,text='本机存储的Wifi:')
        self.listbox1=Listbox(self.root,justify='center',width=20,height=15)
        self.label2 = ttk.Label(self.root, text='详细信息:')
        self.scrolltext = ScrolledText(self.root,width=25, height=21)

        self.btn_export=ttk.Button(self.root,text='导出',command=self.export_wifi_infos)
        self.btn_quit=ttk.Button(self.root,text='退出')
    def set_widgets(self):
        self.listbox1.bind("<<ListboxSelect>>",self.show_wifi_detail)
        self.root.protocol("WM_DELETE_WINDOW",self.quit_window)
        self.btn_quit.config(command=self.quit_window)

    def place_widgets(self):
        self.label1.place(x=10,y=5)
        self.listbox1.place(x=10,y=25,)
        self.btn_export.place(x=30,y=310)

        self.label2.place(x=170,y=5)
        self.scrolltext.place(x=170,y=25,)
        self.btn_quit.place(x=195,y=310)

    def show_local_wifi_infos(self):
        self.all_wifi=self.e.get_wifi_infos()
        for index,wifi in enumerate(self.all_wifi):
            self.listbox1.insert(index,wifi)

    def show_wifi_detail(self,*args):
        try:
            current_wifi_name=self.listbox1.get(self.listbox1.curselection())
            wifi_password=self.e.get_wifi_pwd(current_wifi_name)
            if len(wifi_password)!=0:
                wifi_password=wifi_password[0]
            else:
                wifi_password="无密码"
            self.scrolltext.delete(0.0,END)
            self.current_wifi_infos=f"Wifi名称:{
      
      current_wifi_name}\nWifi密码:{
      
      wifi_password}"
            self.scrolltext.insert(END,self.current_wifi_infos)
        except TclError:
            pass

    def export_wifi_infos(self):
        try:
            list_current=self.listbox1.curselection()
            if len(list_current)!=0:
                file=asksaveasfilename(initialdir='./',title='请选择',filetypes =[("文本文件",'*.txt')])
                if file:
                    with open(file+'.txt' ,mode='a',encoding='utf-8')as f:
                        f.write(self.current_wifi_infos)
            else:
                messagebox.showwarning('警告', '请先选择一个Wifi!')
        except TclError:
            messagebox.showwarning('警告', '请先选择一个Wifi!')

    def quit_window(self,*args):
        ret=messagebox.askyesno('退出','是否要退出?')
        if ret :
            self.root.destroy()

if __name__ == '__main__':
    a=App()

2.Wifi_View_Engine.py

# !/usr/bin/env Python
# coding=utf-8
import re
import os
import socket
import time
import subprocess
import win32com.client

class View_Engine(object):
    def do_cmd(self,cmd):
        """
        执行一个cmd命令
        :param cmd:
        :return:
        """
        res_code=os.system(cmd)
        return res_code

    def get_popen_result(self,cmd):
        """
        执行一串cmd命令获取执行结果
        :param cmd:
        :return:
        """
        find_str = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE)
        execute_result = find_str.stdout.read().decode('gbk',errors='ignore')
        return execute_result

    def get_wifi_infos(self):
        cmd='netsh wlan show profiles'
        wifi_infos=self.get_popen_result(cmd)
        wifi=re.findall('所有用户配置文件 : (.*?)\r\n',wifi_infos)
        return wifi

    def get_wifi_pwd(self,wifi_name):
        cmd=f'netsh wlan show profile name="{
      
      wifi_name}" key=clear'
        wifi_detail=self.get_popen_result(cmd)
        wifi_password=re.findall('关键内容            : (.*?)\r\n',wifi_detail)
        return wifi_password

四.总结

本次使用Tkinter制作了一款Wifi密码查看工具,能够查看本机存储的Wifi信息,支持Wifi信息的导出,方便又小巧,程序我打包好放在了蓝奏云大家自取哈~思路、代码方面有什么不足欢迎各位大佬指正、批评!
请添加图片描述

猜你喜欢

转载自blog.csdn.net/a1397852386/article/details/119989996