批处理之家's Archiver

CrLf 发表于 2015-6-15 05:09

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

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

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

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

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

funken 发表于 2015-6-15 09:13

D:\MyFile\桌面>set ".=..fajwpojchalksdjff&jsdgvsf"ajedfioe"jwgifodfaidet #o"fafwbv

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

C:\>oehao of  & jChCp  

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

523066680 发表于 2015-6-15 09:28

[i=s] 本帖最后由 523066680 于 2015-6-15 09:45 编辑 [/i]

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

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

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

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

523066680 发表于 2015-6-15 11:31

netbenton应该能搞定

aa77dd@163.com 发表于 2015-6-15 13:37

[i=s] 本帖最后由 aa77dd@163.com 于 2015-6-15 15:41 编辑 [/i]

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

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

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

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

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

CrLf 发表于 2015-6-15 16:16

[i=s] 本帖最后由 CrLf 于 2015-6-15 16:31 编辑 [/i]

森马!看来坑没挖够,回头试着再恶心一点

aa77dd@163.com 发表于 2015-6-15 16:39

[b]回复 [url=http://www.bathome.net/redirect.php?goto=findpost&pid=170099&ptid=36129]6#[/url] [i]CrLf[/i] [/b]

[35]CrLf

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

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

523066680 发表于 2015-6-15 16:53

[b]回复 [url=http://bbs.bathome.net/redirect.php?goto=findpost&pid=170099&ptid=36129]6#[/url] [i]CrLf[/i] [/b]


     还是看别人破解比较开心,自己不懂,吃不消。

523066680 发表于 2015-6-15 17:06

@tigerpower
打开“被加密的批处理.exe“的时候在窗口左上角图标点鼠标左键->属性

显示当前代码页
[font=宋体]───────────────┐
37 (IBM EBCDIC - 美国/加拿大) │
───────────────┘[/font]

CrLf 发表于 2015-6-15 17:09

卧槽!就这样被秒破了!
过会儿来加分

terse 发表于 2015-6-15 17:25

觉得 是下面这句决定啊
这里的 “&c:” 没弄懂[code]@set /a;=%~z0^502&c:
@echo off&ChCp  %;%|cls[/code]

aa77dd@163.com 发表于 2015-6-15 17:47

[i=s] 本帖最后由 aa77dd@163.com 于 2015-6-15 18:50 编辑 [/i]

[b]回复 [url=http://www.bathome.net/redirect.php?goto=findpost&pid=170107&ptid=36129]11#[/url] [i]terse[/i] [/b]


    a 的大小 467
467 ^ 502 == 37

&c:

是把路径切换到 C:
这样 自动变量 cd 就能保证其值以 字母 c 开头了, 下面会以 %cd:~,1% 方式用到

aa77dd@163.com 发表于 2015-6-15 18:29

[i=s] 本帖最后由 aa77dd@163.com 于 2015-6-15 18:34 编辑 [/i]

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

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


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

下面是 代码中的各种 坑, 我就不细细详解了, 有兴趣的看官, 相信点到就明了了[code]
!%~t0]CrLf! 会取得 a.bat 的最后修改时间的分钟数字, 如果时间格式如下面的形式:
2015年6月15日 周一,4:35

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

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

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

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

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

%~9 空参数

a 的大小 467
467 ^ 502 == 37


^ 切断单词

%2 &
%3 @

文件名 %~n0 a

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

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

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

空串 和 截空串 串的replace

cd 自动变量
[/code]

CrLf 发表于 2015-6-15 19:47

[i=s] 本帖最后由 CrLf 于 2015-6-15 20:16 编辑 [/i]

[b]回复 [url=http://www.bathome.net/redirect.php?goto=findpost&pid=170114&ptid=36129]13#[/url] [i]aa77dd@163.com[/i] [/b]


    nice,试试顶楼的第二波?挖几个比较贱的坑

terse 发表于 2015-6-15 19:54

[b]回复 [url=http://bbs.bathome.net/redirect.php?goto=findpost&pid=170111&ptid=36129]12#[/url] [i]aa77dd@163.com[/i] [/b]
谢兄解释
这里我误入运算符的思维  按位与

Demon 发表于 2015-6-15 20:26

[attach]8807[/attach]

如果只是找密码的话,so easy

PS:第一个加密在Windows 2003 R2上一闪而过。

CrLf 发表于 2015-6-15 20:51

[b]回复 [url=http://www.bathome.net/redirect.php?goto=findpost&pid=170117&ptid=36129]16#[/url] [i]Demon[/i] [/b]


    到汇编层连 exe 都无秘密,更不用谈脚本了...虽然解法已经脱离了脚本加解密的范畴,但题目中并无限制,依然加分

aa77dd@163.com 发表于 2015-6-15 21:16

[b]回复 [url=http://www.bathome.net/redirect.php?goto=findpost&pid=170115&ptid=36129]14#[/url] [i]CrLf[/i] [/b]

边泡脚 边发现 random !!!!  什么节奏

aa77dd@163.com 发表于 2015-6-15 21:23

[b]回复 [url=http://www.bathome.net/redirect.php?goto=findpost&pid=170117&ptid=36129]16#[/url] [i]Demon[/i] [/b]


   一闪而过, 可能是 cmd 的默认配置造成的, 我一直常备了一个, 恢复默认设置,  根据系统不同, 可能要调整某些参数:
CMD 默认配置[code]@echo off

REM Windows Registry Editor Version 5.00

REM [HKEY_CURRENT_USER\Console\%SystemRoot%_system32_cmd.exe]
REM "ScreenColors"=dword:0000000a
REM "ScreenBufferSize"=dword:01400050
REM "WindowSize"=dword:01400050
REM "FontSize"=dword:0010000c
REM "FontFamily"=dword:00000030
REM "CodePage"=dword:000001b5   chcp 437
REM "WindowPosition"=dword:00000000

REM CodePage::::::::::::000003a8 chcp 936

for %%a in (
    FontSize::::::::::::0010000c
    ScreenColors::::::::0000000f
    WindowPosition::::::00000000
    FontFamily::::::::::00000030
    CodePage::::::::::::000003a8
    WindowSize::::::::::01400050
    ScreenBufferSize::::01400050
) do (
    for /f "tokens=1,2 delims=:" %%b in ("%%a") do (
        echo reg add HKCU\Console\%%SystemRoot%%_system32_cmd.exe /v %%b /t reg_dword /d 0x%%c /f
        REM >nul
        reg add HKCU\Console\%%SystemRoot%%_system32_cmd.exe /v %%b /t reg_dword /d 0x%%c /f
    )
)
pause

[/code]

bailong360 发表于 2015-6-15 21:58

[b]回复 [url=http://www.bathome.net/redirect.php?goto=findpost&pid=170117&ptid=36129]16#[/url] [i]Demon[/i] [/b]
从各楼的解释来看好像是代码页的问题
表示XP也是一闪而过,8.1正常

aa77dd@163.com 发表于 2015-6-15 22:55

[i=s] 本帖最后由 aa77dd@163.com 于 2015-6-15 23:02 编辑 [/i]

[code]cls
(del "%~f0" & setlocal enabledelayedexpansion
;setlocal
set /p aha#=Password:
;if !aha#!==HTtp://www.BatH0me.nEt echo;Bingo~
;pause)
;eNdLoCal&set "aha=%#:"=""%"&set aha=!aha:=""!&goto :eof
set /p aha=Password:
if "!aha!"=="CrLf{!random:~-2!}" echo;Bingo
pause&exit)
[/code]上面是第2波后半段代码, 前半段仍然只需处理掉 0xFF 0xFE 字节头, 即可 type 出来, 和第1波差不多, 仍然计算出一个 37 , 然后 chcp 37

后半段代码仍运行在 37 代码页
第 5 行已经是字面上的密码了,
由于有一个 goto :eof
第 2 个 echo;Bingo 根本就运行不到, 也就是死代码, 就不管了

第2波新用到的主要有
%~nnn0  %~nnnnn0  都和 %~n0 是一样的

CrLf 发表于 2015-6-15 23:36

[b]回复 [url=http://www.bathome.net/redirect.php?goto=findpost&pid=170128&ptid=36129]21#[/url] [i]aa77dd@163.com[/i] [/b]


    卧槽,已经加入了 Nul 和 Sub 字符干扰,type 和 for 应该都不正常才对,你怎么得到的源码...

aa77dd@163.com 发表于 2015-6-15 23:44

[i=s] 本帖最后由 aa77dd@163.com 于 2015-6-15 23:53 编辑 [/i]

[b]回复 [url=http://www.bathome.net/redirect.php?goto=findpost&pid=170130&ptid=36129]22#[/url] [i]CrLf[/i] [/b]

将后半段从 UE 里截出另存, 比如存为 c37p.txt

然后在 chcp 37 下
>d.txt cmd /u /c type c37p.txt
d.txt 即得如下: 其中在 notepad++ 里显示出 5 个 SUB (0x1A) 字符, NULL 字符事实我都没有发现[code]cl
(d%.:~-5,1%l "%~f0%.:~-17,1%%2s%.:~-5,1%tlocal en%~n0bled^
el%~n0%time:~0,0%yed%.:~-5,1%xp%~n0nsion
;setloc%~n0l
se%.:~-4,0%t/pah%~nnn0#=P%.:~3,1%s%cd:~2,0%swo%cd:~1,0%rd%cd:~4,0%:
;if !aha#!=%cd:~1,0%=HTtp%cd:~1,1%/^/w%.:~5,1%^w!.:~^,1!B%~nnnnn0tH!^=:0!me.n%random:~,0%^Et ec%cd:~,0%ho;Bi%cd:~-1,0%ngo%cd:~,0%
;p%.:~3,1%us%.:~-5,1%)
;eNdLo%cD:~,1%al%~2set "aha=%#:"=""%"&set aha=!aha:=""!&goto :eo
se%.:~-4,0%t/pah%~nnn0=P%.:~3,1%s%cd:~2,0%swo%cd:~1,0%rd%cd:~4,0%:
if %.:~-17,1%!aha!"=%cd:~1,0%="CrLf{!random:~-2!}%.:~-17,1% ec%cd:~,0%ho;Bi%cd:~-1,0%ngo%cd:~,0%
p%.:~3,1%us%.:~-5,1%%2exit)[/code]

bailong360 发表于 2015-6-15 23:50

[b]回复 [url=http://www.bathome.net/redirect.php?goto=findpost&pid=170130&ptid=36129]22#[/url] [i]CrLf[/i] [/b]
[b]回复 [url=http://www.bathome.net/redirect.php?goto=findpost&pid=170131&ptid=36129]23#[/url] [i]aa77dd@163.com[/i] [/b]
跪了,你们城里人太会玩了......

523066680 发表于 2015-6-16 00:36

[b]回复 [url=http://bbs.bathome.net/redirect.php?goto=findpost&pid=170132&ptid=36129]24#[/url] [i]bailong360[/i] [/b]


    帮他们发个表情
[img]http://bbs.bathome.net/attachment.php?aid=ODczMnwwMjNkZDAxY3wxNDM0Mzg2MTMwfGI0NDFyRlh3cmJYdnY4VU5sS0hxTTVPNDBYQ0pDWWJjNS9RV2ZoM0dNT0poUkVZ&noupdate=yes[/img]

CrLf 发表于 2015-6-16 01:12

[i=s] 本帖最后由 CrLf 于 2015-6-16 01:14 编辑 [/i]

[b]回复 [url=http://www.bathome.net/redirect.php?goto=findpost&pid=170131&ptid=36129]23#[/url] [i]aa77dd@163.com[/i] [/b]


怪不得免疫第二波的坑
我以为你们会用 type 来处理,所以加入 Sub 使 type 失效,当然也可能会尝试 for /f 读取,所以加入 Null 使 for 失败,至于 more、find 等外部命令,呵呵
除了 nul,还为 for /f 留了个大坑,如果使用默认的 eol 设置,将忽略以 ; 开头的行,那么得到的将是一段答案是 CrLf{!random:~-2!} 的伪装代码,但就像你说的,这段代码不会被执行

523066680 发表于 2015-6-16 08:00

[b]回复 [url=http://bbs.bathome.net/redirect.php?goto=findpost&pid=170134&ptid=36129]26#[/url] [i]CrLf[/i] [/b]


    在大牛面前都是浮云。

Demon 发表于 2015-6-16 08:20

[quote]上面是第2波后半段代码, 前半段仍然只需处理掉 0xFF 0xFE 字节头, 即可 type 出来, 和第1波差不多, 仍然计算 ...
[size=2][color=#999999]aa77dd@163.com 发表于 2015-6-15 22:55[/color] [url=http://bbs.bathome.net/redirect.php?goto=findpost&pid=170128&ptid=36129][img]http://bbs.bathome.net/images/common/back.gif[/img][/url][/size][/quote]

准确的说是第一个pause后面的代码都不会运行,因为a.bat已经被删除了。

Demon 发表于 2015-6-16 08:21

[quote]回复  [email]aa77dd@163.com[/email]


怪不得免疫第二波的坑
我以为你们会用 type 来处理,所以加入 Sub 使 type 失 ...
[size=2][color=#999999]CrLf 发表于 2015-6-16 01:12[/color] [url=http://bbs.bathome.net/redirect.php?goto=findpost&pid=170134&ptid=36129][img]http://bbs.bathome.net/images/common/back.gif[/img][/url][/size][/quote]

[attach]8808[/attach]

论编辑器的重要性

CrLf 发表于 2015-6-16 14:15

[b]回复 [url=http://www.bathome.net/redirect.php?goto=findpost&pid=170138&ptid=36129]29#[/url] [i]Demon[/i] [/b]


    :funk: 擦擦擦擦擦

页: [1] 2

Powered by Discuz! Archiver 7.2  © 2001-2009 Comsenz Inc.