第十三题的地址是: http://www.pythonchallenge.com/pc/return/evil.html
在HTML代码中找线索,只有一个evil1.jpg,输入到地址栏中替换,得到图片,但是依旧不知道谜题是什么。
我们试一下evil2.jpg,得到如下的图
继续尝试evil3.jpg,得到如下的图
所以,我们在地址栏中输入evil2.gfx,下载得到一个evil2.gfx文件。
然后我们继续尝试evil4.jpg,在浏览器中图片居然是破损的,一开始以为就是个错误,搜索后发现还是有信息遗漏,改用命令行执行。如下。
把之前题目中用于通关的用户名和密码输进去,得到一句话 Bert is evil! go back!
然后我们读取文件,并查看输出。
filename = 'C:\Python27\evil2.gfx'
f = open(filename, 'rb')
print f.name
print f.fileno()
data = f.read()
print data
用pyCharm得到一大串乱码,不知该用什么方法解析。
重新尝试在命令行中运行相同代码,得到如下的结果。截取
接着回到最开始题目出现的图片,扑克被分成了5堆,猜测文件内含有5份不同的文件。
终于得到线索,可以看到按照1,2,3,4,5 分发扑克的顺序截取一段值,出现不同的关键词,如JFIF, PNG, GIF, PNG, JFIF,我们可以肯定有两份jpg,两份png,一份gif,都是图片的文件格式。
filename = 'C:\Python27\evil2.gfx'
f = open(filename, 'rb').read()
types = ['jpg','png','gif','png','jpg']
for i in range(5):
open('C:\Python27\evil2%d.%s' % (i, types[i]),'wb').write(f[i::5])
然后我们得到5份文件
第四张图显示又出现问题,实在找不出原因,最后搜索得到通关密码,'dis','pro','port','ional',最后的'ity'被划去了不算。 disproportional。