Python Challenge 0-9
来源:互联网 发布:小说阅读网软件 编辑:程序博客网 时间:2024/05/16 12:02
这是一个神奇的网站….
现在卡在第七题还没有做出来。。。
(0) :较简单,首先尝试了238发现不对,然后尝试2^38次方即可成功跳转url.
(1) :题目是这样:
很容易想到将每个字母往后推2个,然后将下面哪一句话转换一下即可发现并不是答案而是让你对url进行decode,对url里面的map做一点微小的工作即可pass。
(2):
如果不告诉你source page还是有点难想到,但是说了就很容易了,进入,发现注释,然后只需要找到那些小写字母的内容(equality)即可。
def rare(s): for each in s: if each.isalpha():print(each)
(3)
这道题就需要一点编程了,我一开始想错了,以为是上下左右四个方向都必须有3个大写的字母,注意有且只能有3个,结果发现没有这样的小写字母,然后开脑洞改变了上下两个方向的surronded的定义,认为是不是只要有一个字母盖住就算呢,结果还是不对,浪费不少时间…最后仔细看了一下图,发现图上已经给你提示了…只需要左右有就可以了……
下面的代码比较丑,但做这个就只求做出来嘛~~~~
def check_real(s,i): if i<0 or i>=len(s):return False if s[i].islower():return False count1 = 0;count2=0 j = i-1 while j>=0 and s[j].isupper(): count1+=1 j-=1 j = i+1 while j<len(s) and s[j].isupper(): count2+=1 j+=1 return count1==1 and count2==1def code(url): test = dict() num = 0 lines = [] with open(url) as f: for line in f: for i,each in enumerate(line): if each.islower(): if check_real(line,i-2) and check_real(line,i+2): print(each,num+1,i+1)
(4)
你点一下这个图片就发现进入了一个无限循环,每次都有一个新的url,那么写一个脚本不停的发送请求然后解析出下一个url然后循环即可。但是里面有一个陷阱,就是它存在一些其他的数字来干扰你,所以你分割字符串的时候一定要用 next nothing is作为分割符,中间还会出现让你把数字减半之类的信息,这时候就需要人工操作一下,最后进入peak.
def chain(): from urllib import request next_str = 16044/2 for i in range(400): with request.urlopen('http://www.pythonchallenge.com/pc/def/linkedlist.php?nothing={0}'.format(next_str)) as f: data = f.read() next_data = data.decode('utf-8') try: next_str = next_data.split('next nothing is') next_str = int(next_str[-1]) print(next_str) except: print(next_data) next_str = next_str/2
(5):
这道题我稍微看了一点参考(就一点~^_^~),我根据peak hell联想到了pickle,然后成功卡住,因为我是直接把那个pickle序列化之后的信息复制下来用来解码的,结果一直不成功,中间试过转变成bytes,但是还是有问题…最后查了一下发现应该用url直接获取数据,这样就得到了真正的bytes编码…(这里真是思维江化。。。),做出这个后面就很简单了,解密后发现是一个二维list,每一个list都是[(’ ‘,number),…]的形式,这个稍微想一下就知道是把所有的字符给打出来(画出来),注意,由于这个cmd窗口太小,导致打印出来的图像非常畸形,所以我在这里半天都看不懂是什么,进而怀疑思路,最后我尝试把字符写入一个文件再打开,发现了最终的答案(这一步卡了15分钟,中间还尝试把图像竖着看等脑洞…)
def peak(): from urllib.request import urlopen raw = urlopen("http://www.pythonchallenge.com/pc/def/banner.p").read() import pickle data = pickle.load(urlopen("http://www.pythonchallenge.com/pc/def/banner.p")) ret = '' for each in data: for s,num in each: ret += ('*' if s!=' ' else ' ')*num ret+='\n' with open('ret.txt','w') as f: f.write(ret)
(6) 后面感觉难度变大了不少….,这道题我想了很久,中间还参考了一点点点资料…首先zip这个提示让我思考了一会,首先尝试zip.html结果不对,然后查了一些zipfile的用法..结果暂时没有帮助,最后尝试了channel.zip结果下载下来一个东西感到很高兴,接下来就是直接按照(4)的方式遍历这些文件,结果得到一句collect all the comments,我在这里卡了几乎2个小时….最后还是看了答案,中间做过的尝试有:对每一个数字转成16进制然后编码,结果根本解不出,后来想一下答案的编码页不会这么长,然后尝试找所有文件里面含有字符’c’的文件,当然也失败了…最后发现zipfile里面有一个类叫zipinfo,里面有一个成员叫做comment….所以接下来就获得这样一个东西…..
在这里也卡了半天….一开始直接输入hockey结果不对,想了10分钟才注意到每一个字母都是由其他字母构成的…..Fuck,答案是oxygen….
def channel(prefix=r'C:/Users/admin/Desktop/新建文件夹/'): cur = 94191 import os import zipfile s = '' zipFile = zipfile.ZipFile(prefix+'channel.zip') for i in range(907): with open(prefix+'{}.txt'.format(cur)) as f: for line in f: x = hex(cur) if not line.startswith('Next'):print(line) x=zipFile.getinfo('{}.txt'.format(cur)) s+=x.comment.decode() cur = int(line.split('nothing is')[-1]) print(s)
(7)
这一题的关键就是对黑白像素的值进行ASCII码解码,但是我一开始思路走偏,想利用base64对这个图片的二进制进行解码。。。结果求出一堆乱七八糟的字符串,然后我也不能直接从二进制流里面读取到哪些是黑白像素…
期间还尝试检测这个图片是不是一个伪装的压缩文件(^_^)..
在室友提醒下改用PIL读取像素来分析,经过观察可以发现黑白像素的RGB是一样的,所以利用这个条件可以确定像素位置是43行到51行的607列,接下来就是将像素提取为图片里面的小方块,注意千万不要直接去重,因为有可能两个小方块的RGB恰好一样….我一开始就是直接去重结果得到了看似正确的信息(在这里折腾了超级久…),但是关键数字漏掉了几个。。。。经过观测发现小方块应该是7个像素点,所以利用这个条件就可以取到所有小方块的数值然后得到一个数组,这些数组都是在ASCII码范围内的数字,所以直接翻译即可(最后的答案是integrity)
def oxygen(): import base64,sys from PIL import Image img = Image.open('oxygen.png') box = (0, 43, 608, 52) belt = img.crop(box) pixels = belt.getdata() lBelt = belt lBelt = belt.convert('L') lPixels = lBelt.getdata() str = [] for i in range(0, 608,7): str.append(chr(lPixels[i])) last = lPixels[i] print (''.join(str))
(8) 这题相对前面要简单很多,首先发现源码里面的注释,首先尝试base64(为什么我对这个有怨念。。。),发现结果不对,然后搜索了最开头那个奇怪的字符,发现是使用bzip2进行压缩的,然后进行解压就得到答案.中间我搜索的时候不小心瞥到一眼一个blog的答案,提到gzip,然后我就用zlib进行解压,结果死活format不对(zlib对应的三种解压格式我都试了一遍…),最后又搜索一下才发现是bzip~~~~,最后答案是huge,file
x = bz2.decompress(uw)
(9) 暂时卡住了~~~
0 0
- Python Challenge 0-9
- python challenge 7-9
- 【Python Challenge-9】good
- python challenge(9-18)
- Python Challenge 9
- Python Challenge 谜题0
- Python Challenge level 0
- 【Python Challenge-0】url
- python challenge 0-10
- python challenge 0-4
- python challenge 0~6
- python challenge解答 0-3
- Python challenge攻关0-5
- The Python Challenge 0~2
- Python Challenge 0~6 记录
- python challenge
- Python Challenge
- Python Challenge
- C# ASP.net写WebService中类的成员变量什么时候创建,赋值的问题。
- FPGA——频率计(3)
- 静态导入
- 设计模式之开篇---面向对象的六大原则
- 使用python进行汉字与二进制之间的转换
- Python Challenge 0-9
- JSTL表达式与EL表达式用法*更新版*
- 总线设备驱动模型---platform篇
- 【C语言】递归 - 汉诺塔
- C#练习--实现超市购物结算
- 集合与数组之间的相互转换
- 【CJOJ P1957】【NOIP2010冲刺十模拟赛】数字积木
- android 应用对内存是如何限制的?我们应该如何合理使用内存?如何限制的?
- apache服务器安装虚拟机