本帖最后由 考拉熊 于 2018-12-9 17:50 编辑
被好多大神批评,,
再次声明,,只用于电脑小白,或者自己玩玩,
下面有同学甚至提出了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.lanzouj.com/i2kfgwf(64位系统哦)
关机时间可以自己来设定,感觉10秒比较合适
下面附上全部源码
[Python] 纯文本查看 复制代码
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()
|