一、程序设计目标
U盘已经成为最常用的移动存储器,除了使用其存储数据外,能否进一步发挥其功能,使之为维护系统安全出一份力呢?现在有好多软件都可以将U盘变成系统自动加解锁工具,当插入U盘时,可以自动将系统恢复到正常状态。当拔下优盘时,系统就会自动锁定,这就省去了手工操作的繁琐。今天,危险漫步就给大家带来制作U盘锁的教程。这听起来似乎很复杂,似乎只有精通Visual C++,Delphi,Java等专业开发工具的高手才可以做到。有了AutoHotKey这款功能强大的脚本开发工具,您不需要拥有什么高深的编程技术,只需编辑几十行代码,就可以轻松设计出符合上述要求的程序来。而且本程序经过编译后,体积十分小巧,可以直接运行。
二、创建脚本程序
打开Windows资源管理器,任选一个文件夹,在空白处点击右键,在弹出菜单中依次选择菜单“新建”→“AutoHotkey Script”,在当前路径下新建一个AutoHotKey脚本文件,将其改为合适的名字(例如“USBlock.ahk”)。在该文件的右键菜单中选中“Edit Script”,打开脚本编辑器。在脚本辑器窗口开头处按回车键另起一行,输入并保存脚本。
三、程序运行方法
在关键的程序行已经添加了注释,稍加分析就可以看懂程序内容。AutoHotKey脚本代码的语法很简单,具体细节可以参阅其帮助文件。注意AutoHotKey是使用“;”字符来标注注释信息的。在代码“MD5Hash= 533568CD7C7BEA982FFB18A31D57A6E9”中包含了解锁密码,在“KeyFileName= lock.txt”设置解密文件名称。您只需在优盘根目录下创建一个“lock.txt”文件,在其中输入“533568CD7C7BEA982FFB18A31D57A6E9”,即可将其制作为专用解锁优盘。当然,您也可以根据需要,更改解锁密码字符串和解密文件名。当程序运行后,在系统托盘中出现本程序图标,同时检测是否连接有解锁优盘,如果有的话,就不进行锁定。如果没有就将系统彻底锁定。本程序采用透明锁定界面,可以在锁定界面上显示相关提示信息。当锁定之后,鼠标键盘就处于禁用状态,同时封锁所有系统热键。当拔下/插上解锁优盘后,可以自动锁定/解锁系统。
四、程序原理分析
本程序的原理实际上十分简单,本程序的核心部分就是一个定时器,通过代码“SetTimer, CheckKey, %CheckWait%”,来将其与“CheckKey”程序段的代码绑定,其执行周期设置在“CheckWait"变量中,“%CheckWait%”表示CheckWait变量的包含的数值。在代码“CheckWait= 5000”中设定的定时器运行周期为5000毫秒,当然,您可以修改该时间周期。该定时器每隔5000毫秒运行一次和“CheckKey:”程序标签关联的代码段。在该代码段中首先通过语句“Locked:=true”,将系统锁定标志位变量的值设置为真。之后通过语句“DriveGet,drives,list,removable”,取得当前所有可移动设备的盘符,将其存储到“drives”变量中。通过语句“Stringlen,cd_len,drives”,将计算出可用移动存储设备盘符的数量。通过“Loop,%cd_len%”循环,对每一个可移动设备盘符进行检测,主要检测其根目录下是否存在一个“lock.txt”的文件,并读取该文件内容,将读取的值放到“Key”变量中。利用“If( key= MD5Hash)”语句检测文件的内容是否与预设的解锁密码相同,如果相同,将系统锁定标志位设置为假。通过“If( !Locked) and(LockState)”语句判断系统锁定标志位是否为假,同时判断当前是否处于锁定状态,如果都满足的话,就通过“GoSub Unlock”语句跳转到解锁代码段,执行解锁操作。
如果上述条件不满足,就通过“GoSub Loc语句跳转到锁定代码段,继续锁定系统。“Lock:”表示包含了锁定代码段,其以“Return”关键字为结束标记。在该程序段中执行了隐藏任务栏,封锁字母键操作,同时激活了另一个定时器,该定时器和“loseTaskMgr”程序段绑定,其作用是封锁任务管理器,防止别人利用任务管理器强制结束本程序。接下来使用“Hotkey”函数封锁了常用的系统热键,防止别人利用系统热键来避开本程序的封锁操作。语句“SplashTextOn,A_ScreenWidth+2,A。ScreenHeight+2,Lock SCREEN.、nn系统进入锁定状态.、nn请插入专用解锁优盘.、nn所有按键已经被封锁.请勿擅自操作本机.”的作用是在设置闪屏界面,并将其作为系统锁定界面使用,在界面上中部显示一些警告信息,说明系统已经被锁定。语句“WinSet、Transparent,%trans%,Lock SCREEN”的作用是设置半透明的锁定效果,让锁定界面看起来更美观。语句“LockState:=true”的作用是将锁定状态标志位设置为真,表示已经进入锁定状态。语句“Blocklnput,On”的作用是屏蔽一切输入操作,等同于禁用了鼠标和键盘。“Unlock:”代码段主要作用是恢复所有的封锁项目,将系统恢复到正常状态。“CloseTaskmgr:”代码段主要用来屏蔽任务管理器。
五、程序的编译
双击“USBlock.ahk”脚本文件,即可运行该程序,之后就可以利用解锁优盘,对系统进行加解锁操作了。点击“开始”→“程序”→“AutoHotkey”→“Conlvert.ahk to.exe”,在脚本编译窗口中的“Source (script file)”中点击“Browse”按钮,选中脚本文件。在“Destination(。exe file)”中设定可执行文件的路径。在“Custom Icon(.ico file)”中可以自定义程序图标。为了控制编译后程序文件的大小,在菜单“Compression”中可以选择程序压缩的标准。设置完成后点击“Convert”按钮,就能将脚本编译成Exe文件了。从而脱离AutoHotkey设计环境而独立运行,危险漫步的所有U盘都用到了加密,为的就是安全不泄露。