第八题的网址: http://www.pythonchallenge.com/pc/def/integrity.html ,网站截图如下:
这道题的提示信息是“Where is the missing link?”。简单查看了一下,发现这个蜜蜂是可以响应点击事件的。我们尝试了一下,会弹出一个对话框,提示我们输入用户名和密码。但是这些信息又在哪里呢?同往常一样,查看网页源代码,看看会有什么。找到的信息如下:
<!--
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'
-->
这不就是传说中的用户名和密码嘛,不过好像经过处理了。但是我们可以从中找到一些蛛丝马迹。例如它们都是以“BZh91AY&SY”开头。这个问题就不会了,于是百度一下,发现这个帖子《聊聊Pyhon的encodings》。其中提到使用bz2编码后得到的字符串就是以“BZh91AY&SY”开头的。
bz2,zlib编码则分别使用bz2,zlib两种压缩算法对字符串进行压缩与解压缩:
>>> (”f”*1024*1024).encode(”bz2″)
‘BZh91AY&SY\x99C\xc0+\x00\x08\nA\x00\x80\x04\x01\x00\x00\x08 \x000\xcc\x05I\xeaq\x06\x01@`\x1e.\xe4\x8ap\xa1!2\x87\x80V’
>>> print len(’BZh91AY&SY\x99C\xc0+\x00\x08\nA\x00\x80\x04\x01\x00\x00\x08 \x000\xcc\x05I\xeaq\x06\x01@`\x1e.\xe4\x8ap\xa1!2\x87\x80V’.decode(”bz2″))
1048576
好了,现在大家该知道下一步怎么办了吧。奉上代码:
'''Created on 2011-7-29@author: hengha'''def bz2decode(str):return str.decode("bz2")if __name__ == '__main__':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'print bz2decode(un)print bz2decode(pw)
现在看看我们会得到什么结果:
hugefile
嗯,把得到的用户名密码填一下,试一试。哈哈,顺利进入第9题,网址是http://www.pythonchallenge.com/pc/return/good.html。