返回列表 发帖
呵呵…………我是这样的

set/p pwd=请输入密码:
if "!%d:~,1%!"=="!pwd!" (
 echo 这里是 BATHOME 最高机密处——欢迎进入!
  ) else (
    echo 非法输入,举起手来 ^^_^^
    echo !%d%!)
    pause>nul

哈哈…… 真难猜啊,326算出来了,就是被这个搞晕了 "!%d:~,1%!" 嘻嘻
1

评分人数

TOP

@echo off
关闭命令回显
setlocal enableDelayedExpansion
启动变量延迟
set x=%systemroot:~-7%
设置x为%systemroot%(我的系统下为C:\WINDOWS)的后七个字母
即x=WINDOWS
for /l %%i in (0 1 6) do (
变量%%i0每次累加1循环到6执行以下判断
 if /i "!x:~%%i,1!"=="D" set d=%%i
如果偏移%%i处为D,则设置变量d为%%i,在本机d=3
 if /i "!x:~%%i,1!"=="S" set s=%%i
如果偏移%%i处为S,则设置变量s为%%i,在本机s=6
 if /i "!x:~%%i,1!"=="N" set n=%%i
如果偏移%%i处为N,则设置变量n为%%i,在本机n=2
set "!d!=!d!!n!!s!" 2>nul
设置变量!d!(即3为dns,在本机即为326,这里很迷惑人!d!不是d而是3)
)
set/p pwd=请输入密码:
等待用户输入密码
if "!%d:~,1%!"=="!pwd!" (
%d:~,1%截取偏移0开始的1位字符,%d%=3,因此%d:~,1%=3
!%d:~,1%!=!3!=326,这就是最终的密码拉(^_^)
 echo 这里是 BATHOME 最高机密处——欢迎进入!
) else (echo 非法输入,举起手来 ^^_^^)
pause>nulCOPY

[ 本帖最后由 stalker 于 2008-11-19 17:11 编辑 ]
2

评分人数

TOP

呵,我的xp,密码是326
我是一步步推的,可以直接echo !%d:~,1%!,呵,钻个空子!
我推的过程:执行完for后,d的值为3,此处set "!d!=!d!!n!!s!" 2>nul,不是set "d=!d!!n!!s!" 2>nul。所以%d:~,1%为3,而密码为!%d:~,1%!,所以密码为!3!。而执行完for之后!3!即为326,所以密码为326.有点绕,呵~~~

[ 本帖最后由 lhjoanna 于 2008-11-19 14:30 编辑 ]
1

评分人数

    • wxcute: 对了,无所谓钻空子,其实这就是分析代码的 ...PB + 10

TOP

返回列表