0%

第15关

图片是一月份的日历,Page Source里提示

he ain’t the youngest, he is the second
todo: buy flowers for tomorrow

首先, todo是要为明天买花,所以明天(01-27)应该是某个纪念日。然后,他不是最年轻的,只是第二。怎么判断这个他是第二年轻呢,我们需要找到哪一年。可惜,年份中间两个字没有了,只能看出是1xx6. 显然,我们要根据这一页日历推算出年份。

看图片的右下角,有两个小的月份日历,应该是对应着前一个和后一个月。所以,右边的应该是二月的。放大后,我们会发现,这个二月比较特殊,有29天,所以这应该是闰年。

但是,这样筛选出来的依然不对。我们还有信息没用到,那就是日期(date)和星期几(weekday)的对应关系。也就是说,1月27是星期二这个信息我们可以用。至此,可以得到这个日期了。

阅读全文 »

第14关
一个螺旋状的面包,网页title是walk around, 再加上大图的下面有一张100*100的小图。小图看不出是什么东西,只有竖条纹。把小图保存到本地,放大后发现很长的一条线,也就是说它并不是100*100的,而是10000*1的。只是在网页上被reshape成100*100而已。看来我们需要将这10000个像素,按照面包螺旋的形状,把它重新排列成100*100的大小。

比如[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16]排列成

1  12  11  10
2  13  16   9
3  14  15   8
4   5   6   7
阅读全文 »

第13关

图片下面提示phone that evil, 似乎要找到evil的number. 点击图片上电话的5键,会跳到一个新网页。但好像有些问题。

This XML file does not appear to have any style information associated with it. The document tree is shown below.

没什么头绪,网上大神提示说要用到xmlrpclib. 根据维基百科上的介绍,XML-RPC是一个远程过程调用的分布式计算协议,通过XML将调用函数封装,并使用HTTP协议作为传送机制。

没用过这些东西,不太了解,只能慢慢尝试。在xmlrpclib的官方手册页面上,我们可以看到ServerProxy Objects的system属性下面有listMethods这个方法

ServerProxy.system.listMethods()
This method returns a list of strings, one for each (non-system) method supported by the XML-RPC server.

阅读全文 »

第12关

这一关需要写的代码只有短短几行,前提是你能解开所有的谜题。

刚看到图片时,以为还是用到图像处理模块,后来发现没有用。 注意Page Source里面是evil1.jpg 而不是evil.jpg, 多了个1,根据一路通关过来的规律,有1我们就看下有没有2. 把链接后面改为evil2.jpg, 会看到一张图片, 上面写着

not jpg –.gfx

阅读全文 »

第11关

一张模糊的图片, 网页标题是odd even. 图片看起来像是由不同的图片叠加得到的, 要按照odd, even像素把它分开. 仍然是要用到Pillow模块. 为了方便分割, 我还用到了numpy

阅读全文 »

第10关

图片下面提示算a[30]的长度. 点击图片上的牛, 会看到

a = [1, 11, 21, 1211, 111221,

明显, 这是要找出a的规律, 算出a[30]. 想了很久, 智商不够, 完全看不出有什么规律. 照旧找网上的大神, 得到规律.

阅读全文 »

第9关
图片上散落着一些黑点, 网页title提示connect the dots. 看来还是要用到图像处理模块——Pillow

Page Source里有first和second两组数据,看起来似乎是两组坐标[x1, y1, x2, y2, …]. Pillow里面的**ImageDraw**有Draw.line方法, 参数格式与first, second的格式吻合。

阅读全文 »

第8关
图片上是蜜蜂采蜜, 网页的标题是”work hard?”。 点击图片会要求输入用户名和密码. 查看Page Source, 下面有两行提示信息, 可以看出应该是username(un)和password(pw), 但看不出内容是什么.

网上的大神解释说(work hard? ==> busy),要用bz2模块。解压两个字符串可以得到信息

1
2
3
4
5
import bz2
un = 'BZh91AY&SYA\xaf\x82\r\x00\x00\x01\x01\x80\x02\xc0\x02\x00 \x00!\x9ah3M\x07<]\xc9\x14\xe1BA\x06\xbe\x084'
pw = 'BZh91AY&SY\x94$|\x0e\x00\x00\x00\x81\x00\x03$ \x00!\x9ah3M\x13<]\xc9\x14\xe1BBP\x91\xf08'

print bz2.decompress(un), bz2.decompress(pw)
阅读全文 »

第7关
依旧是一张图片, Page Source里没有什么提示信息。图片中间有一块灰度图像,答案应该就在这一块特别的图像里了。网上的答案提到用GIMP可以得到中间灰度图像的位置, 也可以观察出后面会用到的step=7, 也就是水平方向每7个像素点采样一次。可以看到垂直方向上的像素值是一样的,所以y坐标在[y_min, y_max]中取一个好了。 将这一块图像的像素转换为ASCII字符就可以得到通关信息。灰度图像的RGB三个chanel的值是一样的,所以取一个chanel就可以了,这里取得是R通道,也就是[0]

获取图像的像素值用到 Pillow模块

阅读全文 »

第6关

这一关挺有意思的, 绕了好几重。 图片上面是一条拉链, Page Source里面有zip的提示。所以这一关会用到zipfile模块。

把URL里的channel换成zip,结果出现这个

yes. find the zip

网上搜一下答案, 原来是要把html改成zip, 再下载zip文件。下载得到的zip文件里有个readme.txt

welcome to my zipped list.

hint1: start from 90052
hint2: answer is inside the zip

阅读全文 »