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

批处理混合加密,你能破解吗?

若报毒为误报,以人品保证这只是用来测试加密效果的样品
运行后提示 Password: 等待输入密码,若密码正确会显示 Bingo~
大致效果类似于:
  1. @echo off
  2. set /p 输入=Password:
  3. if %输入%==密码 echo Bingo~
  4. pause
复制代码
你能破解密码吗?
第一个找出正确密码的坛友奖励 10 技术分,若能用文字解析加密手段另奖励最多 10 分(看完整程度),谁想来试试?

这个脚本混用多种加密手段,囊括常见方案、冷门技巧和一些早年未实现的构想,还埋了几个坑抑制取巧手段
脚本从来藏不住秘密,娱乐娱乐~

第一波:
链接: https://pan.baidu.com/s/1cARNHY-jbV0lgf-U064QLA 提取码: 9sin

第二波来袭,同样 10 分求抱走:
链接: https://pan.baidu.com/s/1fyCUKVMAoPGvK7BWsTB31w 提取码: w7rw

密码是“密码”这两个字,因为当“输入”这个变量等于“密码”这两个字符时显示bingo,代码中都写了

TOP

回复 41# xyxlhappy


    用 37 代码页输入就行

TOP

这是怎么加密的呀?

TOP

给跪了……
echo,hP1X500P[PZBBBfh#b##fXf-V@`$fPf]f3/f1/5++u5x>in.com

TOP

回复 35# zz100001


盲算得到的密码应是:
  1. %CD%:
复制代码
然后为了测试运行,只能在 MZ 前面加个空格,验证无误

另外,试了下万能密码,也通过了:
  1. " neq 1 if not "
复制代码

TOP

回复 36# bailong360


    凯撒加密是可逆的,可逆算法应该都一一对应才对,摘要算法才会出现密码不唯一的情况

TOP

回复 35# zz100001


    卧槽,64 位运行失败,提示不支持 16 位应用程序
    以 MZ 开头的文件被当可执行文件了,微软真偷懒,不检测 pe 有效性而直接判断文件头 2 字节,测试这样的代码也会报错:
  1. MZ&pause
复制代码

TOP

回复 34# CrLf
嗯....要想一个复杂的判断输入是否正确的方式,比如先给密码套上几层算法,比如凯撒什么的...

群友凡心写过的一个脚本,不过据他所说算法尚有缺陷导致密码不唯一
  1. :::::::::::::::::::::::::::::::::::::::::::::::::::::::
  2. ::本程序主要功能
  3. ::    实现一个密码验证,当然是不容易破解的密码验证
  4. ::    密码验证的算法总有被破解的时候
  5. ::    能给作者带来成就的是在于寻找算法的过程
  6. ::   
  7. ::code by 凡心  2011-8-24
  8. ::::::::::::::::::::::::::::::::::::::::::::::::::::::
  9. @echo off
  10. color 0e
  11. mode con: cols=70 lines=6
  12. set im=echo I'm here!
  13. set try=3
  14. set "delay=for /l %%^%^%a in (1 1 2000) do echo.^^>nul"
  15. :res
  16. set col=07
  17. set a=0
  18. set/p mima=Please input password:
  19. set code=ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz
  20. set code1=%code%
  21. call :cod
  22. call :word
  23. for /f "delims=" %%i in ('call call echo %%%%m%o_o%%%%%') do (
  24. color 07
  25. call :ts %%i
  26. )
  27. ::%im% And wrong here!
  28. goto err
  29. pause
  30. goto :eof
  31. :wro
  32. set /a a+=1
  33. call call set %mima:~0,1%=%%%%%%%mima:~0,1%%%%%%%
  34. call call set %mima:~3,1%=%%%%%%%mima:~3,1%%%%%%%
  35. call call set %mima:~4,1%=%%%%%%%mima:~4,1%%%%%%%
  36. if %a% lss 2 goto wro
  37. call call :%%%mima:~0,1%%%%%%mima:~3,1%%%%%%mima:~4,1%%% 2>nul
  38. :err
  39. cls
  40. set /a try-=1
  41. call :col
  42. color 0c
  43. echo.
  44. echo Now! You are here, that's the password is wrong!! Thy again!
  45. echo You will have %try% times to input the password!  
  46. if %try% gtr 0 (goto res) else (color 0c&echo BAD NEWS! SAY BAY TO YOU NOW!!)
  47. pause>nul
  48. goto :eof
  49. :ts
  50. set aa=%1
  51. call set _aa=%%aa:ai= %code1:~5,1%%code1:~23,1% %%
  52. for %%j in (%_aa%) do (if "%%j" equ "%code1:~5,1%%code1:~23,1%" (goto :wro))
  53. goto :eof
  54. :word
  55. for /l %%i in (0,1,61) do call set %%code:~0,1%%=%%code:~1,1%%&call set code=%%code:~1%%
  56. call set %%D%%=P
  57. call set %%M%%=K
  58. call set %%Y%%=G
  59. call set %%i%%=c
  60. call set %%m%%=l
  61. call set %%w%%=x
  62. call set %%r%%=b
  63. goto :eof
  64. :col
  65. if %col% equ 0c (color %col%&set col=07) else (color %col%&set col=0c)
  66. %delay%
  67. goto :eof
  68. :cod
  69. shift /1
  70. set /a oo_1=%random%%%8+1
  71. set /a oo_2=%random%%%8+1
  72. set /a o_o="((%oo_1%^%oo_2%)|255)"
  73. set /a o_o="(0%o_o%)>>3"
  74. set m%o_o%=mima
  75. goto :eof
  76. :end
  77. cls
  78. mode con: cols=55 lines=4
  79. echo.
  80. echo     Congratulates! Your have got the password!
  81. call :col
  82. set /a n+=1
  83. if %n% lss 30 goto end
  84. pause>nul
  85. exit
  86. goto:eof
  87. :p
  88. pause
  89. goto :eof
复制代码

TOP

WORD才是最容易看到的,打开就有提示,这种乱码的藏起来都能找到,不过后面的不知道一坨啥就没看了。
我来发一个明文的,不去修改代码,凭你们对脚本的理解,试试能不能猜到密码呢,同样也是对了会显示 Bingo~

MZ201506.BAT
  1. @ECHO OFF>NUL SET CD=MZ=Mir ZZ100001&MORE +1 %0>%TEMP%CD%~X0&CALL SET MZ=%CD%\%~N0%F0%.BAT&SET/PWD=PASSWORD:&CLS&CALL SET PWD=%%MZ%PWD%:~1,1%%&START FILE:///%TEMP%CD%~X0&CLS&EXIT
  2. MZ=%CD%&SET %CD%=%%CD%%"&SET /P CD=<Mir Zz100001 Presents>NUL SET PWD=%CD%&CALL SET PWD=%%MZ%%&MODE CON: CP SELECT=437
  3. SET PWD=%CD%%PWD%
  4. ECHO OFF
  5. CLS
  6. IF "%WD%"=="%PWD%" ECHO Bingo~
  7. PAUSE
复制代码

TOP

回复 33# tigerpower


可以是可以,不过观察了下 00~7f 区间的代码页貌似只有两套:
以 ASCII 标准为基础的系列,例如 437、936
IBM EBCDIC (US-Canada) 系列,例如 37、1140
也就是说,目前没找到 windows 自带的第三类代码页能够使英文字符在 437 和 37 下都显示为乱码
除非添加自制代码页,这只是理论上的构想,不确定是否需要重启生效

应该木有第三波了,没什么好办法。
其实除了代码页和特殊字符之外还想到了一招数据流可以对抗编辑器,不过我感觉破解起来也是分分秒秒的事...
至于 OD,我想这就只能考虑给 cmd 加上自制反调试壳了,然而某些家伙会给我这个机会吗?

TOP

本帖最后由 tigerpower 于 2015-7-4 06:31 编辑

回复 32# CrLf

多搞几个代码页

TOP

回复 31# tigerpower


    其实我想过自制代码页实现加密,但限制太多,也太明显,没什么实用价值

TOP

本帖最后由 tigerpower 于 2015-7-4 06:53 编辑

回复 30# CrLf

第3波搞个其他的代码页

TOP

回复 29# Demon


    擦擦擦擦擦

TOP

返回列表