Python3 解谜挑战 关卡五

PythonChallenge.png

查看上一关过关方法

关卡五:peak hell Pickle

Python3 解谜挑战 关卡五_第1张图片
5.png

提示
   图片中的文字为:发音。此处线索不明朗。依旧查看网页源码:

Python3 解谜挑战 关卡五_第2张图片
tips.png

从上图红色文字:peak hell的发音听起来是否熟悉。其发音和python的包名Pickle的发音很是相似。Pickle实现序列化和反序列化,把数据结构转换成字符串 ,可以保存到文件,方便下次快速恢复,也可以通过网络传输。
   目前为止,线索依然不足够解决问题。点击绿框的“banner.p”,查看内容。

tips.png

根据内容可知,很类似于Pickle序列化后的内容。下面是程序:

import pickle #引入一个序列化和反序列化的包
import urllib.request as urlre
file = urlre.urlopen('http://www.pythonchallenge.com/pc/def/banner.p')
dr = b''#必须是二进制文件
for jsr in file:
    dr += jsr#将banner.p中的所有序列化字符合为一个整体
start = pickle.loads(dr)#反序列化
for gh in start:
    print(gh)#反序列化的内容

上述程序运行后的结果如下:

Python3 解谜挑战 关卡五_第3张图片
tips.png

根据结果看,内容包括很多空格、井号以及数字。后面的数字可能是前面相应符号的个数,查看真正的输出内容:

#将序列化的内容输出
for jj in pickle.loads(dr):
    cc = ''
    for hh in jj:
        cc += hh[0] * hh[1]
    print(cc)

输出结果见下图:

Python3 解谜挑战 关卡五_第4张图片
result.png

可看出输出的单词为:channel。将浏览器地址的peak.html改为channel.html即可进入下一关。

不定期更新,欢迎留言,敬请关注!!!

你可能感兴趣的:(Python3 解谜挑战 关卡五)