Python Challenge 7~8

Level 7
图片中间一条灰度线,感觉是要进行图片处理。于是下了个PIL库。
用系统自带的画图工具手动找到灰度线起始的像素位置(渣渣的方案),然后开始处理。想法是读取灰度值转成字母。打印出来,基本上是几行这样的结果(只需要保留一行就行了,因为灰度值是重复的):

sssssmmmmmmmaaaaaaarrrrrrrttttttt       ggggggguuuuuuuyyyyyyy,,,,,,,       yyyyyyyooooooouuuuuuu       mmmmmmmaaaaaaadddddddeeeeeee       iiiiiiittttttt.......       ttttttthhhhhhheeeeeee       nnnnnnneeeeeeexxxxxxxttttttt       llllllleeeeeeevvvvvvveeeeeeelllllll       iiiiiiisssssss       [[[[[[[111111100000005555555,,,,,,,       111111111111110000000,,,,,,,       111111111111116666666,,,,,,,       111111100000001111111,,,,,,,       111111100000003333333,,,,,,,       111111111111114444444,,,,,,,       111111100000005555555,,,,,,,       111111111111116666666,,,,,,,       111111122222221111111]]]]]]]]qkic^bgb_^^`_XUWXYYY\

已经能看到一句话的雏形了,除了第一个字母,剩下的字母的重复周期为7。修改一下代码,得到这个句子smart guy, you made it. the next level is [105, 110, 116, 101, 103, 114, 105, 116, 121],接下来就很简单啦

from PIL import Image

im = Image.open('oxygen.png')
gray = im.convert("L")
pixs = gray.getdata()
# row 43 - 51 column 1 - 629
ch = ''
for c in range(0,608):
    ch += chr(pixs[43*629 + c])
# print ch

words = ''
i = 0
for k in ch:
    if i == 0:
        words += k
    i += 1
    i %= 7
print words

pw = ''
for n in [105, 110, 116, 101, 103, 114, 105, 116, 121]:
    pw += chr(n)
print pw

Level 8
源代码有一个链接"../return/good.html" />(其实点击图片上的昆虫就可以) ,打开发现要输入用户名和密码,这在源代码中也有提示:

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'

一看就是字符转换。先用python打印出来看看。还是乱码。
试了半天各种编码,还是不行,又不懂了。Google一下,说是跟压缩算法有关。

如果你了解压缩算法,不难知道’BZh91AY’ 实际上是bzip2算法的特征,相应的,’PK/x03/x04’ 是zip算法的特征,而’/x25/xD5/b/b ‘则是gzip算法的特征 ——穿越Python Challenge(6-8)

似乎直接用bz2的解压就可以了。

import bz2
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 bz2.decompress(un),'\n',bz2.decompress(pw) 

知识量不够果然不行。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值