完成这一关后,不得不佩服弄出这道题的Nadav Samet,同时更加佩服解决了它的大神。
这是一幅拼图模样的图片,根据Page Source里的提示can you see the waves?,这一关还要用到wave模块。
把URL后缀改为lake1.wav,lake2.wav,…,lake25会得到25个wav文件。这25个wav文件对应着刚才的25块拼图。把这25个wav文件的内容依次平起来,会得到一张300*300大小的图片。
这一关是一张迷宫图片,看来是要解这个迷宫。
根据网页标题,迷宫是from top to bottom,黑色像素是路径,白色像素是墙。这张图片大小为641×641,入口在右上角(0, 639), 出口是左下角(640, 1)。
解迷宫可以用BFS,也可以用DFS,但DFS不能保证是最短的路径。我用的是BFS. 查了下网上其他人的攻略,发现DFS也能得到同样结果,看来应该是只有一条路径吧。
迷宫的路径的Green、Blue通道都是0,而Red通道会0和非0交替。把非0值收集起来,写到文件,就可以得到zip文件。解压后,得到一张图片,包含通关信息——lake。里面还有mybroken.zip,暂时不知道有何用。
网页title是what is this module?,Page Source里面有这么一句:‘va gur snpr bs jung?’,看起来有点像string.translate那一关。搜索一下这句话,就会看到得到通关信息。要用到this模块,this就是一个模块名。根据this.py的内容,得到translate的规则是平移13位。
1 | import this |
得到in the face of what,对应import this时打印出来的一串信息,what就是ambiguity. http://www.pythonchallenge.com/pc/hex/ambiguity.html
根据Page Source里的提示,得到一张图片white.gif
这是一张动态图,基本上都是黑的像素,但标题却是white.gif. 查看一下每一帧的像素,会发现每一帧有一个值为8的像素点。动态图中,就是这个白的像素点在动,记下每一点的坐标,得到
1 | array([[100, 100], |
这些坐标都在(100,100)附近。结合这一关的图片上的摇杆,可以判断出这些坐标表示的是摇杆的方向,(100,100)就是原点。
得到的坐标中(100,100)出现了五次,我们可以据此将坐标分为五组,每一组画出一个图案。每画出一个图案,就要更改一下坐标位置,否则,五个图案就会重叠在一起。
###第21关
这一关不再是给出一个网址然后解谜,而是用到上一关得到文件——package.pack以及readme.txt, readme有关于这一关的提示:
We used to play this game when we were kids
When I had no idea what to do, I looked backwards.
这一关主要过程是对package.pack文件不断进行解压。根据上一次解压得到的结果,判断下一次解压用zlib还是bz2,以及判断得到的数据是正向的还是要look backwards.
最后解压出来的结果是sgol ruoy ta kool, reverse一下得到look at your logs
也就是说,每次解压的时候,我们要添加一些信息,形成logs. 最后,我们把这个logs打印出来,就可以得到通关信息。
一张印度的地图,好像没什么有用的信息。Page Source里面有一大段字符串。再根据里面的提示
Content-type: audio/x-wav; name=”indian.wav”
Content-transfer-encoding: base64
不难想出是要把这一段字符串decode,得到wav音频,然后听听里面有什么信息。这里用到base64
1 | msg = "" #这里补上Page Source里的字符串 |
得到sorry 但是不对,只看到这个
- “what are you apologizing for?”
看到两张很相似的图片,再根据提示can you tell the difference,很容易就会想到两张图相减,看看结果是什么。很遗憾,得到的结果还是一张类似的图片,没有通关信息。
Page Source里面有提示
it is more obvious that what you might think
这里that应该是than!?,也就是说,我们似乎想得太复杂了。左右两张图图像内容是一样的,只是亮度不同。亮度->brightness。URl换为brightness,但是好像没什么变化。View Page Source你就会发现提示信息变了
maybe consider deltas.gz