0%

Python Challenge (Level 6)

第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

90052.txt里面是 Next nothing is 94191, 看来有点像urllib那一关, 不断寻找下一个txt

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import re
import zipfile

next_num = '90052'
ext = '.txt'

zf = zipfile.ZipFile('channel.zip')
pat = re.compile('Next nothing is (\d+)')

while True:
text = zf.read(next_num + ext)
print text
next_num = pat.findall(text)
if next_num:
next_num = next_num[0]
else:
break

看到最后一个文件的提示 **Collect the comments.** 看来还要把每个文件的comment弄出来。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import re
import zipfile

next_num = '90052'
ext = '.txt'

zf = zipfile.ZipFile('channel.zip')
pat = re.compile('Next nothing is (\d+)')
comment = ""
while True:
text = zf.read(next_num + ext)
zinfo = zf.getinfo(next_num + ext)
comment += zinfo.comment
print text
next_num = pat.findall(text)
if next_num:
next_num = next_num[0]
else:
break

print comment

打印出来是这个样子的

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
'''
****************************************************************
****************************************************************
** **
** OO OO XX YYYY GG GG EEEEEE NN NN **
** OO OO XXXXXX YYYYYY GG GG EEEEEE NN NN **
** OO OO XXX XXX YYY YY GG GG EE NN NN **
** OOOOOOOO XX XX YY GGG EEEEE NNNN **
** OOOOOOOO XX XX YY GGG EEEEE NN **
** OO OO XXX XXX YYY YY GG GG EE NN **
** OO OO XXXXXX YYYYYY GG GG EEEEEE NN **
** OO OO XX YYYY GG GG EEEEEE NN **
** **
****************************************************************
**************************************************************
'''

好像就是这个HOCKEY了, 但是 http://www.pythonchallenge.com/pc/def/hockey.html 这里只有一句话

it’s in the air. look at the letters.

原来组成HOCKEY的字母才是答案——oxygen(氧,in the air).