这一关没整出来,看了攻略才知道要利用调色板神马的……
首先下载zigzag.gif,这时候每个像素的上的信息是调色板的索引号。然后就需要用实际的颜色替换索引号得到等价的图片信息:
import Image,string,bz2,keyword
f = Image.open('zigzag.gif')
fd = f.tostring()
fp = f.palette.getdata()[1][::3]
trans = string.maketrans(''.join([chr(i) for i in range(256)]), fp)
ftran = fd.translate(trans)
其次将两块信息对比,找出不同的位置,记录上面的信息,并标记坐标位置。完成后对记录的信息解码。
diff = ['','']
img = Image.new('1',f.size,0)
for i in range(1,len(fd)):
if fd[i]!=ftran[i-1]:
diff[0]+=fd[i]
diff[1]+=ftran[i-1]
img.putpixel(((i-1)%f.size[0],(i-1)/f.size[0]),1)
img.save('out27.png')
text = bz2.decompress(diff[0])
利用bz2解码的结果是一大段文本,而坐标位置构成的图片是:
最后就是将该文本中的python关键字提出,就可以得到最终的结果了:
for i in text.split():
if not keyword.iskeyword(i):
print i
结果为:
../ring/bell.html
repeat
switch
(重复的就省略了)