pythonchallenge(七)

摘要:
我明显感觉自己的代码能力变弱了,没有涉及代码级别,也没有识别出播放学校网站的验证码;源代码中的信息只给出了网页的标题“智能”,而氧气。png”只能在图像中找到。图片中间有一个灰色区域。初步估计信息隐藏在镶嵌区域中。可以通过绘图工具获得图片的像素。然后可以提取镶嵌区域的坐标,并使用Python的image模块获得像素列表。

  转眼间又一个月没有逛博客园,明显的感觉到自己的代码能力变弱,前两周搞项目去了,只是形式上面的答辩而已,并没有涉及到代码层面,也就玩了一下验证码,没有识别玩出校器网页的验证码;转眼间又是各种考试,所幸,考试进入尾声,今天可以玩玩pythonchanllenge,一周没继续闯关,明显感觉到自己的智商余额不足,直接上题:

http://www.pythonchallenge.com/pc/def/oxygen.html

  进入这个题目,只有一张图片,源码里面的信息只给了网页的title是"smarty",图片的名字叫氧气——“oxygen.png”。那么只能在图片里面找信息,图片的内容是一条河,河边是草木,值得注意的是,图片中间有一段灰色区域,初步估计信息隐藏在这个马赛克区域内。

oxygen

   首先,利用画图工具可得出该图片的像素是:629*95,再将这段马赛克区域的坐标提取出来:

横坐标的范围是:0-609,纵坐标的范围是:43-53。

  其次,利用python的Image模块得到里面的像素列表:

1 from PIL import Image
2 
3 
4 def ques_7(img):
5     data = [img.getpixel((i, j)) for i in range(0, 609) for j in range(43, 53)]  # 横坐标在0-609中变动,纵坐标在43-53内变动
6     print data
7 
8 png = Image.open("C:\Users\wing1995\Desktop\oxygen.png", 'r')
9 ques_7(png)

  输出结果如下:

[(115, 115, 115, 255), (115, 115, 115, 255), (115, 115, 115, 255), (115, 115, 115, 255), (115, 115, 115, 255), (115, 115, 115, 255), (115, 115, 115, 255), (115, 115, 115, 255), (115, 115, 115, 255), (98, 127, 47, 255)................

  根据上述结果可知,输出的像素是一个有着4个元素的元祖列表,其中每个元组里面的第四个元素都是255,并且每个元祖重复7次,那么如何将这些输出结果与答案联系?一般情况,答案的链接都是英文字母,那么可以尝试使用函数`chr`把这些ASCII码转换为字母。

  第二次改进的代码

1 def ques_7(img):
2     data = [chr(img.getpixel((i, j))[0]) for i in range(0, 609, 7) for j in range(43, 53, 7)]  # 横坐标在0-609中变动,纵坐标在43-53内变动
3     print ''.join(data)

输出结果如下:

ssmmaarrtt  gguuyy,,  yyoouu  mmaaddee  iitt..  tthhee  nneexxtt  lleevveell  iiss  [[110055,,  111100,,  111166,,  110011,,  110033,,  111144,,  110055,,  111166,,  112211]]

嘿嘿,很明显,除去重复的字母,最后的样子显现出来。

smart guy, you made it. the next level is [105, 110, 116, 101, 103, 114, 105, 116, 121]

那么,数据就是列表[105, 110, 116, 101, 103, 114, 105, 116, 121]隐含的信息,继续将该数组中的数转化为字母,得到的单词为:integrity。

下一关的网址为:http://www.pythonchallenge.com/pc/def/integrity.html

免责声明:文章转载自《pythonchallenge(七)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇C# Thread线程介绍前端基础之JQuery下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

01 CMDB简介

目录 资产管理系统(CMDB) CMDB实现的四种方式 Agent实现方式 ssh实现方式(基于Paramiko模块) 上述两种方案对比 saltstack方式salstack的安装和配置 资产管理系统(CMDB) 提供服务器的基础信息,例如服务器的磁盘,cpu,内存等,用来搜集服务器的基础信息,并将这些信息,提供给子系统(代码发布系...

倾听程序员

     我是一名即将毕业的大学生,在不久的几个月后我将踏上程序员这一职业,今天看到这篇文章,很有感想。      **********************************************      我们每个人都对自己的未来有所思量,因为我们每个人都怀揣着高远的梦想,我们每天都在打理着我们的生活,日复一日,年复一年。   有人说,人生最...

详细介绍android rom移植知识普及

 详细介绍android rom移植知识普及 最近接到很多兄弟们的求助,也回答过无数个和下面这个问题类似的问题: 如何编译android 原生代码得到一个rom,然后跑到某某手机上。 鉴于很多兄弟对这块不清楚,我这里一并简单回答之。 1 ROM包含两个基本的image,一个是boot.image,这个image中主要是kernel和文件系统/目录下的一些东...

【SSH网上商城项目实战19】订单信息的级联入库以及页面的缓存问题

        转自: https://blog.csdn.net/eson_15/article/details/51433247        购物车这一块还剩最后两个问题,就是订单信息的级联入库和页面缓存,这里的信息是指购物车和购物项,即我们将购物车的信息存入数据库的同时,也存入每个购物项的信息,而且外键都关联好,这涉及到了Hiberna...

使用IPMI控制/监控Linux服务器

1       IPMI简述IPMI提供了很多丰富功能,我使用的功能,说得大白话一点,就是: 1、获取本设备的硬件信息:包括CPU和主板的温度、电压、风扇转速。   2、在设备A上,通过命令,控制远程设备B,开机、关机、重启。(看到这个有没有一点想做坏事的冲动,哈哈) IPMI的介绍,基本原理,和必备条件,可参考[1]中说明,很详细畅。 [1]:使用ipm...

sql中自连接的使用

一、用SQL自连接查询处理列之间的关系 SQL自身连接,可以解决很多问题。下面举的一个例子,就是使用了SQL自身连接,它解决了列与列之间的逻辑关系问题,准确的讲是列与列之间的层次关系。SQL代码如下: 1 SELECT FIRST.CNumber, SECOND.PCNumber 2 FROM Course FIRST, Course SECOND 3 W...