sf双十一解密答案及详解及剖析思绪

注重

由于此处文章有长度限定,本文是删减版,如需查阅完整版,请接见以下地点:

镜像一
或许
镜像二

媒介

本日上班百无聊赖的在群里发明一个风趣的链接光棍节程序员闯关秀,点开今后满身发抖大喜过望啊。
我最喜好这类挑战了。
花了一个小时的时刻,终究悉数解密。下面送上思绪和剖析以及代码。由于sf优越的前端气氛,这里悉数用JavaScript作为东西言语。
喜好python的朋侪能够拜见我另一篇用python作为示例言语的解密一个有意义的解密
话不多说,时刻珍贵,我们立马最先解密之旅吧:)
<!–more–>

第一关

光棍节程序员闯关秀第1关
《sf双十一解密答案及详解及剖析思绪》
作为一个web入门的学员,我们自然则然的直接右键检察源文件:


<html>
<head><title>光棍节程序员闯关秀第1关(统共10关)</title></head>
<body style="background: #172024; color: #54BA3E; font: 100%/1.5 Menlo, Consolas, Courier, monospace; text-align: center; padding: 10% 0 0 0">
<h2>光棍节程序员闯关秀第1关(统共10关)</h2>
<u>提醒: 从统统信息中找到进入下一关的要领</u>
<p><a style="color: #172024" href="?k=e70030d49158de95087eae6469f5319e">进入下一关</a></p> 
</body>
</html>

而实际上,我们不检察源文件也是能够的,直接在页面上ctrl+a,就能够让进入下一关的链接变蓝,直接点击即可。

第二关

光棍节程序员闯关秀第2关
这一关同上,我们也是先直接右键检察源文件,荣幸的是,它写在了解释里。

<html>
<head><title>光棍节程序员闯关秀第2关(统共10关)</title></head>
<body style="background: #172024; color: #54BA3E; font: 100%/1.5 Menlo, Consolas, Courier, monospace; text-align: center; padding: 10% 0 0 0">
<h2>光棍节程序员闯关秀第2关(统共10关)</h2>
<!-- 不错嘛,暗码在此:4c29dbaf326fe76232390dac0917e921 -->
<!-- 强插广告: 迎接接见 http://segmentfault.com 或许 http://sf.gg -->
<p>暗码在哪呢?</p>
<form><input autocomplete="off" placeholder="输入暗码" name="k" /></form>
<p><a style="color: #172024" href="javascript:alert('你太无邪了');">进入下一关</a></p> 
</body>
</html>

我们复制出暗码,然后填在上面网址的k=背面,k参数应该是代表key,也就是暗码的意义。在今后的几关里我们都是用这类要领来完成跳转。

第三关

光棍节程序员闯关秀第3关

页面上说,这关就没有那末简朴了。不言而喻的,我们照样检察源代码,然则他们此次没有给我们任何提醒,一无所得。
这一关才最先登堂入室了,我们开动大脑想想,这个暗码会藏在那里呢?
开动脑洞剖析吧:

  1. cookies

  2. Storage

  3. css

  4. http头

  5. console

我们一项一项,终究在http头里找到了疑似暗码的字段:

Content-Encoding:gzip
Content-Type:text/html; charset=UTF-8
Date:Fri, 11 Nov 2016 05:23:01 GMT
The-Key-Is:a87ff679a2f3e71d9181a67b7542122c
Transfer-Encoding:chunked
X-Hit:sf-web1

《sf双十一解密答案及详解及剖析思绪》
图中部份立即我们要的key。
输入网址中,我们即可来到第四关。

第四关

光棍节程序员闯关秀第4关

这一关让我们视察我们暗码的规律。
实际上不必他说我们已发明,这些暗码都是32位的,异常像一个md5有木有?
那末规律究竟是什么呢?我记得上小学的时刻就常常有这类找规律的题,我们先揣摸一下,规律多是:

  1. 当前的md5是上一个md5的效果

  2. md5是某个有规律的数的效果

我们离别测试末了我们发明

md5("4");//a87ff679a2f3e71d9181a67b7542122c

那显著易见的是,下一关5是

md5("5");//e4da3b7fbbce2345d7772b0674a318d5

着实假如种种尝试都没法猜到规律的话,另有一个撞命运运限的做法,就是我们去md5解密的网站上试一下,a87ff679a2f3e71d9181a67b7542122c
的效果为4。也能够获得雷同的结论。
然则这类要领只是一种尝尝看无法之举,由于md5是一种校验算法,已破坏了数据的原始构造,再不能够还原成本来的效果。
所谓”解密”就是穷举法,本身用md5离别加密罕见的字符串再将效果以key=value的字典体式格局保存到数据里,然后等用的时刻再从这内里查找,
看是不是有已碰撞出效果。具有很大的偶然性。

第五关

光棍节程序员闯关秀第5关
这一关最先,就变得比较难了起来。
起首看到一个二维码,我置信大多数人都和我一样,先扫为快。然则手机扫描二维码异常延误我们时刻,而且不好剖析。
我们百度搜刮在线二维码剖析,然后传上去这个图片,效果居然是:…

http://sf.gg/你被耍了什么都没有

我了个去,我还不信邪,离别测试了

md5("http://sf.gg/你被耍了什么都没有")
md5("你被耍了什么都没有")

然后又依据第三关的步骤搜检了一遍照样一无所得。
看来玄机确切就在这个图片本身上,我们下载这个图片,然后右键,概况,看看暗码会不会在这些字段里。
为难的是内里居然什么都没有…
等等,什么都没有?申明这个头片显著是以一种非正常体式格局天生的。我们用十六进制的体式格局翻开它。
此类东西有许多,此处我运用的是WinHex,发明内里有个字符串:

KEY:bdbf46a337ac08e6b4677c2826519542

它是ANSII编码的,所以能被直观的看到。也就是说,着实我们用体系自带的记事本能够看到这个字符串的。
基础不须要WinHex之类的东西。然则我这里主要要表达的是一种剖析思绪。假如它这里是用的unicode编码,或许含有中文时用的utf8编码,
用记事本就不一定有效了。
照样发起人人控制更多的窍门和思绪,效果并不主要。通关也不是目标,而是在这个历程中学到了什么东西。

第六关

光棍节程序员闯关秀第6关

f4de502e58723e6252e8856d4dc8fc3b, 只能通知你这么多

我们一样的用第三关的步骤搜检一遍,效果并没有获得有效的信息。
看来玄机就在这个字符串上了。。我们照样老样子,去解密下这个md5,然则此次就没有那末荣幸了。没有能找到对应的明文。
着实没办法了,我们只能应用壮大的搜刮引擎了。。。。
坑爹的是我们居然找到了这个,第一条:

《sf双十一解密答案及详解及剖析思绪》

看来是他防水给我们通过了,好吧,虽然我到如今都没弄邃晓这个key是怎样算出来的。。。

第七关

光棍节程序员闯关秀第7关

有题目就Google是个好习惯! 再尝尝 ba9b101dd284c566b78042d278e422bd

好吧,看来上题本意就是让我们谷歌啊。好吧,我们就依据他说的,继承谷歌ba9b101dd284c566b78042d278e422bd
然则时刻过的很快夜幕就要来临,我们照样没有找到有效的信息。
好吧,我们注重下,再尝尝背面有个空格,有无能够不是让我们试背面的关键词的呢,那背面的关键词又是什么?

第八关

光棍节程序员闯关秀第8关

上一关让我们进修到了听话并非一个好习惯。闻一知十横冲直撞何等主要,昔时孙悟空如果没邃晓那三下,说不定我们如今照样唐代。。
这一关他说

有时刻事变就是这么简朴
钥匙就在手里, 门却不知所踪

我放佛看到了他嘴角嘲弄的笑。嗯,忍了。
我们一样检察源文件,

<html>
<head><title>光棍节程序员闯关秀第8关(统共10关)</title></head>
<body style="background: #172024; color: #54BA3E; font: 100%/1.5 Menlo, Consolas, Courier, monospace; text-align: center; padding: 10% 0 0 0">
<h2>光棍节程序员闯关秀第8关(统共10关)</h2>
<p>有时刻事变就是这么简朴</p>
<p>钥匙就在手里, 门却不知所踪</p>
<form method="GET">
<input type="text" name="k" value="f57c633b47691a70744a04128e491c32" />
</form> 
</body>
</html>

一看我们就笑了。

《sf双十一解密答案及详解及剖析思绪》
那末大的GET,你当我傻啊。我们把这个GET改成POST,回车一下,轻松过关。

第九关

光棍节程序员闯关秀第9关
嚯,这一关厉害了。目测大多数人要栽了。这一关也是最难的一关,也是我要写本文的目标。
关于一个平常的web前端来讲多是有些难了,由于这内里牵涉到许多别的的学问。幸而我不是一个前端。
《sf双十一解密答案及详解及剖析思绪》
然则我已看破了统统!
起首 0 1 0 1 这类的显著是组二进制,下面有缺失的部份,我们先不论,我们先看看前面几个,翻开计算器,把这些二进制转几个到十进制看看。
发明它们满是位于ascii表的可见字符局限。

32-126(共95个)是字符(32是空格),个中48-57为0到9十个阿拉伯数字。
65-90为26个大写英文字母,97-122号为26个小写英文字母,其他为一些标点标记、运算标记等。

大学c言语入门课程,人人要记牢,今后用的处所许多。
我们试着译出前面不缺失的这部份,效果为

q6GDLaJ4yq9A7xFAnxyvsc/AT

我去,这什么鬼,这么长的部份显著不是key,那是什么呢?而且杂乱无章的像个密文。倘使它是个密文,它又是什么加密的?
我们注重到中心有个/,我们所知的BASE64码中心能够涌现`,而且依据base64`的道理,它末了加密效果一定能被4整除。
我们看了下,共有8112组2进制数据,是个能被4整除的数。一样的,据其道理,假如原字符串的长度不足,能够要在末了补一到两个等号。
有了以上这些线索,我们直接去末了一个二进制看看是不是是等号。
然则末了一个倒是00____01,很显著是须要我们补齐中心四位的。看来这就是算____所代表数的契机啊。看来我们的路子走对了!!
下面我们在console上实行:

let code ="=".charCodeAt();
console.log(code);//61
console.log(code.toString(2));
VM335:2 61
VM335:3 111101

由此可知____代表的应该是1111。哈哈,到时相符主题:双十一。
由此,我们已嗅到了成功的气味,想必立时能够到末了一关了。
《sf双十一解密答案及详解及剖析思绪》
我们把上面的二进制列表复制下来,用替代,来编辑成一个数组:

接下来我们百度一个在线base64解密东西。
等等,解密出来是一串乱码?

《sf双十一解密答案及详解及剖析思绪》

对嘛,这么长的一个base64显著内里不是只要一个key啊。能够须要经由我们再次加工,那末既然它不是一个字符串,很有多是个文件。
因而我们挑选

《sf双十一解密答案及详解及剖析思绪》

解密为16进制显现,然后我们注重下效果内里的1f 8b 08,统统二进制文件的头部的几个字节都是文件头,平常作为辨认文件用。
我们百度文件头大全,然后发明1f 8b 08代表它是一个gz文件。
那接下来我们纯真运用控制台是不行了,我们用node环境来把这个buff输出到一个文件中去。

var b = new Buffer(str, 'base64');
var fs= require('fs');
fs.writeFileSync("test.gz", b);

然后用一个解压缩东西解压后,即可获得一个图片:
《sf双十一解密答案及详解及剖析思绪》
为啥这个女的有点眼熟呢?好啦不论了,横竖它上面的就是暗码,我们敲下来完成这一关。

第十关

祝贺, 你已通过了统统关卡

然则第十关居然是个广告。。好吧!

结语

写这篇文章用了我好几个小时的时刻,键盘都敲碎了,大哥们还不支持下?嘿嘿嘿。

    原文作者:rozbo
    原文地址: https://segmentfault.com/a/1190000007453315
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞