Python Challenge(8--9关)——我的解题报告(running with python3.x)

来源:互联网 发布:社交软件盈利模式 编辑:程序博客网 时间:2024/04/30 19:36

前面关卡的结题报告在这里http://blog.csdn.net/richytang/article/details/12288135(第6-7关)

第8关:http://www.pythonchallenge.com/pc/def/integrity.html

        这关的名字叫做working hard?鉴于上一关的难度,这关我做好了应对大麻烦的心理。结果这关...至少比前一关简单太多了。

        那么开始分析。题目给的是一张蜜蜂图片(bee?)。再去查看网页源代码,发现有一些有趣的东西:图片中间的一部分是可以点击的。点击之后给了一个对话框,提示输入用户名和密码,还有一句“来自网页的提醒:“inflate””。除此之外,源代码下方的注释给了两行重要的信息:un和ps。这不是username和password的简写么?那么我们要做的就是把那一堆东西转换成un和pw了。那一堆是什么呢?unicode编码?挺像,但不是。开头有个BZ,而熟悉linux的用户,linux下流行的压缩的格式之一是bz2。那么好了,查一下python处理bz2格式的模块吧。

        help一下,bz2中有用的一个是bz2.BZ2File()。处理.bz2格式的问价。而像我们这样处理一个给好的序列,直接调用decompress方法就行。不过对于python3.x,参数要给成bytes格式。下面是代码:

import bz2un=b'BZh91AY&SYA\xaf\x82\r\x00\x00\x01\x01\x80\x02\xc0\x02\x00 \x00!\x9ah3M\x07<]\xc9\x14\xe1BA\x06\xbe\x084'pw=b'BZh91AY&SY\x94$|\x0e\x00\x00\x00\x81\x00\x03$ \x00!\x9ah3M\x13<]\xc9\x14\xe1BBP\x91\xf08'username = bz2.decompress(un)password = bz2.decompress(pw)print(username,password)
        注意,一定要在序列前面加上b表示是bytes类型。输出是huge和file。我们把这个输入到登录窗口,顺利跳到下一关了~

第9关:http://www.pythonchallenge.com/pc/return/good.html

        这关的提示很充足。页面上有一些黑点,那么把这些黑点连接起来会怎么样?源代码中给出了足够的线索:title是connect the dots,下面是两堆数和一个提示:first+second。我当时对着数发呆了一会,结果无意中发现一点:第一组数,前两个和最后两个是一样的。那么会不会是两个两个是一组表示坐标?然后随便看看中间的数,经常有x方向或y方向是一样的(横线或竖线)。那么试一试吧,我们还用之前的那个PIL库来画一下(画法是在网上查到的),使用PIL的ImageDraw库,并用ImageDraw.line方法。只是我比较疑惑的是为什么不按照元组传递参数就可以:

from PIL import ImageDraw,Image  img = Image.new('RGB', (640,480))  draw = ImageDraw.Draw(img)  draw.line(first)  draw.line(second)  img.show()img.save('ans9.jpg')

         答案是:

        牛?公的?试试bull,好的,没错,下一关是:http://www.pythonchallenge.com/pc/return/bull.html