轩辕春秋文化论坛 » 辕门射虎 » Can you crack it?


2011-12-2 02:19 颖颖
Can you crack it?

[url]http://www.canyoucrackit.co.uk/[/url]

目的是要解密链接上的一段话,总体感觉很有挑战性。

12 月 11 日 23:00 之前解出的,有 1000 通宝的奖励喔

[color=Silver][[i] 本帖最后由 颖颖 于 2011-12-2 02:37 编辑 [/i]][/color]

2011-12-2 09:33 周瑜

☺ôKiü8m'♥¢ⁿg\`µäá╘▲╩τ♦ÿRQu59║αδâì╜eptSf↑vO_Ha╔╧↨∙@Zx▼h♠4╢¿!┐∞┤╚~├ߣU╙.⌠éI└N╖,sΣΦ
æ¡[Pw| ¬c■▒▄≡Eè☼à°╛╪Ñ♣:╣╦⌡T-↔┼7%L█ù╫»AlÆDÄÖb►♀çM╠÷zπΘjn▓▬îÉ"^·   ╗≈╤ë╥╓Çå)ò3┬Y╝ö
&iuml;&Aring;#◄&frac12;↓╒↕Γ&nbsp;C╟ê┴═&sup2;y*ε▐qφ±ƒ&ucirc;≥Ω√┌;o▀G+>─F&para;₧íX&frac14;&ordm;⌂}2∟]/&ntilde;‼╬⌐╨≤Vó╞=<&Uuml;r

[color=Silver][[i] 本帖最后由 周瑜 于 2011-12-1 17:41 编辑 [/i]][/color]

2011-12-2 09:35 ouyangnitian
回复 #2 周瑜 的帖子

公瑾V5,拿乱码来翻译密码!

问声公主,这个原理是什么?

2011-12-2 11:24 颖颖
回复 #2 周瑜 的帖子
你直接把 HEX 转成 ASCII 而已吧?:titter:
不过也不错,至少你知道出题的是在问什么了。本题的关键是找出一种算法,把以上的乱码变成一段文字。

回复 #3 ouyangnitian 的帖子
题目原理是这样的,电脑字符是靠 0-255 之间的某一个数字来表示,或者用 16 进制表示正好是一个两位数。一般所谓的加密系统,都是要对文字进行一个加密函数,一般所谓的解密就是找倒加密系统的逆函数。

比如说,最简单的加密系统之一就是 y = x+1 mod 256,这个系统把 ascii 的每个字符往后移一格。因此,"Hello World"被加密后将显示为“Ifmmp!Xpsme”。这个问题问的是,假设你看到了“Ifmmp!Xpsme”,你能否将原来的“Hello World”还原。

当然,本问题中的加密系统不会象 y = x+1 mod 256 那么简单了,一般比较常见的(简单)加密系统包括:y = a(x) = x+k mod 256, k = 1,2,...,255(要一个一个试);y = b(x) = kx mod 256,且 k 和 256 要互素,y = c(x) = x^k mod 256,也要求 k 和 256 互素,或者也有可能是 y = a, b, c 之间的某种函数叠加。

这些都是比较简单的加密方式,因为它们都是对单字符加密,不牵扯到字符间的 correlation。例如,如果“Hello World”加密成“Ifmmp!Xpsme”的话,“Hello World!”的结果就是“Ifmmp!Xpsme"”(! 加密后是" )。也就是说只要 input 相似,那么 output 也会相似,这样的加密系统只要密钥长期不变,都可以很容易被解开的。

如果遇到类似于 SHA-1 那样,后面的变一个字符可能连前面的东西也会因之改变。例如,
SHA1("The quick brown fox jumps over the lazy dog") = 2fd4e1c6 7a2d28fc ed849ee1 bb76e739 1b93eb12
SHA1("The quick brown fox jumps over the lazy cog") = de9f2c7f d25e1b3a fad3e85a 0bd17d9b 100db4b3
两句话变了一个字母,加密内容看似天壤之别。

不过网络命题肯定不会是这个难度的了,我估计用点加乘幂之类算法足以搞定。

[color=Silver][[i] 本帖最后由 颖颖 于 2011-12-2 13:33 编辑 [/i]][/color]

2011-12-2 12:20 第一深喉
无视主帖,只对2楼的发帖时间与编辑时间表示好奇。

2011-12-2 12:24 KYOKO
<!doctype html>
<html lang="en">
<head>
        <meta charset="utf-8">
        <title>Can you crack it?</title>
        <meta name="description" content="">
        <meta name="author" content="">
        <link rel="stylesheet" href="css/styles.css"><link rel="stylesheet" href="css/countdown.css">
        <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js"></script>
        <script src="js/jquery.countdown.js"></script>
        <script type="text/javascript" src="https://apis.google.com/js/plusone.js">
                {lang: 'en-GB'}
        </script>
        <script>
                $(function () {
                        var austDay = new Date(2011, 11, 12, 0, 1, 0);
                        $('#defaultCountdown').countdown({until: austDay});
                });

                function SharePopup (c) {
                   window.open(c,'window', 'width=1000,height=375,scrollbars=yes,status=no,top=100,left=100');
                }
        </script>
</head>
<body>
<div class="container">
        <div class="heading"><h1>_Can you crack it? </h1></div><div class="cleardivs"></div>
        <div class="graphic"><img src="images/cyber.png" width="740" height="260" alt=""></div>
       
       
        <div class="actions">
       
        <div class="counter"><p>TIME REMAINING</p>
        <div id="defaultCountdown"></div></div>
       
        <div class="keyword">
                <form name="form1" method="post" action="index.asp">
                        <label for="enter">Enter Keyword:</label> <input type="password" name="enter" id="enter" value="" size="16" />
               
          <input type="submit" id="button" class="text" name="submitted" value="SUBMIT" />
               
                </form></div><div class="cleardivs"></div>
                <p style="text-align:center;">THE CHALLENGE CONTINUES</p>
        </div></div>
        <div class="footer">
          <div class="social">
                <a href="http://www.facebook.com/share.php?u=http://www.canyoucrackit.co.uk/" onclick="SharePopup(this.href); return false" target="_blank" class="facebook" title="Share this page on Facebook">
                        <img src="images/facebook.gif" width="33" height="33" alt="Facebook">
                </a>
                <a href="http://twitter.com/share?text=Can you crack the code?" onclick="SharePopup(this.href); return false" target="_blank" class="twitter" title="Share this page on Twitter">
                        <img src="images/twitter.gif" width="33" height="33" alt="Twitter">
                </a>
               
                <g:plusone annotation="none"></g:plusone>
        </div>
       
        <div class="cleardivs">
</div>

</div>

</body>
</html>

============================
tb拿来:hz1023:

2011-12-2 13:03 周瑜
我输出的可不是直接转换的ASCII字符,而是下面这段汇编执行完前两步之后堆栈内的值。后面带中断的递归实在是不知怎么弄了。

[font=Fixedsys]:00400000 EB04                    jmp 00400006
:00400002 AF                      scasd
:00400003 C2BFA3                  ret A3BF

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00400000(U)
|
:00400006 81EC00010000            sub esp, 00000100
:0040000C 31C9                    xor ecx, ecx

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00400013(C)
|
:0040000E 880C0C                  mov byte ptr [esp+ecx], cl
:00400011 FEC1                    inc cl
:00400013 75F9                    jne 0040000E
:00400015 31C0                    xor eax, eax
:00400017 BAEFBEADDE              mov edx, DEADBEEF

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00400032(C)
|
:0040001C 02040C                  add al, byte ptr [esp+ecx]
:0040001F 00D0                    add al, dl
:00400021 C1CA08                  ror edx, 08
:00400024 8A1C0C                  mov bl, byte ptr [esp+ecx]
:00400027 8A3C04                  mov bh, byte ptr [esp+eax]
:0040002A 881C04                  mov byte ptr [esp+eax], bl
:0040002D 883C0C                  mov byte ptr [esp+ecx], bh
:00400030 FEC1                    inc cl
:00400032 75E8                    jne 0040001C
:00400034 E95C000000              jmp 00400095

* Referenced by a CALL at Address:
|:00400097   
|
:00400039 89E3                    mov ebx, esp
:0040003B 81C304000000            add ebx, 00000004
:00400041 5C                      pop esp
:00400042 58                      pop eax
:00400043 3D41414141              cmp eax, 41414141
:00400048 7543                    jne 0040008D
:0040004A 58                      pop eax
:0040004B 3D42424242              cmp eax, 42424242
:00400050 753B                    jne 0040008D
:00400052 5A                      pop edx
:00400053 89D1                    mov ecx, edx
:00400055 89E6                    mov esi, esp
:00400057 89DF                    mov edi, ebx
:00400059 29CF                    sub edi, ecx
:0040005B F3                      repz
:0040005C A4                      movsb
:0040005D 89DE                    mov esi, ebx
:0040005F 89D1                    mov ecx, edx
:00400061 89DF                    mov edi, ebx
:00400063 29CF                    sub edi, ecx
:00400065 31C0                    xor eax, eax
:00400067 31DB                    xor ebx, ebx
:00400069 31D2                    xor edx, edx

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0040008B(C)
|
:0040006B FEC0                    inc al
:0040006D 021C06                  add bl, byte ptr [esi+eax]
:00400070 8A1406                  mov dl, byte ptr [esi+eax]
:00400073 8A341E                  mov dh, byte ptr [esi+ebx]
:00400076 883406                  mov byte ptr [esi+eax], dh
:00400079 88141E                  mov byte ptr [esi+ebx], dl
:0040007C 00F2                    add dl, dh
:0040007E 30F6                    xor dh, dh
:00400080 8A1C16                  mov bl, byte ptr [esi+edx]
:00400083 8A17                    mov dl, byte ptr [edi]
:00400085 30DA                    xor dl, bl
:00400087 8817                    mov byte ptr [edi], dl
:00400089 47                      inc edi
:0040008A 49                      dec ecx
:0040008B 75DE                    jne 0040006B

* Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
|:00400048(C), :00400050(C)
|
:0040008D 31DB                    xor ebx, ebx
:0040008F 89D8                    mov eax, ebx
:00400091 FEC0                    inc al
:00400093 CD80                    int 80

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00400034(U)
|
:00400095 90                      nop
:00400096 90                      nop
:00400097 E89DFFFFFF              call 00400039
:0040009C 41                      inc ecx
:0040009D 41                      inc ecx
:0040009E 41                      inc ecx
:0040009F 41                      inc ecx[/font]

2011-12-2 13:24 颖颖
回复 #7 周瑜 的帖子

不错不错,公斤加油~~~

2011-12-2 14:17 阿尔法孝直
:hz1011:看那个码8个一组,16个一行的,我的第一反应是MD5,谁知道竟然是机器码。。。。。。

2011-12-2 14:39 颖颖
回复 #9 阿尔法孝直 的帖子

这个我也不知道啊

2011-12-5 19:48 tomaswang
回复 #1 颖颖 的帖子

我花了三天两夜,破解出来了,过程太复杂了,等我把过程慢慢写出来。。。
里面有月薪三万英镑的工作机会,可惜哥在天朝,去不了啊

2011-12-6 00:25 颖颖
回复 #11 tomaswang 的帖子

何方神圣?:!*

2011-12-6 00:38 颖颖
回复 #11 tomaswang 的帖子

本来只认为是个好玩的 web quiz,没想到背后还有月薪 30000 英镑的工作?REALLY?!!!

2011-12-6 00:51 tomaswang
回复 #12 颖颖 的帖子

在 google 一搜 can you crack it, 就到了这里,注册了一个帐号就进来了:hz1026:
答案是方括号中的字符串【Pr0t3ct!on#cyber_security@12*12.2011+】
这题绝对不像表面上看到的那样简单,那些机器码能看明白,只是热热身而已,而且里面很多看起来没有用的数据,最后都变成关键的线索,这题出得真是太好了。。。

大致步骤是这样
1 将那些机器码做成 elf 文件,并用 objdump 和 gdb 分析,并看懂这段代码到底是做什么的
1.5 这时候会试各种 keyword,例如(BBBB, deadbeef) 但都不会成功,抓狂。。。到处找其他线索
2 找出隐藏在图片中的信息,那是一段 base64 编码,解码后会发现跟1中的代码匹配
3 合并 1和 2,会得到一个js文件地址,这个文件是第二道题
4 实现js中要求的功能(竟然是要实现一个简单虚拟机:qDD+),然后运行
5 运行结束后,在 mem中有另一个 exe文件的地址,分析这个 exe文件,完全看懂,这会花不少时间
6 根据 5分析的结果,建立 license.txt 文件,并且用 windbg手工跳过 crypt 校验部分
7 运行之后会出最后一个地址,但是这个地址生成,需要 stage1 和 stage2 的关键字
8 把各种可能的关键字集合到一起,生产一堆 url,然后一个一个去试
9 试到某一个,忽然就出来答案了,填到 KeyWord 里,竟然就成功了,当时都不敢相信啊:hz1020:

2011-12-6 00:58 tomaswang
回复 #14 tomaswang 的帖子

唉,为了这个破题,安装了一大堆工具软件,好像都中了病毒了。。。

2011-12-6 13:47 tomaswang
回复 #14 tomaswang 的帖子

刚刚将破解过程整理到 [url]http://hi.baidu.com/tomas_89/home[/url] 有兴趣的可以去看看

2011-12-6 14:04 feiyue1206
大神,容俺膜拜一下。。。

2011-12-6 14:14 ouyangnitian
牛人啊!真是服了。

2011-12-6 14:34 58642modemeng
额滴神啊

膜拜高人:hz1038:

2013-1-24 13:45 toushion
膜拜一下tomaswang.怎么16楼的链接删除了?谁有给发一个啊..

2013-1-24 13:55 颖颍
我了个擦,我那个主号怎么还没解冻啊?

2013-1-25 02:36 周瑜
限制发言用户
有效期至 2012-11-6

会不会登录一次就自动解冻了。

2013-1-29 17:28 司徒苍月
没有秘钥解base64加密么。。。。。。。。。。。。:hz1030:

自动登录解封,不过么,司徒家的,走后门好了:emot31:

页: [1]
查看完整版本: Can you crack it?


Powered by Discuz! Archiver 5.0.0  © 2001-2006 Comsenz Inc.