|
|
关于把密码写入扇区进行保护及密码验证的代码。
问题提出背景及讨论过程可参看本人这几天提的几个问题贴:
1,如何防止硬盘上特定文件被误删除
2,能否能用批处理实现编码的转换
3,如何确认哪些扇区是可写入的绝对安全扇区。
现在已基本达到预期目标,下面的代码算是一个总结,感谢各位的帮助和指教。
警告:由于使用此代码所造成的一切后果自负。
====================
@echo off
rem 密码写入到扇区。
rem .....................
rem 此前完成输入密码,并把密码转成MD5(32字符)。这里直接给出字符。过程省略。
set pwd=E10ADC3949BA59ABBE56E057F20F883E
:sector_1
cls
echo.
echo 是否需要把设置的密码保存到39扇区,以提高密码安全性?
echo.
echo 硬盘上的密码文件丢失后,将读取扇区里的密码,用来验证。
echo.
set sector=
Set /P sector= 是否需要 ?[y/是 n/否]:
If not %sector%#==y# Goto pwd_1
:sector_2
echo.
echo --------------------------------------
echo 您选择了把密码保存到39扇区,请首先确认39扇区内的信息。
echo.
echo 若是首次选择写入扇区,应确保39扇区为空闲扇区,即显示信息全部为0。
echo 若不全为0,请不要选择写入。
echo.
echo 曾经进行过写入操作后,该扇区显示的将是上次写入的内容。
echo.
echo 按任意键,查看39扇区信息。
pause>nul
tools\diskrw.exe 0 39 1 /l /p
echo.
echo --------------------------------------
echo.
echo 请确认是否写入39扇区:
echo.
echo 选择“是”后,将会出现最后的改写提示。
echo "Disk Sector Will be Modified, Continue ? (Y/N)"
echo 输入“Y”将进行写入操作,放弃请选“N”。
echo.
echo --------------------------------------
set sector_2=
Set /P sector_2= 是否写入39扇区?[y/是 n/否]:
If not %sector_2%#==y# Goto pwd_1
:sector_3
echo %pwd%..............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................>%temp%\039.bin
tools\diskrw.exe 0 39 1 /r %temp%\039.bin
del %temp%\039.bin >nul
:pwd_1
cls
Echo.
Echo.
Echo 密码设置完成,请牢记您的密码,下次运行时生效。
PING/n 3 127.1>NUL
goto exit
==============================
@echo off
rem 验证密码。
tools\diskrw.exe 0 39 1 /s %temp%\039.ini >nul
cls
for,/f,"tokens=1 delims=.",%%i,In (%temp%\039.ini) Do (
set pwd_s=%%i
)
del %temp%\039.ini >nul
rem 输入验证密码,并把密码转成MD5(32字符)。过程省略。
if %pwd_s%#=%pwd%# goto ok
goto exit |
|