我大学剩下一年半的生活(九)——pythonchallenge之level8

python challenge level 8 url: http://www.pythonchallenge.com/pc/def/integrity.htmlhtml

level8的题目真的把我囧到了,为何在那张图上的动物叫做蜜蜂?我以为应该叫苍蝇阿!!!不信的话使用google搜索“fly”的图片,这绝对是只苍蝇阿~~~算了,这个问题就不纠结了,这个题其实不算是我本身作出来的,由于在网上想搜索一些信息的时候全是这一题的答案。。。虽然这道题不算是我作出来的,不过能够对这道题分析一下。python

首先,这个页面的提示告诉咱们在页面上有连接,可是不知道在那,因而我就打开了页面的源代码,发现了<map>标签,这就是这道题的连接所在。这个连接的位置在所谓蜜蜂的翅膀附近,点击以后会获得一个对话框,提示输入密码和用户名,还有一句:“The site says: "inflate"”。再次回到源代码中,在代码的最下方有一段注释,这段注释中给出了用户名(un)和密码(pw)。不过这些信息都不是原始的字符串,而是通过处理的一段字符串,颇有多是通过转换编码或者是加密以后的字符串。我在最开始的时候觉得这是使用的unicode的编码方式,可是后来我发现不对,这并非unicode的编码方式,在这两段字符串的开头都有一段奇怪的字符串,因而我就想搜索一下这段字符串,看看这段字符串是否是有什么特殊的意义,最后搜索的结果是所有都是这道题的解答。。。google

这段奇怪的字符串实际上是bzip2压缩格式的开头(其余blog上说是google说的,可是我找到的只有这些blog),因此只须要使用python中的bz2模块来解压这两个字符串就好了。编码

#! /usr/bin/env python
'''python challenge level 8
question url: http://www.pythonchallenge.com/pc/def/integrity.html
answer url: http://www.pythonchallenge.com/pcc/return/good.html:huge:file
'''
un = 'BZh91AY&SYA\xaf\x82\r\x00\x00\x01\x01\x80\x02\xc0\x02\x00 \x00!\x9ah3M\x07<]\xc9\x14\xe1BA\x06\xbe\x084'
pw = 'BZh91AY&SY\x94$|\x0e\x00\x00\x00\x81\x00\x03$ \x00!\x9ah3M\x13<]\xc9\x14\xe1BBP\x91\xf08'

import  bz2
print "user name:", bz2.decompress(un)
print "password:", bz2.decompress(pw)

这样就能够获得user name: huge、password: file这两条输出。当咱们在点击“蜜蜂”翅膀的时候输入对应的信息就能够到下一题去了。下一题的连接为:http://www.pythonchallenge.com/pc/return/good.html加密

答案的连接为:http://www.pythonchallenge.com/pcc/return/good.html,能够参考一下答案的解答。url