0%

第25关

完成这一关后,不得不佩服弄出这道题的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大小的图片。

阅读全文 »

第24关

这一关是一张迷宫图片,看来是要解这个迷宫。

根据网页标题,迷宫是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,暂时不知道有何用。

阅读全文 »

第23关

网页title是what is this module?,Page Source里面有这么一句:‘va gur snpr bs jung?’,看起来有点像string.translate那一关。搜索一下这句话,就会看到得到通关信息。要用到this模块,this就是一个模块名。根据this.py的内容,得到translate的规则是平移13位。

1
2
3
4
5
6
7
8
import this
import string

msg = 'va gur snpr bs jung'
frm = string.ascii_lowercase
to = string.ascii_lowercase[13:] + string.ascii_lowercase[0:13]
table = string.maketrans(frm, to)
print msg.translate(table)

得到in the face of what,对应import this时打印出来的一串信息,what就是ambiguity. http://www.pythonchallenge.com/pc/hex/ambiguity.html

第22关

根据Page Source里的提示,得到一张图片white.gif

这是一张动态图,基本上都是黑的像素,但标题却是white.gif. 查看一下每一帧的像素,会发现每一帧有一个值为8的像素点。动态图中,就是这个白的像素点在动,记下每一点的坐标,得到

1
2
3
4
5
6
7
8
9
10
array([[100, 100],
[100, 102],
[100, 102],
[100, 102],
[100, 102],
[100, 102],
[100, 102],
[100, 102],
[100, 102],
...

这些坐标都在(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打印出来,就可以得到通关信息。

阅读全文 »

第20关

这一关要用到httplib.很遗憾我对于HTTP以及httplib的了解几乎为零,只能找下网上的解题方法。这个外国人写的解题过程非常详细。

看了解题过程后,总结一下主要有三个步骤:

  • 从小到大修改请求的headers中的content-range,得到提示:invader
  • 从大到小修改请求的headers中的content-range,得到密码redavni(即invader的reverse)。同时,还得到一个zip文件
  • 用密码将zip文件解压,即可通关

好吧,也许看完上面三个步骤你还是不知所云。下面一步一步详细解释一下。

阅读全文 »

第19关

一张印度的地图,好像没什么有用的信息。Page Source里面有一大段字符串。再根据里面的提示

Content-type: audio/x-wav; name=”indian.wav”
Content-transfer-encoding: base64

不难想出是要把这一段字符串decode,得到wav音频,然后听听里面有什么信息。这里用到base64

1
2
msg = ""  #这里补上Page Source里的字符串
open('indian.wav', 'wb').write(base64.decodestring(msg))

得到sorry 但是不对,只看到这个

- “what are you apologizing for?”

阅读全文 »

第18关

看到两张很相似的图片,再根据提示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

阅读全文 »

第17关

这一关颇为复杂,所以我不打算写太多探索的过程(其实也没怎么探索,基本是看网上答案的),简略解释一下过程。

先把可能用到的库给出来,后面的代码就不再重复了。

1
2
3
4
5
6
from urllib2 import Request, build_opener, HTTPCookieProcessor, HTTPHandler
import urllib
import cookielib
import re
import bz2
import xmlrpclib
阅读全文 »

第16关

一张杂乱无章的图片,我们把它放大后会发现它的每一行都有一小段紫色的像素。然后网页的title是let me get this straight. 那我们就把每一行的紫色像素都对齐,然后该行的其余像素根据与紫色像素的相对位置进行平移。其实就是循环移位,把紫色像素对齐。这里我把紫色像素移到行首。

代码用到了Numpy,这是一个很有用的科学计算库,作为Pythoner,很有必要看一下。

阅读全文 »