穿越Python Challenge(6-8)

本文详细解析了Python挑战赛中的三道难题,包括利用zipfile模块解压获取线索、从图片中提取隐藏信息及使用bz2模块解密用户名与密码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第六关 zipfile

    这一关比较有意思,我们先从页面源码看起:

    从里面可以看到这样的注释“he following has nothing to do with the riddle itself. I just thought it would be the right point to offer you to donate to the Python Challenge project. Any amount will be greatly appreciated.  -thesamet ”。从这里可以看到,下面的form体实际上对通关没有任何帮助;那么,信息在哪呢?仔细观察可以看到,<html>标记后有zip字样的注释,那么是不是跟zip压缩有关呢。我们可以尝试着将页面地址的名字替换为zip,将得到"yes. find the zip. " 显然,zip绝对与通关有关系,但却非最终谜底。我们尝试用zip替换后缀html,将得到一个压缩包。解包,将得到911个文件,其中有一个是readme文件,打开可以看到下面信息

    根据提示,从90052.txt文件开始查找有效信息,这就和第四关“数字串” 相似了,编写脚本:

    运行脚本,查看日志,将得到“Collect the comments.” 到了这一步就有点意思了,给出的提示说需要“收集comment”,那么哪里有comment呢?页面源码里?我们之前已经看到,一个注释没有意义,另一个注释提示了zip信息。显然不在页面源码里,那么究竟在哪呢?实际上还是落在了zip文件的头上。通过查阅python内带的zipfile模块,我们发现在建立压缩包时可以对每个添入的文件附加信息,因此comment应该就是指的这些信息了。再次编写脚本:

 

    运行脚本,结果如下:

    将得到“HOCKEY”字样,打开hockey.html 页面,将得到“it's in the air. look at the letters. ”可见问题还没有结束。仔细观察输出的字样,再次得到“OXYGEN”,打开oxygen.html 页面,通关!

 

第七关 Image

    这一关与图像有关。我们先看一下页面源码:

    可以看到,并没有有意义的注释信息。那么返回看页面上的图片,图片有一个“7”标志。而图片中间有一段灰色区域,可以推测信息应该包含在这段灰色区域中。既然要处理和图片有关的东西,那就应该理解一下PIL库,其中有一个Image模块可以处理图片。用GIMP打开oxygen.png图片,发现其大小为629*95,而灰色区域第一块有5个像素,接着是85个有7个像素的区段,最后是一个8个像素的区段,我们可以从第50行采样。同样我们要注意到,该图片是“RGBA”模式的,也就是说每个像素是有4个数据表示的;通过查阅Image模块的相关资料,我们发现‘L’模式是每个像素由1个在(0,255)区域的数值表示。那么我们就可以把它当做ASCII处理,编写脚本如下:


    运行脚本,得到结果“smart guy, you made it. the next level is [105, 110, 116, 101, 103, 114, 105, 116, 121]”。很显然,关键信息包含在[]的9个数值上,转换为ASCII码,脚本如下:

   运行脚本,得到单词integrity,进入页面integrity.html ,通关!

 

第八关 bz2

    图片上有一只蜜蜂,还有一条信息“Where is the missing link?”。看来这一关应该与link有关,我们先看一下页面源码:

 

    我们可以看到在源码的最后有一个注释,并分别以un和pw标志。这两个标志后的的字符串是乱码,难道它们会与link有关?不太像,如果与link有关的话,没有必要用两个标志。除此之外,我们再仔细观察页面源代码,发现图像上隐藏着点击链接“../return/good.html”。点击图片,发现需要输入用户名和密码。看来上面的两个标志是与用户名和密码有关了!如果你了解压缩算法,不难知道'BZh91AY' 实际上是bzip2算法的特征,相应的,'PK/x03/x04' 是zip算法的特征,而'/x25/xD5/b/b '则是gzip算法的特征,那么编写脚本如下:

 

    运行脚本,得到'huge'和'file',输入打开页面 ,通关!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值