windows 系统U盘验证开机,python+tk

版权声明:禁止转载至其它平台,转载至博客需带上此文链接。 https://blog.csdn.net/qq_41841569/article/details/85464609

被好多大神批评,,

再次声明,,只用于电脑小白,或者自己玩玩,

下面有同学甚至提出了PE,,试问有什么验证能挡住PE,,

PE本来就是一个独立的系统呀(就好比我的电脑密码能锁住你的电脑吗?)

在论坛看见有人用.bat批处理来实现 U盘验证开机,,。。

马上就有灵感用Python来做一个同样的程序,

1.用Python 自带的库 base64 加密一段文字或字母,

  1. import base64
  2. keys = 'jiamisuanfa123的生成乱码' * 10
  3. s1 = base64.b64encode(keys.encode(encoding='utf-8'))

复制代码

2.将加密后的信息保存为一个111文件。

  1. fus = r'D:\111' # 生成钥匙文件地址(也就是U盘根目录下 的一个文件)
  2. with open(fus, 'wb') as f:
  3. f.write(s1)

复制代码

3.将文件保存在U盘个目录,,然后读取这个文件的信息。

4.如果读取不到文件,或者文件里面的信息与你加密信息不一致,

5.出发windows的自动关机命令。(os.system("shutdown -s -t 0"))

6.程序设定是验证失败10秒后自动关机,

-注意,我没有用shutdown -s -t 10命令是因为,计划关机会提示你10秒后自动关机。

-我用的是time.sleep来实现

没有环境的同学也可以用,我已经打包好了,(或者比较懒得同学)

https://www.lanzous.com/i2kfgwf(64位系统哦)

关机时间可以自己来设定,感觉10秒比较合适

下面附上全部源码

import base64
from tkinter import *
import time
import os
 
# os.system("shutdown -s -t  0")
# os.system("shutdown -a")  # 取消关机命令
fus = r'D:\111'  # 生成钥匙文件地址
fu = [r'D:\111', r'E:\111', r'F:\111', r'G:\111', r'H:\111', r'I:\111', r'J:\111']  # u盘的路径
keys = 'jiamisuanfa123的生成乱码' * 10
 
 
def shengchengkey():
    s1 = base64.b64encode(keys.encode(encoding='utf-8'))  # 加密
    # s2 = base64.b64decode(s1)  # 解密
    with open(fus, 'wb') as f:
        f.write(s1)
 
 
def hedui():
    for i in fu:
        if os.path.exists(i):  # 判断U盘文件是否存在,
            fu.append('yes')
            dd = open(i, 'rb').read()  # 打开加密文件
            if dd == base64.b64encode(keys.encode(encoding='utf-8')):  # 对比加密文件
                ff['text'] = '验证通过'  # 通过对比后,3秒退出程序
                ff.update()
                time.sleep(3)
                quit()
            else:
                print('验证失败')  # 对比失败后,10秒后关机
                ff['text'] = '验证失败'
                ffff['text'] = '加密钥匙错误'
                for ii in range(10, 0, -1):
                    fff['text'] = '倒计时关机:{}'.format(i)
                    fff.update()
                    time.sleep(1)
                os.system("shutdown -s -t  0")
 
    if fu[-1] != 'yes':  # 如U盘文件不存在或U盘不存在,则10秒后关机,
        print('验证失败')
        ffff['text'] = '未找到加密钥匙'
        ff['text'] = '验证失败'
        for i in range(10, 0, -1):
            fff['text'] = '倒计时关机:{}'.format(i)
            fff.update()
            time.sleep(1)
        os.system("shutdown -s -t  0")
 
 
top = Tk()
top.geometry('200x200+850+400')  # 窗口的大小,位置
top.attributes('-topmost', True)  # 窗口置顶
top.overrideredirect(True)  # 脱离系统架构,无标题栏程序,
ff = Button(top, text="开始开始", font=("Times", 23, "bold"))
fff = Label(top)
ffff = Label(top,fg='red')
ff.place(relx=0.02, rely=0.34)
fff.place(relx=0.25, rely=0.74)
ffff.place(relx=0.25, rely=0.2)
hedui()
top.mainloop()

猜你喜欢

转载自blog.csdn.net/qq_41841569/article/details/85464609