挑战题描述
单位保管财务资料的电脑需要加强管理,为了防止用户随意登录,我使用用户名+复杂密码的方式来管理。可是再复杂的密码,同事多登录几次后就泄露了,定期更改密码记起来又很麻烦。有没有只有借助特定闪存盘、移动硬盘这类硬件才能登录的解决方案?这样不管哪个同事要用电脑,我只要插入指定闪存盘即可。(题号:20150302)
解题思路
我首先想到的就是在闪存盘中建立一个文件,然后用D O S命令来查找闪存盘中是否存在该文件,以此来判断是否要执行关机命令。这个方法已经有过不少人介绍了,而且个人感觉这个思路的弊病也很明显,其他人只要用任意闪存盘建立一个同名的文件即可破解。所以,我想到了通过U盘的剩余空间来判断是否开机的方法。毕竟其他人要伪造一个跟自己的闪存盘的剩余空间完全相同的闪存盘是比较困难的。以下内容在Windows 7操作系统中测试通过。
解题方法
一般每个人都会有几个闲置的闪存盘,可以拿出一个不用的闪存盘,将它插入需要使用闪存盘钥匙的电脑中。接着点击“开始→所有程序→附件→命令提示符”,打开命令提示符窗口,在其中输入执行以下命令:
dir J: >d:\1.txt
注意,上面命令中的“J”代表要作为开机钥匙的闪存盘的盘符,各人电脑上会略有不同,需要根据实际情况修改。这条命令的作用是列出闪存盘中的文件,并写入到D盘的1.t x t文件中。现在我们打开D盘中1.txt文件,它的最后一行记录了我们的闪存盘中有多少剩余的空间(图1)。
接下来我们打开记事本,输入以下代码:
@echo off
dir j: | find "1,462,206,464 可用字节"
if "%errorlevel%"=="0" (
echo "审核通过"
) else (
shutdown -f -s
)
以上命令首先用“dir”命令列出U盘中的文件及剩余空间,再用“find”命令查找“1,462,206,464 可用字节”,如果查找不到则执行关机命令。
将上述内容保存到B AT批处理文件中,只要扩展名为bat即可,文件名随意,比如可存为Key.bat(图2)。
为了不让其他人看到我们的源代码,我们还需要用“Bat To Exe Converter”软件把BAT文件转成EXE文件,启动该软件后,在“批处理文件”一栏中选择我们刚才建好的Key.bat文件,在“选项”选项卡中的“可见”一栏中选择“隐形应用程序”,点击“编译”即可完成转换工作(图3)。
现在我们把转换得到的Key.exe文件拖到“开始→所有程序→启动”文件夹中,即可实现插入指定闪存盘才能开机的目的了。注意,在编译好之后,我们的开机闪存盘就不能再随意的存取或者删除文件,一旦导致磁盘空间出现变化,就会出现自己也开不了机的情况。