解密:二叉树的秘密

Posted 编程技术宇宙

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了解密:二叉树的秘密相关的知识,希望对你有一定的参考价值。

昨天的万粉闯关活动让我始料未及,推文才刚刚发出十分钟左右,阳光普照奖就被抢完了,不到两小时,五个关卡所有红包也被清空,读者真是卧虎藏龙,高手如云啊~

是这次的题目太简单了吗?下一次增加点难度?

好啦,按照惯例,来解密一下昨天的关卡。

第一关

看看这棵二叉树,关键词已经提醒的很明显了,遍历!

解密:二叉树的秘密
关键词:二叉树遍历,注意大小写

看看左下角的http,很明显这是一个URL,再观察h-t-t-p出现的顺序,可知道这是后续遍历的出场方式,所以第一关就很简单了,后续遍历一下这棵二叉树,答案就能揭晓:

http://suo.im/6bZxgm

其中要注意的是字母Z是大写的,这一点,在图片的提示中也有说明,不少人直接都是小写自然是打不开的。请不要放过给出的每一句提示!

打开这个URL,第一关告破:

解密:二叉树的秘密

第二关

拿到第一关口令的同时,第二关的入口也就浮出水面了:

https://www.cnblogs.com/xuanyuan/p/13275248.html

打开看看:

解密:二叉树的秘密

第二关的题目,我放在了我的博客园文章里,这篇文章是隐藏状态,在我的博客园主页是直接看不到的哦,不然就提前暴露了。

题目是要找到这8个链接对应的微信公众账号,然后根据要求找到对应的文章,将标题组合起来形成第二关的口令。

解密:二叉树的秘密

这里推荐一个叫“草料二维码”的网站,它可以用来制作美化二维码、解析二维码。

解密:二叉树的秘密
解密:二叉树的秘密

所以这个题目的灵感来源就来了。

  • 业余码农
  • 我是程序员小贱
  • IT人的职场进阶
  • 小林Coding
  • 后端技术学堂
  • 泰斗贤若如
  • 码海
  • 后端技术指南针

按照题目要求,名字最短的,就是『码海』了,名字包含“南”字的就是『后端技术指南针』了。

解密:二叉树的秘密

『码海』2020年第一篇文章:

『后端技术指南针』2019年最后一篇文章:

口令分别取前五个字,答案就是:一文学会链从生日悖论

第三关

第二关的题目末尾给出了第三关的入口,这是一个百度网盘的链接,打开后,这是一个pcap格式的数据包。

解密:二叉树的秘密

是时候祭出神器wireshark了:

解密:二叉树的秘密

这里,为了降低难度,数据包已经被我简化,只包含一个一问一答的HTTP会话流量。

抛开TCP的三次握手和四次挥手和中间的ACK包,实际包含数据的就是一个HTTP请求包和一个HTTP响应包。

观察GET包的URL路径:

解密:二叉树的秘密

名为third_token,顾名思义,就是向服务器请求第三关的口令。很自然的想到,答案会在响应包中:

解密:二叉树的秘密

Response的正文是一段未知编码的数据,联想到之前口令红包都是中文,这里不妨使用wireshark对其进行解码:

解密:二叉树的秘密

第三关口令唾手可得。

彩蛋关1

上一篇推文提到,本次活动有2个隐藏的彩蛋关卡,其实都藏在这个数据包中。

看一下上面数据包中的那个GET请求:

解密:二叉树的秘密

注意,在Refer字段中,又有一个百度网盘的链接,code字段是提取码,打开看看:

解密:二叉树的秘密

又是一个名为color-egg1.pcap的数据包,下载后用wireshark再次打开。

同样为了简化,这里也只有一个HTTP会话的流量。

解密:二叉树的秘密

请求的URL是img,可猜想这是在请求一个图片,来看看响应包如何?

解密:二叉树的秘密

响应包乃是一段二进制数据,查看Content-Type字段,数据被gzip进行了压缩。想获知原始数据,需先解压。

这里wireshark神器又要大显威力了,先看原始数据:

解密:二叉树的秘密

在Decode as一栏中选择被压缩过Compressed,看到原始数据:

解密:二叉树的秘密

注意熟悉的PNG又来了,接着在show as一栏选择图像:

解密:二叉树的秘密

彩蛋关1宣布告破!

彩蛋关2

第二个彩蛋依然隐藏在第三关的那个数据包中,咱们再回过头去看看:

解密:二叉树的秘密

除了Refer,这一次我们把目光聚焦在Cookie字段,这是一段经过编码的数据,首先不管三七二十一,先怀疑base64编码,来解一下:

解密:二叉树的秘密

又是一个百度网盘的链接:

解密:二叉树的秘密

这次是一个exe可执行程序,需要一个Windows电脑系统,下载开来运行:

解密:二叉树的秘密

就一个很简单的问题,32位无符号数能表示的最大斐波那契数是什么?

那就写个程序来推导一下便可,利用斐波那契数列从第三项开始每一项都是前两项和的定义,依次往后推导:

1 1 2 3 5 8 13 21 ······

32位无符号数最大能表示多大?

0xFFFFFFFF,也就是4294967295,在推导的过程中,直到遇到比其更大的数,便停下来。就能得到答案:

2971215073

输入,即可获得口令:

解密:二叉树的秘密

对于有程序破解基础的朋友,又不想写代码去推导,那直接上神器IDA,逆向分析,刀斧加身,找到判断逻辑关键函数

解密:二叉树的秘密

修改这条关键的跳转指令,也能一蹴而就。

解密:二叉树的秘密

最后的话

没想到我的读者里高手如云,一会儿功夫就攻城拔寨,势如破竹。这里要向好不容易破解了题目却因为晚了一步红包被领完的读者们说声抱歉,你们忙活半天却空手而归,轩辕财力有限,红包数量不多,多多谅解,以后挣了钱,咱再多发一点。

所以~

所以多多转发分享呀~

往期TOP5文章

以上是关于解密:二叉树的秘密的主要内容,如果未能解决你的问题,请参考以下文章

数据结构《四》二叉树的实现

数据结构《四》二叉树的实现

完全二叉树与满二叉树的区别是啥?

二叉树(2.二叉树的遍历和实现)

树与二叉树数据结构详解

数据结构二叉树的基本操作~~~~