U盘解锁/锁屏——修改于坛友思路
不熟悉论坛的排版设置,所以下面可能会有点乱,见谅。自学不久,请大佬指教
u盘解锁/锁屏
https://www.52pojie.cn/thread-1743647-1-1.html
U盘解锁/锁屏
朋友说教室的电子白板,课间会有学生到讲台搞,于是设置了密码,然后将密码发给各科老师,
密码也告诉班长(怕各科老师忘记)。不用多久,很多人知道密码了,再改密码……如此反复操作。
于是我弄了这个小软件。开始想着弄成检测U盘必须要有某个指定内容的文件才解锁的,后来想着要将那个文件放到各人的U盘,有点麻烦,所以就不那样弄,现在弄成任何U盘都可以使用。
(出处: 吾爱破解论坛)
看到上面的帖子,然后按照自己的想法用python修改了一下。以下是我的作品。
https://static.52pojie.cn/static/image/hrline/1.gif
https://static.52pojie.cn/static/image/hrline/1.gif
具体功能就是在开机的时候必须要插入一个U盘,开机后如果拔出U盘就屏蔽键盘和鼠标的操作,看起来像假死。插入同一个U盘后就会恢复正常。
脑补一下适用场景:有一台公用电脑,锁屏密码大家都知道。当我需要使用时我就插入U盘然后开机,当我临时走掉的时候不用关机,只需要拔出U盘,此时键盘和鼠标操作就无效了。
场景限制:不适用于多人轮换使用电脑的场景,除非每个人都带个U盘,并且随手关机,当然也可以改代码设定延时关机。
更多玩法需要自行探索
具体的很多细节就没有再多想了,我用不上,如果有需要可以自改或者提出来。
使用方法:把程序设置管理员权限,并设置好系统开机自启就行了,程序运行没有窗口,不会提示,简单看看
主要用到的函数:
psutil.disk_partitions()用于获取分区列表
win32api.GetVolumeInformation()用于获取硬盘序列号
os.system("shutdown -s -f -t 0")用于关机
windll.user32.BlockInput(True/False)用于禁用/启用键盘鼠标由于这个功能不屏蔽ctrl+alt+del,并且屏蔽会被中断,所以在使用时加入了无限判断循环达到持续屏蔽的效果
成品在最后
from psutil import disk_partitions
from win32api import GetVolumeInformation
from ctypes import windll
from os import system
from time import sleep
disk_old = []
disk_new = []
# 获取刚开机时候的U盘序列号
def old_seriaNumber():
global disk_old
for item in disk_partitions():
if "removable" in item.opts:
disk_old.append(GetVolumeInformation(item.mountpoint))
return disk_old
# 更新获取U盘序列号
def new_seriaNumber():
global disk_new
disk_new = []
for item in disk_partitions():
if "removable" in item.opts:
try:
disk_new.append(GetVolumeInformation(item.mountpoint))
except:
pass
return disk_new
# 开机先判断是否插入U盘,没插就关机
if old_seriaNumber() == []:
system("shutdown -s -f -t 0")
else:
# 如果插入就循环获取U盘是否有拔插
while True:
sleep(0.001)
# 判断实时获取的U盘列表和刚开机时的U盘列表是否有交集,如果有就代表教师U盘仍旧保持插入
if list(set(new_seriaNumber()).intersection(disk_old)) != []:
pass
else:
# 没有交集代表开机U盘已经拔出,就直接假死,屏蔽键盘和鼠标
windll.user32.BlockInput(True)
# 循环判断是否插入U盘,并且用循环达到持续屏蔽键盘和鼠标
while True:
sleep(0.001)
# 依判断实时获取的U盘列表和刚开机时的U盘列表是否有交集
if list(set(new_seriaNumber()).intersection(disk_old)) != []:
windll.user32.BlockInput(False)
break
else:
windll.user32.BlockInput(True)
成品下载链接:https://www.123pan.com/s/TctA-Cs5j.html U盘解锁/锁定,适用于学校、公司、以及任何存在授权使用的场景
https://www.52pojie.cn/thread-1768244-1-1.html
(出处: 吾爱破解论坛)
新版本更新了,有兴趣大家可以去看看 bfm0755 发表于 2023-3-29 11:03
如果是在教室的电脑上搞一个屏幕保护,显示一个二维码,给老师授权后,老师使用手机微信扫码就可以打开电脑 ...
这个功能对我有些超纲了,等学到了,会有的 红蓝黄 发表于 2023-3-29 12:23
开始的时候,是不是把u盘插入再开机?
然后运行程序,就可以自动指定u盘?
如果再设置另一个u盘,是不是 ...
1.是 2.这个程序可以放在系统的自启动路径里,或者用注册表实现开机自启的效果 3.是 4.开机的时候插入的所有U盘都有解锁电脑的权限,因为程序判断的是开机时和开机后的U盘列表是否有交集 5.可以做这个功能,我有空再实现一下。 检测U盘必须要有某个指定内容的文件才解锁的,感觉很实用,期待楼主更新一版,谢谢 如果是在教室的电脑上搞一个屏幕保护,显示一个二维码,给老师授权后,老师使用手机微信扫码就可以打开电脑,否则就打不开。因为使用U盘还是有点麻烦,而且不能的老师也不会每天随时带U盘,但是手机一定是带的。 检测U盘必须要有某个指定内容的文件才解锁的,这个很喜欢啊。自己的电脑在公司,这样不必担心乱用。 德德哥 发表于 2023-3-29 10:55
检测U盘必须要有某个指定内容的文件才解锁的,感觉很实用,期待楼主更新一版,谢谢
安全模式下 不会加载这个启动项不过现在win10反而不容易进入安全模式了 哈哈 win系统里有个用户系统,可以为每个老师设置一个他的专属密码,这样就不怕乱传了,外加老师也是有手机的,把密码收藏到微信群里,这样就不用交给学生了
怕老师忘记密码,比让老师每次上课都去要带一个U盘更加方便吧 要是U盘坏掉了?要是没解锁下节课其他老师不能用? bfm0755 发表于 2023-3-29 11:03
如果是在教室的电脑上搞一个屏幕保护,显示一个二维码,给老师授权后,老师使用手机微信扫码就可以打开电脑 ...
你这个想法挺好的,值得去实现 开始的时候,是不是把u盘插入再开机?
然后运行程序,就可以自动指定u盘?
如果再设置另一个u盘,是不是重复以上操作?
这样子的话,是不是可以指定N个u盘?
程序有没有窗口可以单独指定管理u盘的授权?方便管理 强制关机重启会怎样