[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[ 新手习题 8 ] 批处理密码破译

  1. @echo off
  2. setlocal enableDelayedExpansion
  3. set x=%systemroot:~-7%
  4. for /l %%i in (0 1 6) do (
  5.  if /i "!x:~%%i,1!"=="D" set d=%%i
  6.  if /i "!x:~%%i,1!"=="S" set s=%%i
  7.  if /i "!x:~%%i,1!"=="N" set n=%%i
  8. set "!d!=!d!!n!!s!" 2>nul
  9. )
  10. set/p pwd=请输入密码:
  11. if "!%d:~,1%!"=="!pwd!" (
  12.  echo 这里是 BATHOME 最高机密处——欢迎进入!
  13. ) else (echo 非法输入,举起手来 ^^_^^)
  14. pause>nul
复制代码


出题目的:学会看代码,分析代码。
别看代码很牛的样子,其实找出密码很简单。
(另:2K 与 XP 系统会不一样。)

方法不限。答对加分鼓励,说明怎么找出的。
1

评分人数

回复 12楼:cainiao736 ,13楼:qianfeng 的帖子

set "d=!a!!n!!s!"
是将后面的几个变量的值赋给字母 d 这个变量。如:
a=1,n=2,s=3
则d=!a!!n!!s!=123
===================
set d=2   
 这时d=2
set d=!d!8   这时d=28,即原先设置的 d 值与后面的 8 合在一起得到的值。
===================
合起来,若原先d=num,n=5,s=6
set "!d!=!d!!n!!s!"  执行后,num=num56,
       
    原因是前面一个!d!=num,后面也等于num,!n!等于5,最后!s!=6
       
    这样就得到num=num56。
批处理之家论坛官方 QQ 群 :【当前人数/人数上限】【2009-07-08】
群①:43011867(181/200);群②:(暂缺数据);群③:66165582(120/200)。

TOP

返回列表