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

[文本处理] 批处理密码破解

或许很多人会用
  1. set /p pass=请输入密码:
  2. if "%pass%"=="12345" echo 密码正确!&pause&goto :test
复制代码
但是这样,密码会被破解的!
只要输入 1"=="1" echo
(echo后面有一个空格)
密码就出来了
测试代码与测试结果如下

测试代码
  1. @echo off
  2. :start
  3. set /p pass=请输入密码:
  4. if "%pass%"=="12345" (
  5.      goto test
  6. ) else (
  7.      echo 密码错误
  8.      pause>nul
  9.      goto start
  10. )
  11. :test
  12. echo 密码正确!
  13. pause
复制代码
测试结果
  1. 请输入密码:1"=="1" echo
  2. "=="12345" (
  3. 密码正确!
  4. 请按任意键继续. . .
复制代码
直接通过了,也有不通过的,但是密码早就已经暴露出来了
============================================================
解决方法:

  1. if "%pass%"=="12345" (
  2.      goto test
  3. ) else (
  4.      echo 密码错误
  5.      pause>nul
  6.      goto start
  7. )
复制代码
中的"%pass%"改成
  1. if \\"%pass%"\\==\\"12345"\\ (
  2.      goto test
  3. ) else (
  4.      echo 密码错误
  5.      pause>nul
  6.      goto start
  7. )
复制代码
这样就破解不出来了
1

评分人数

楼主太厉害了!这样都给你破解到!佩服佩服!!

TOP

原来你们引用密码都不用!password!的形式啊?

set /p pass=请输入密码: " neq "bathome"  (call type "%~f0" & pause) else call type "%~f0" & pause
命令行参考:hh.exe ntcmds.chm::/ntcmds.htm
求助者请拿出诚心,别人才愿意奉献热心!
把查看手册形成条件反射!

TOP

LZ试试输入
  1. 1"\\==\\"1"\\ echo
  2. echo后有一个空格
复制代码
提出自己观点前先了解批处理机制
OrzDEF

TOP

TOP

再出一盾:
  1. @echo off & setlocal enableDelayedExpansion
  2. set "#12345=pwd" & rem 密码原文为 12345
  3. set /p pwdin=请输入密码:
  4. set "pwdin=!pwdin: =!"
  5. set "pwdin=!pwdin:a=z!"
  6. set "pwdin=!pwdin:e=x!"
  7. set "pwdin=!pwdin:i=c!"
  8. set "pwdin=!pwdin:o=v!"
  9. set "pwdin=!pwdin:u=b!"
  10. for %%p in (!pwdin!) do (
  11.   if not defined #%%p exit
  12.   if !#%%p!==pwd (echo 密码正确...)&pause  
  13. )
  14. exit /b
复制代码
告知 代码使用了 set 和 for 的转换方式, 但 第 2 行, 4--11行具体代码不明, 再求输入方式破解

TOP

回复6楼

你的密码设置的太简单了,set /p到for之间完全是误导,没起作用啊。
努力学习,努力挣分

TOP

回复 7楼 的帖子

这只是举例而已, 而且这种做法也是不完善的, 比如产生额外的假密码也可过关

这只是一个想法, 用 3 楼输入
" neq "bathome"  (call type "%~f0" & pause) else call type "%~f0" & pause
的方式是不会显示出代码原文的

[ 本帖最后由 neorobin 于 2010-7-3 21:59 编辑 ]

TOP

哦,原来如此,我对设置密码破解密码一点都不懂。
学习学习
努力学习,努力挣分

TOP

回复 6楼 的帖子

既然用了!password!的形式(使用变量延迟),为什么还要转换呢?想来个加密算法?有点舍近求远,对bat来说没什么意义。
命令行参考:hh.exe ntcmds.chm::/ntcmds.htm
求助者请拿出诚心,别人才愿意奉献热心!
把查看手册形成条件反射!

TOP

回复 4楼 的帖子

嘿、但是如果源码加密的情况下不就破解不出来了吗
============================================
本文章的基础是在源码得不到或者加密的情况下的,一开始忘了说

TOP

回复 3楼 的帖子

对于新手们来说,您老的代码是否太难了点....

TOP

回复 1楼 的帖子

应该在set /p pass=请输入密码:  的上面加一行set pass=
这样IF就不会失效啦

TOP

还是在cn-dos时写下的

反暴力破解(密码乱序+复制后不可用):
  1. @rem dmndso-cmw
  2. @echo off
  3. rem 原始密码为wdmmcn-dos
  4. set /p pass=<%~nx0
  5. set pass=%pass:~5%
  6. call :Return %%pass%%
  7. for /f "tokens=1" %%i in (%~nx0) do if "%%i"=="::" goto Judges
  8. for /f "delims=" %%i in ('cd') do echo.:: %%i\%~nx0>>%~nx0
  9. :Judges
  10. for /f "tokens=1* delims= " %%i in (%~nx0) do set puth=%%j
  11. for /f "delims=" %%i in ('cd') do if "%%i\%~nx0"=="%puth%" goto pass
  12. echo 错误!不是原文件。&del /q 复件>nul 2>nul&ping /n 2 127.1>nul&goto :eof
  13. :pass
  14. set /a n+=1
  15. set /a m=4-%n%
  16. if %m% equ 0 cls&echo 对不起,因没正确输入密码,本程序将自动结束。&ping /n 3 127.1>nul&goto :eof
  17. cls&set /p pwd=请正确输入密码,你还有%m%次机会:
  18. if not "%pwd%"=="%password%" goto pass
  19. set password=&set a=&set b=&set n=0&set new=1
  20. cls&echo 密码正确,直接回车继续使用原密码,如要更改请输入新密码。
  21. set /p new=输入新密码:
  22. if "%new%"=="1" goto run
  23. call :change %%new%%
  24. setlocal enabledelayedexpansion
  25. for /f "delims=" %%i in ('type %~nx0') do (
  26.     set /a n+=1
  27.     if !n! equ 1 (
  28.                  echo @rem %password%>%~nx0
  29.                  ) else (
  30.                         endlocal&echo %%i>>%~nx0
  31.                         )
  32. )
  33. :run
  34. cls&echo 程序开始运行...
  35. pause>nul&goto :eof
  36. :Return
  37. set a=%pass:~-1,1%
  38. if not "%pass:~1%"=="" (
  39.                        set b=%pass:~,1%
  40.                        ) else (
  41.                     set b=
  42.                     )
  43. set password=%password%%a%%b%&set pass=%pass:~1,-1%
  44. if defined pass goto Return
  45. goto :eof
  46. :change
  47. set a=%new:~,1%%a%&set b=%b%%new:~1,1%&set new=%new:~2%
  48. if defined new goto change
  49. set password=%b%%a%
复制代码
***共同提高***

TOP

回复 14楼 的帖子

嘿嘿、、

输入
  1. 1"=="1" echo
复制代码
(echo后有一个空格)

直接就
  1. 密码正确,直接回车继续使用原密码,如要更改请输入新密码。
  2. 输入新密码:
复制代码
batman也会有漏洞嘛...

TOP

返回列表