找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 72472|回复: 42

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

[复制链接]
发表于 2015-6-15 05:09:00 | 显示全部楼层 |阅读模式
若报毒为误报,以人品保证这只是用来测试加密效果的样品
运行后提示 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
发表于 2015-6-15 09:13:00 | 显示全部楼层
D:\MyFile\桌面>set ".=..fajwpojchalksdjff&jsdgvsf"ajedfioe"jwgifodfaidet #o"fafwbv

D:\MyFile\桌面>oset /a;=167^502  & c:

C:\>oehao of  & jChCp  

没明白什么意思,哎..........只能到这了...

评分

参与人数 1技术 +2 收起 理由
CrLf + 2 感谢参与

查看全部评分

发表于 2015-6-15 09:28:43 | 显示全部楼层
本帖最后由 523066680 于 2015-6-15 09:45 编辑

解密完全没了解过,白天好好工作。就不入坑了  (我连最初那种%%%%%一堆的加密都不懂)

只试了试exe另存为zip, 看到备注:

;下面的注释包含自解压脚本命令

Setup=cmd /c set time="jwgifodfaidet #o"&start /b cmd /c a.bat "&set .=" ^^^& @
TempMode
Silent=1
Overwrite=1

评分

参与人数 1技术 +1 收起 理由
CrLf + 1 感谢参与

查看全部评分

发表于 2015-6-15 11:31:12 | 显示全部楼层
netbenton应该能搞定
发表于 2015-6-15 13:37:38 | 显示全部楼层
本帖最后由 aa77dd@163.com 于 2015-6-15 15:41 编辑

CHCP 37 代码页
IBM EBCDIC (US-Canada)

好象前半段为 437 编码页, CLS 之后, 后半段 37 代码页

  1. *%~n1"%~x1..fajwp%3ojch%~9alksdjff%2jsdgvsf"ajedf^ioe%time%fafwbv
  2. %.:~7,1%s%.:~-5,3%/a%:%;=%~z0^^502%2c:
  3. %.:~7,1%^e%.:~10,2%%.:*#=% o%.:~18,3%%cd:~,1%h%cd:~,1%p %;%|cls

  4. Ž(d%.:~-5,1%l "%~f0%.:~-17,1%%2s%.:~-5,1%tlocal en%~n0bled^
  5. el%~n0%time:~0,0%yed%.:~-5,1%xp%~n0nsion
  6. se%.:~-4,0%t/pah%~n0=P%.:~3,1%s%cd:~2,0%swo%cd:~1,0%rd%cd:~4,0%:
  7. if %.:~-17,1%!aha!"=%cd:~1,0%="[!%~t0]CrLf!%.:~-17,1% ec%cd:~,0%ho;Bi%cd:~-1,0%ngo%cd:~,0%~
  8. p%.:~3,1%us%.:~-5,1%%2ex^it/b)
复制代码
或者
  1. *%~n1"%~x1..fajwp%3ojch%~9alksdjff%2jsdgvsf"ajedf^ioe%time%fafwbv
  2. %.:~7,1%s%.:~-5,3%/a%:%;=%~z0^^502%2c:
  3. %.:~7,1%^e%.:~10,2%%.:*#=% o%.:~18,3%%cd:~,1%h%cd:~,1%p %;%|cls

  4. (d%.:~-5,1%l "%~f0%.:~-17,1%%2s%.:~-5,1%tlocal en%~n0bled^
  5. el%~n0%time:~0,0%yed%.:~-5,1%xp%~n0nsion
  6. se%.:~-4,0%t/pah%~n0=P%.:~3,1%s%cd:~2,0%swo%cd:~1,0%rd%cd:~4,0%:
  7. if %.:~-17,1%!aha!"=%cd:~1,0%="[!%~t0]CrLf!%.:~-17,1% ec%cd:~,0%ho;Bi%cd:~-1,0%ngo%cd:~,0%
  8. p%.:~3,1%us%.:~-5,1%%2ex^it/b)
复制代码

评分

参与人数 2技术 +2 收起 理由
tigerpower + 1 这种代码页你也认得,佩服!
523066680 + 1 holy high

查看全部评分

 楼主| 发表于 2015-6-15 16:16:08 | 显示全部楼层
本帖最后由 CrLf 于 2015-6-15 16:31 编辑

森马!看来坑没挖够,回头试着再恶心一点
发表于 2015-6-15 16:39:40 | 显示全部楼层
回复 6# CrLf

[35]CrLf

35 是 a.bat 的最后修改时间的分钟数字,
2015年6月15日 周一,4:35:24

但时间格式是否会影响这个密码, 我觉得会, 但没测试

评分

参与人数 1技术 +10 收起 理由
CrLf + 10 Bingo~

查看全部评分

发表于 2015-6-15 16:53:19 | 显示全部楼层
回复 6# CrLf


     还是看别人破解比较开心,自己不懂,吃不消。
发表于 2015-6-15 17:06:18 | 显示全部楼层
@tigerpower
打开“被加密的批处理.exe“的时候在窗口左上角图标点鼠标左键->属性

显示当前代码页
───────────────┐
37 (IBM EBCDIC - 美国/加拿大) │
───────────────┘

评分

参与人数 1技术 +1 收起 理由
tigerpower + 1 原来可以这样看代码页,学习了:)

查看全部评分

 楼主| 发表于 2015-6-15 17:09:25 | 显示全部楼层
卧槽!就这样被秒破了!
过会儿来加分
发表于 2015-6-15 17:25:09 | 显示全部楼层
觉得 是下面这句决定啊
这里的 “&c:” 没弄懂
  1. @set /a;=%~z0^502&c:
  2. @echo off&ChCp  %;%|cls
复制代码

评分

参与人数 1技术 +2 收起 理由
CrLf + 2 感谢参与

查看全部评分

发表于 2015-6-15 17:47:23 | 显示全部楼层
本帖最后由 aa77dd@163.com 于 2015-6-15 18:50 编辑

回复 11# terse


    a 的大小 467
467 ^ 502 == 37

&c:

是把路径切换到 C:
这样 自动变量 cd 就能保证其值以 字母 c 开头了, 下面会以 %cd:~,1% 方式用到
发表于 2015-6-15 18:29:38 | 显示全部楼层
本帖最后由 aa77dd@163.com 于 2015-6-15 18:34 编辑

来给出 a 的原码:
  1. * & set ".=..fajwp@ojchalksdjff&jsdgvsf"ajedf^ioe%time%fafwbv
  2. @set /a ;=%~z0^^502&c:
  3. @echo off & chcp %;% | cls

  4. REM 下面的被处理成了 37 代码页才能正常工作的
  5. (del "%~f0" & setlocal enabledelayedexpansion
  6. set /p aha=Password:
  7. if "!aha!"=="[!%~t0]CrLf!" echo;Bingo~
  8. pause & exit/b)
复制代码
代码首先在 开头用了两个字节: 0xFF 0XFE 这是第一个坑, 破解时 我把它们处理成了空格 或者 换行, 或者删掉


批处理被 RAR 打包成了EXE 自解压运行, 并且带了启动参数
  1. cmd /c set time="jwgifodfaidet #o"&start /b cmd /c a.bat "&set .=" ^^^& @
复制代码
这会启动两个 cmd 进程, 但只一个窗口, 而且子进程会能访问父进程的 time 变量,
子进程 有三个参数 "&set .="(红引号不算) 和 & 和 @

下面是 代码中的各种 坑, 我就不细细详解了, 有兴趣的看官, 相信点到就明了了

  1. !%~t0]CrLf! 会取得 a.bat 的最后修改时间的分钟数字, 如果时间格式如下面的形式:
  2. 2015年6月15日 周一,4:35

  3. &set .=  用 %~n1 %~x1 分割成 [&set ] [.=]

  4. *%~n1"%~x1..fajwp%3ojch%~9alksdjff&jsdgvsf"ajedf^ioe%time%fafwbv
  5. *&set ".=..fajwp@ojchalksdjff&jsdgvsf"ajedfioe"jwgifodfaidet #o"fafwbv

  6. *& 会造成错误, 但不影响 . 获得赋值
  7. fafwbv 在两层双引号外配对, 被丢弃

  8. @set /a%:%;=%~z0^^502
  9. %:% 是空, 但会让其在命令行不成功, 但批处理方式运行可以成功使 ; 获得赋值 37

  10. ^i => i 还有另外几个字母也同样用到这种转义, 只为了干扰视听而已.

  11. %~9 空参数

  12. a 的大小 467
  13. 467 ^ 502 == 37


  14. ^ 切断单词

  15. %2 &
  16. %3 @

  17. 文件名 %~n0 a

  18. %.:~-17,1% 代替 "

  19. .=..fajwp@ojchalksdjff&jsdgvsf"ajedfioe"jwgifodfaidet #o

  20. 此变量由不同 cmd.exe 进程共享
  21. time="jwgifodfaidet #o"

  22. 空串 和 截空串 串的replace

  23. cd 自动变量
复制代码

评分

参与人数 3PB +18 技术 +12 收起 理由
bailong360 + 1
CrLf + 10 说好的附加分
523066680 + 18 + 1 感谢分享过程

查看全部评分

 楼主| 发表于 2015-6-15 19:47:18 | 显示全部楼层
本帖最后由 CrLf 于 2015-6-15 20:16 编辑

回复 13# aa77dd@163.com


    nice,试试顶楼的第二波?挖几个比较贱的坑
发表于 2015-6-15 19:54:40 | 显示全部楼层
回复 12# aa77dd@163.com
谢兄解释
这里我误入运算符的思维  按位与
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 03:11 , Processed in 0.026238 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表