中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 我想加个密码..限制 3次机会的..
作者:
标题: 我想加个密码..限制 3次机会的.. 上一主题 | 下一主题
binghehan100
初级用户





积分 34
发帖 16
注册 2008-4-15
状态 离线
『楼 主』:  我想加个密码..限制 3次机会的..

我知道怎么一个限制...可是他总是、无限的...

2008-4-19 23:56
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
haiou327
高级用户

DOS时空


积分 713
发帖 348
注册 2007-2-10
状态 离线
『第 2 楼』:  

用GOTO 1 PASS
GOTO 2
GOTO 3
三次当中如果有一次对的就执行,用IF配合返回错误代码,三次全部错误就EXIT



欢迎进入我的网盘!!!
2008-4-20 00:07
查看资料  发送邮件  访问主页  发短消息 网志  OICQ (52688226)  编辑帖子  回复  引用回复
bat-zw
金牌会员

永远的学习者


积分 3105
发帖 1276
注册 2008-3-8
状态 离线
『第 3 楼』:  建议楼主以后还是多搜索吧:

请参考
@echo off
:enter
set /a n+=1
set /a m=3-%n%
cls
set /p pwd=请输入密码(你总共有三次输入机会):
if "%pwd%"=="cn-dos" goto begin
cls
if %m% equ 0 echo 对不起,由于三次都没正确输入密码,程序将自动退出&ping /n 2 127.1>nul&goto :eof
echo 密码不正确,你还剩%m%次机会,请返回正确输入&ping /n 2 127.1>nul&goto enter
:begin
cls
echo 密码正确,下面开始程序运行...
pause
[ Last edited by zw19750516 on 2008-4-20 at 12:21 AM ]



批处理之家新域名:www.bathome.net
2008-4-20 00:16
查看资料  发送邮件  发短消息 网志  OICQ (841615149)  编辑帖子  回复  引用回复
PPdos
高级用户




积分 783
发帖 268
注册 2006-12-26
状态 离线
『第 4 楼』:  


@echo off
setlocal enabledelayedexpansion
for /l %%i in (2 -1 0) do (
                        ping 127.0|set /p="请输入密码:"
                        set /p pwd=
                        if "!pwd!"=="abc" (goto main) else echo 密码错误!还有%%i次机会!
                        pause&cls

)
echo 超过三次限制!系统自动退出
ping 127.0>nul
exit /B

:main
cls
echo 欢迎进入国防系统!
pause




菩提本无树,明镜亦非台,本来无一物,何处惹尘埃.
2008-4-20 00:44
查看资料  发短消息 网志   编辑帖子  回复  引用回复
binghehan100
初级用户





积分 34
发帖 16
注册 2008-4-15
状态 离线
『第 5 楼』:  

谢谢。各位大哥。啊

2008-4-20 01:03
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
hackhd
中级用户





积分 231
发帖 102
注册 2008-1-25
状态 离线
『第 6 楼』:  

重新打开。又有三次。也就说可以无限试尝试。如果将错误次数记当到某文本,打文本删除。再打开又有三次。

2008-4-20 03:02
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
26933062
银牌会员





积分 2268
发帖 879
注册 2006-12-19
状态 离线
『第 7 楼』:  

呵呵,
那就把密码乱序后记录在批处理自身,三次错误后删除自身。。。
但是别人先把批处理作个备份,仍然可以无限次尝试。。。。。



致精致简!
2008-4-20 03:13
查看资料  发短消息 网志   编辑帖子  回复  引用回复
hackhd
中级用户





积分 231
发帖 102
注册 2008-1-25
状态 离线
『第 8 楼』:  

总结:限制无效

2008-4-20 03:15
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
kingsams
初级用户




积分 30
发帖 7
注册 2007-8-11
状态 离线
『第 9 楼』:  

总结:密码是明文滴 根本没用

2008-4-20 10:08
查看资料  发短消息 网志   编辑帖子  回复  引用回复
26933062
银牌会员





积分 2268
发帖 879
注册 2006-12-19
状态 离线
『第 10 楼』:  

虽说密码是明文的,但若不懂bat批处理,要破解同样有点费力。
不防试试猜猜,下面批处理的密码
代码第一行为记录的密码信息
::df6fhfdhsfsfdgdasdfgs3f8dgd7fhgdsjkf
@echo off
::code 26933062  2008-04-17
set /p code=<"%~0"
set "code=%code:~2%"
setlocal EnableDelayedExpansion
call :lis "%code%"
endlocal&set "code=%a%"
set /a ci=3
:ccc
cls
echo\&echo  你还有 %ci% 次机会
echo\&echo  正确密码是:%code%
echo\&set /p mm= 请输入密码:
if /i "%mm%"=="%code%" goto ok
set /a ci-=1
if %ci% equ 0 (goto cuo) else goto ccc
:ok
cls&echo 密码正确
echo\&echo 可直接输入新密码,直接按回车保留原密码
set /p code=
setlocal EnableDelayedExpansion
call :loop "%code%"
endlocal&set "code=%b%%a%"
echo %code%
goto xie
:lis
set a=!a!!code:~-1,1!
set code=!code:~0,-1!
if not defined code goto :eof
set a=!a!!code:~0,1!
set code=!code:~1!
if defined code goto lis
goto :eof
:loop
set a=!code:~0,1!!a!
set code=!code:~1!
if not defined code goto :eof
set b=!b!!code:~0,1!
set code=!code:~1!
if not defined code goto :eof
goto loop
:cuo
cls&echo\&echo  密码连续输入错误,下次再试吧。。。
echo\&echo  按任意键退出。。。
echo\&pause>nul&exit
:xie
for /f "delims=" %%a in ('type "%~0"') do (
  if not defined flag (
    set flag=a
    >"%~0" echo ::%code%
  ) else >>"%~0" echo %%a
)
[ Last edited by 26933062 on 2008-4-20 at 11:03 AM ]



致精致简!
2008-4-20 10:26
查看资料  发短消息 网志   编辑帖子  回复  引用回复
bat-zw
金牌会员

永远的学习者


积分 3105
发帖 1276
注册 2008-3-8
状态 离线
『第 11 楼』:  

厉害,确实难猜到,学习了。
别外:
if not defined flag (
    set flag=a...
这里flag是什么意思?set flag=a又起到什么作用啊?

[ Last edited by zw19750516 on 2008-4-20 at 11:47 AM ]



批处理之家新域名:www.bathome.net
2008-4-20 10:57
查看资料  发送邮件  发短消息 网志  OICQ (841615149)  编辑帖子  回复  引用回复
dwj61909
新手上路





积分 18
发帖 10
注册 2008-4-5
状态 离线
『第 12 楼』:  

我也有个小问题
set /p code=<"%~0"  是把第一行读入变量
如果我是把第3行的数据 读入这个变量, 使用这种格式(set /p code=<"%~0") 是否也能够实现,怎么写?

2008-4-20 17:08
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
26933062
银牌会员





积分 2268
发帖 879
注册 2006-12-19
状态 离线
『第 13 楼』:  



  Quote:
Originally posted by zw19750516 at 2008-4-20 10:57:
厉害,确实难猜到,学习了。
别外:
if not defined flag (
    set flag=a...
这里flag是什么意思?set flag=a又起到什么作用啊?

[ Last edited by zw19750516 on 2008-4-20 at 11:47 AM ]

这是在保存密码时,第一次向%0写入内容时,使用单个>符号,以达到重写自身的目的。



致精致简!
2008-4-20 18:33
查看资料  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: