版权声明:禁止转载至其它平台,转载至博客需带上此文链接。 https://blog.csdn.net/qq_41841569/article/details/85464609
被好多大神批评,,
再次声明,,只用于电脑小白,或者自己玩玩,
下面有同学甚至提出了PE,,试问有什么验证能挡住PE,,
PE本来就是一个独立的系统呀(就好比我的电脑密码能锁住你的电脑吗?)
在论坛看见有人用.bat批处理来实现 U盘验证开机,,。。
马上就有灵感用Python来做一个同样的程序,
1.用Python 自带的库 base64 加密一段文字或字母,
- import base64
- keys = 'jiamisuanfa123的生成乱码' * 10
- s1 = base64.b64encode(keys.encode(encoding='utf-8'))
复制代码
2.将加密后的信息保存为一个111文件。
- fus = r'D:\111' # 生成钥匙文件地址(也就是U盘根目录下 的一个文件)
- with open(fus, 'wb') as f:
- 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()