2012-09-13 40 views
0

我已经使用了“请求用户名/密码+注册的批处理文件”的脚本(主题已经在stackoverflow中)...这里是我的问题:有没有什么办法可以添加锁定到批处理文件或在5次错误尝试后执行关机命令? (在底部的超时是24小时) 示例情况: 用户名:bobTESTattempt1 密码:1234 [输入] 密码不正确剩余的4次尝试!批处理文件密码“锁定”

(接下来3次尝试使用)

用户名:bobTestattempt5 密码123342 [输入] 密码不正确剩余0尝试! [进入]

帐户锁定 TIMEOUT 86400

+4

没有与此解决方案一个明显的问题。用户可以随时使用Ctrl + C或Ctrl + Break来退出批处理文件,并重新启动它。任何计数器将被重置。所以在5次尝试第一次锁定之后,用户可以尝试4次,点击“Ctrl + C”,然后重新启动批处理文件4次,然后重复多次。 –

+0

另一个问题是批处理文件需要访问明文密码,这意味着您的明文密码存在于任何人都可以找到的文件或变量中。安全实践很差。 –

+0

您曾经可以使用'BREAK OFF'命令来至少关闭用户使用'CTRL + C'的能力,但很久以前就已经改变了。 “BREAK”命令就是为了防止古老的DOS批处理文件丢失错误。在DOS下,您可以通过使用“BREAK OFF”并隐藏批处理文件和数据文件来解决此问题。然后普通用户仍然可能会用'CTRL + BREAK'出现,但不知道要运行或查看的文件的名称。 '*为好日子而努力*' –

回答

0

在这里你去

@echo off 
set counter=5 
:CREDS 
cls 
if %counter% equ 0 goto :LOCKOUT 
if %counter% lss 5 echo Password incorrect, %counter% attempts left 
set /p un=Enter your username: 
set /p pw=Enter your password: 
if %un%==correctusername (
if %pw%==correctpassword goto :ALLOK 
) 
goto :WRONG 

:WRONG 
set /a counter-=1 
goto :CREDS 

:ALLOK 
echo Creds ok, do whatever 
pause >nul 
exit >nul 

:LOCKOUT 
echo ACCOUNT LOCKED OUT TIMEOUT 86400 
timeout /t 86400 
goto :CREDS 
+0

谢谢!有用! –