真正安全的CMD加密批处理,今天无聊的时候写的。
如果不相信,去试试看你能不能构造特殊字符绕过它,呵呵。
-------------------------------------------------------------------------
@echo off
title 安全CMD加密批处理!
color 1a
set times=3
for /F "tokens=1* " %%i in (c:c) do set Pwd=%%i
set Pwd="%Pwd:~-5%"
:again
set User=verkey
set /p User=请输入口令:
set User="%User:"=%"
if %User%==%Pwd% goto ok
set /a times=%times%-1
if %times%==0 goto end
echo 验证失败时间:%date% %time%>>error.log
echo 错误的口令:%User%>>error.log
echo 端口状态信息:>>error.log
netstat -an|findstr "ESTABLISHED" >>error.log
echo. >>error.log
echo 您输入的口令有误,请重试!您还有%times%次输入的机会!
pause
cls
goto again
:end
echo 三次口令全错,你的操作已被记录!
pause
exit
:ok
title 口令正确,欢迎使用!
cd
cls
----------------------------------------------------------------------------------------
注释:
rem 关闭回显
@echo off
rem 窗口标题
title 安全CMD加密批处理!
rem 背景和字体颜色
color 1a
rem 设定允许输入次数
set times=3
rem 从C盘的C文件中提取密码文件字符串
for /F "tokens=1* " %%i in (c:c) do set Pwd=%%i
rem 取文件中的最后五个字符
set Pwd="%Pwd:~-5%"
:again
set User=verkey
set /p User=请输入口令:
rem 过滤字符"并且过滤完后加上"确保批处理语法正确
set User="%User:"=%"
rem 比较口令
if %User%==%Pwd% goto ok
rem 次数计数,每输入一次减一
set /a times=%times%-1
if %times%==0 goto end
rem 记录验证失败的信息和正在连接的端口信息
echo 验证失败时间:%date% %time%>>error.log
echo 错误的口令:%User%>>error.log
echo 端口状态信息:>>error.log
netstat -an|findstr "ESTABLISHED" >>error.log
echo. >>error.log
echo 您输入的口令有误,请重试!您还有%times%次输入的机会!
pause
cls
goto again
:end
echo 三次口令全错,你的操作已被记录!
pause
exit
:ok
title 口令正确,欢迎使用!
cd
cls
******************************************************
使用方法:
复制“-----”中间的命令到记事本,另存为后缀为.bat 或者.cmd的批处理文件。
set times=3 '次数可自行设定
for /F "tokens=1* " %%i in (c:c) do set Pwd=%%i '(c:c)括号里是口令文件存放位置
set Pwd="%Pwd:~-5%" '提取字符串中的那些部分作为口令
例如我想把口令文件存放在C盘,那么我在C盘创建一个文件mm.txt,输入一长串字符,
如:456afipoaikjxa;?;k;kbverkey
那么(c:c)改为(c:mm.txt),如果要把最后6个字符作为口令,那么就是 set Pwd="%Pwd:~-6%" ,口令为
"verkey" .如果要把前5位作为口令,则set Pwd="%Pwd:~1-5%" ,提取的是“456af”,如果想要口令是"aikjxa;"则set Pwd="%Pwd:~8-15%"
以上是为安全考虑,如果你嫌麻烦,可以去掉这个口令文件,口令直接保存在批处理中。以下是代码:
-----------------------------------------------------------------
@echo off
title 安全CMD加密批处理!
color 1a
set times=3
:again
set User=verkey
set User=verkey
set /p User=请输入口令:
set User="%User:"=%"
if %User%=="您的口令" goto ok
set /a times=%times%-1
if %times%==0 goto end
echo 验证失败时间:%date% %time%>>error.log
echo 错误的口令:%User%>>error.log
echo 端口状态信息:>>error.log
netstat -an|findstr "ESTABLISHED" >>error.log
echo. >>error.log
echo 您输入的口令有误,请重试!您还有%times%次输入的机会!
pause
cls
goto again
:end
echo 三次口令全错,你的操作已被记录!
pause
exit
:ok
title 口令正确,欢迎使用!
cd
cls
--------------------------------------------------------------
其实很简单,将代码拷贝到记事本,保存为批处理,然后打开注册表("开始--运行--输入regedit"),依次展开键值『HKEY_LOCAL_MACHINESOFTWAREMicrosoftCommand ProcessorAutoRun』
把AutoRun的值改为批处理所在目录,然后创建个密码文件,适当修改部分内容即可。
********************************************************
这个CMD加密批处理和网上发布的不同之处在于这个批处理对输入的口令进行了比较好的过滤,不会被别人构造特殊字符和语句导致命令出错而绕过验证或者直接爆出口令。