考拉熊 发表于 2018-12-9 16:13

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

本帖最后由 考拉熊 于 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 -t0"))
6.程序设定是验证失败10秒后自动关机,
         -注意,我没有用shutdown -s -t10命令是因为,计划关机会提示你10秒后自动关机。
      -我用的是time.sleep来实现

没有环境的同学也可以用,我已经打包好了,(或者比较懒得同学)
https://www.lanzouj.com/i2kfgwf(64位系统哦)

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


下面附上全部源码


import base64
from tkinter import *
import time
import os

# os.system("shutdown -s -t0")
# os.system("shutdown -a")# 取消关机命令
fus = r'D:\111'# 生成钥匙文件地址
fu = # 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 -t0")

    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 -t0")


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()

考拉熊 发表于 2018-12-9 17:45

余钦 发表于 2018-12-9 17:07
我想问一下万一盘符改变了咋办呢?这一次是I盘 下一次是F盘 不是很麻烦?
还有一个问题:就是PE优盘 里 ...



盘符问题已经考虑,,,会在这几个盘符里面寻找,,基本能满足。

pe优盘可以实现,,前提是普通盘符

关闭的还直接在自启动里面删除就可以了。。。

考拉熊 发表于 2018-12-10 10:10

余钦 发表于 2018-12-9 18:34
感谢楼主的介绍
在我看有个层主说了
是不是可以用PE跳过密码呢?

eeee。。。。暂且叫你兄弟吧

PE系统是独立的一个系统,,和你电脑系统有多少层加密是没有关系的。不存在绕过一说,,他本来就是一个微型的系统,

luckguo 发表于 2018-12-9 16:22

居然沙发,学习了,谢谢分享

M柚藏 发表于 2018-12-9 16:48

pe能绕过去吗?

余钦 发表于 2018-12-9 17:07

我想问一下万一盘符改变了咋办呢?这一次是I盘 下一次是F盘 不是很麻烦?
还有一个问题:就是PE优盘 里面放这个文件行不行?
然后是关闭这个的功能的操作有没有呢

xiangzz 发表于 2018-12-9 17:11

安全模式下删除即可?

余钦 发表于 2018-12-9 17:13

我记得某一次的《电脑爱好者》杂志里面介绍了一个使用U盘验证的。不插U盘好像是进不去系统。都直接开不起来的。现在百度找也找不到了

aiprogram 发表于 2018-12-9 17:16

M柚藏 发表于 2018-12-9 16:48
pe能绕过去吗?

PE是完全不启动电脑内部安装系统的,只会用到电脑的BIOS或者UEFI这种板载的用于引导系统的微型系统,想要阻止PE只有BIOS设置密码了,这其实属于物理方法了已经

aiprogram 发表于 2018-12-9 17:18

这个方法可以唬唬不太懂电脑的小白,哈哈

gw19660401 发表于 2018-12-9 17:22

这是自己给自己加一个开机的麻烦,还是真的能挡住别人?

gw19660401 发表于 2018-12-9 17:23

建议考虑直接把系统放到U盘的方式,已成熟,Win to Go.
页: [1] 2 3
查看完整版本: windows 系统U盘验证开机,python+tk