pythonchallenge 全部关卡提示

本文是pythonchallenge的33道谜题的全部提示。
这是一个非常有趣的网站,强烈推荐有些编程基础的同学尝试。中间参考了各路高手的解答,但是没找到一个完整的中文版本的提示,费了一些波折。
故特此纪录每一关的提示,留作纪念。

我是用python来解这些谜题的,具体代码请看我的github

L0:
纯热身,图片下面的英文提示,计算图中的数字的十进制x,url最后换成x.html

L1:
从图片上看,是凯撒密码,解密方法为所有字母右移两个字母。
用此方法解密图片下面的乱码,得到提示。对url使用同样的方法。

L2:
检查网页的源代码,注释里有一个很长的字符串,找出这堆字符中所有的英文字母,得到下一关的地址。

L3:
和前一关类似,根据提示,从注释的字符串里,找出左右两边各有且仅有3个大写字母的小写字母。

L4:
是一个php页面,根据源码里面的注释,nothing的值从12345开始,迭代打开下一个页面几百次之后,得到下一关的地址。(中间会有一次提示,把当前值减半再继续迭代)

L5:
提示“peak hell”念起来像什么。。(这个得对python的库很熟)
把banner.p文件包含的乱码用pickle模块读取,得到下一关的地址。

L6:
注释提示“zip”,下载channel.zip文件,解压得到一堆数字名的文件和一个readme。readme里两个提示,一是要从90052文件开始,做类似L4的事情。另一个说答案在zip里(和没说一样)。。原来每一个数字文件在zip的comment里是有内容的,这些注释连起来得到个单词。打开这个页面,又提示:it's in the air. look at the letters。。原来前面的单词的每一个字母是由不同的小字符组成的。。连起来进入下一关。

L7:
图片中间有一条灰度色块很奇怪,信息就藏在这些色块的灰度值里。按照7个像素的间隔,取中间条线的灰度值,转成ascii码,得到提示。“聪明的小伙啊,下一关是[105, 110, 116, 101, 103, 114, 105, 116, 121]”,再转一遍ascii码,搞定。

L8:
点图中蜜蜂要求输入用户名密码。
网页源码里的提示非常直接:用户名和密码都是bzip2格式压缩过的。

L9:
标题提示把点连起来。
注释里面有first和second两个数组。每个数组代表画的一部分。把数组里的数字两两分组,每组代表一个点的横竖坐标。连起来发现是头牛,而且是公牛。

L10:
点牛的图片跳出一个数组来:1, 11, 21, 1211, 111221,,,(找不到规律可以去这个棒棒的网站查)
按照标题的提示,算出这个数组的第30个值的长度。

L11:
标题提示“奇偶”,看图片貌似有很多黑黑白白的点。仔细观察(google提示)像素点的值,发现偶数行0,2,4...的点接近黑色,奇数行1,3,5...的点接近黑色。分离出这些点做出一张新图,黑色的图片上有浅浅的红色字母。

L12:
图片是在分牌,看源码注意到图片名字后加了个1。试验改成2,3,4。图片2提示要把jpg换成gfx。下载下来后不知道gfx是个什么鬼。看二进制源码,有一些“PIP”,“NFN”,“G8G”之类的片段,推测出“PNG”。观察这些字符的间隔都是5,所以把gfx文件拆分成5个图片文件。(分牌的提示)每张图片有几个字母,连起来进入下一关。(mac上预览第四张图片显示全黑,用chrome打开正常显示)
这里有个点容易漏掉,evil4.jpg存在但根本不是一张图片,按文本打开得到下一关要用到的提示(Bert是魔鬼)

L13:
文字提示要打电话给魔鬼,点图片中间的5会跳到一个php页面,一个XML文件提示错误的code。这里有个神奇的协议叫XML-RPC,listMethods查这个页面的接口,有一个叫“phone”的方法,打给“Bert”就进入下一关。

L14:
标题提示绕圈走,注释有100100 = (100+99+99+98) + (... ,下面有一张诡异的图片,下载发现大小为100001。猜测应该要把这张图重组成100*100的。结合提示,应该是像蚊香那样一圈圈的转起来。得到新图片发现是只猫,进入网页发现猫的名字是下一关。

L15:
标题提示猜一个人,图片显示是1**6年的1月26日。右下角显示二月份有29天,结合1月1日是星期四,找到所有可能的年份。注释里面提示不是最近的那一年,而是离现在第二近的那一个答案。注释里面第二个提示,明天买鲜花,暗示是1月27日,google一下那个日期,得到答案。

L16:
标题提示“让我来把这些排直了”。图片中有很多个小粉条,仔细观察后发现,每一行有且仅有一个粉条。把每一行的像素点水平滚动,使得小粉条都移动到最左边,得到的新图片,显示答案。

L17:

感觉是33关里谜题最复杂的一关

图片提示要看cookie。左下角的图片是第四关的图片。
回到第四关的页面,cookie提示“you+should+have+followed+busynothing...
”。(注意这里的‘+’号,也是一个小提示)
按照L4的做法,再跑一遍busynothing,把每一页的cookie连起来。看着是bz2压缩过的字符串。而且还是URL-quoted过的。unquote 并且把中间的“+”换成空格符之后,bz2解压,得到新的提示:给他老爸发消息 “the flowers are on their way”。
回到L15的接口,设置cookie,phone莫扎特老爸,终于得到下一关的提示。(最后一个单词)

L18:
标题提示“说出两张图的差别”,怕你不懂,注释还加了句“比你想象的更明显”。(亮度brightness不同)
真正的L18,下载“deltas.gz”,gzip解压之后,发现是个很大的文本。文本每一行分成左右两部分,前面的几行左右两边都是一样的,但后面但行会出现不一致。而且第一行开头的几个数字,转成ascii码就是字母png。说明左右两部分都代表图片。
回想前面的提示“说出两张图的差别”。
把整个文本分成三部分,左右共有的部分,左边独有的部分,右边独有的部分。三部分各自构成一张png图片。分别是下一关的url,用户名和密码。

L19:
网页的注释里面包含了一个base64压缩的wav文件,解压之后发现说的是sorry。但前后有些噪音。
观察帧数据发现有很多重复出现的字节。采样频率减为一半之后得到一个新的wav文件,里面说了idiot。进入这个页面会提示"Now you should apologize..."(暗示回邮件),点next到下一关。

回邮件“sorry”给 leopold.moz@pythonchallenge.com,会得到回复。。里面有一个md5码,这在L26会用到

L20:
这关也很难
提示“but inspecting it carefully is allowed.” 还是不懂。
关键在于http response的header里面,有一个字段
('content-range', 'bytes 0-30202/2123456789'),看起来很奇怪。
请求的时候设置'content-range'为30203会得到新的range和信息。
反复设置'content-range'为新的range+1,得到一系列信息。
然后倒过来,设置range为2123456789,也能得到一系列信息。
最终能得到一个zip文件的字符串,解压密码在前面的一堆信息里。(把给你的名字反转过来)
解压zip包后,readme说,这就是L21了。

L21:
readme 提示,做完后看看挺对路:

  1. 小时候经常玩这个游戏
  2. 没想法的时候,就往回看看

另一个package是一个zlib压缩文件,解开之后还是zlib压缩文件,反复解压之后变成一个bzip压缩文件,继续撸起袖子干(建议还是code搞定),最终得到一堆乱码。。。
仔细观察,乱码倒过来还是个zlib文件。好了继续撸,最终解压完得到一句话“look at your logs”。
好吧,回头把前面的每一次解压过程用一个字母标记,每次倒序的地方就换行,得到一个文本文件。一看就知道下一关来了。

L22:
提示“white.gif”要更亮一点。。
明明看上去是全黑的。而且这么简单的图有40多k。
仔细观察,发现这个gif有133帧,每帧有一个点的颜色不是纯黑。这个点都离中心点(100,100)不远。(点距离中心的偏移量,就是这一步的步长)
结合图片,游戏摇杆的提示。这和很早之前的海龟画图方法很像。从中心点开始画图,下一个点和之前的点用直线连接,一步步画出一个字母的图形。如果这个点是(100,100),就代表一个字母写完了,开始下一个字母。
画完图,记得加亮那个灰色的点,进入下一关。

L23:
提示'va gur snpr bs jung?',用L1的方法解密,得到提示“in the face of what?”,这是python zen里的一句。

L24:
走迷宫,注意一点,白色是墙,黑色是路。
走完发现路径很绕,仔细观察发现路径上每一个点的r值都不一样,连起来转ascii码,发现是zip格式。解压后,图片上有下一关的url。
另一个mybroken.zip后面有用。

L25:
标题提示:想象他们听起来怎样
注释提示:你能看见waves吗?
发现有lake1.wav到lake25.wav这25个文件。下载听了之后发现都是噪音。检查这些图片的帧率是9600,一共10800帧。很诡异。
仔细观察原来这些都是披着wav皮的PNG文件。
每一个wav文件可以转成一个6060的rgb格式的png。(60603=10800)
然后把这25个png按照5
5的拼图拼起来,进入下一关

L26:
提示:像个男人一样道歉/你收到邮件了
找到L19的回信,“Can you believe what one mistake can lead to?”
L24里面的mybroken.zip有一个字符错了。
按照邮件里面的md5码,修复这个zip包,解压后得到图片,显示“speed”,结合提示“Hurry up, I'm missing the boat”, 进入下一关。

L27:
有链接到28关,但是需要密码
标题:在tables之间
注释:这不是重复L14(废话)
下载gif文件,PIL显示图片模式是“P”,即8位彩色模式,但图片看上去是灰色的。(检查图片的palette发现RGB值都是一样的。)有点奇怪。
将图片转成“L”模式,即灰度模式,然后比较两张图片的数据,发现“P”图除了第一个点之外,和“L”图的数据大部分都是一样的。
提取这两张图数据不同之处,发现“P”图独有的部分,是bz2加密的字符串,解压后得到很多重复的单词。

额外的提示,将两张图相同/不同的点,转成“1”模式,即黑白图。得到的图片提示:“not key word, busy?”

从这些单词中去除python的关键字,最后剩两个单词,即用户名和密码。

L28:
提示:大声念Ring-Ring-Ring
好吧,是Green。
标题提示:many pairs ring-ring
(图片是挺绿的)看来是要比较图片中的G值了。把G值两两配对相减,差取绝对值,发现大部分都是42.(为什么是42)过滤掉所有42后转成ascii码,得到新提示'whodunnit().split()[0] ?'
就是python作者的名字的首个单词了。

L29:
图片名字提示:这是谁
如果你总是从浏览器里直接看源码,很可能会错过这关的提示。
网页源码最后藏了很多长长短短的空格。。
把空格的个数连起来转bytes,得到答案

L30:
下载csv文件,仔细观察发现csv文件的数字,每个都在0到1之间,且一共有139*53个数字。用这些数字生成一张灰色图片,每个数字乘256作为这个点的灰度值。
图片显示了一个公式,把这些数字按照公式提示的规则,生成一个新的数字串,转成ascii码,得到答案。

L31:
网上查找这张图片,它的位置是kohsamui, thailand。也就是需要的用户名,密码。
真正的31关来了,图片名字是mandelbrot,google发现是分形的图。仔细研究下如何构造mandelbrot集,用图片上提供的坐标系,自己生成一张图片。肉眼看和网页上的图一样,比较每一个像素点发现,两张略有差异。
把所有不同的点的差值记录下来,长度是23*73。用这些值生成一张黑白图。(大于0的点为黑色,小于0的点为白色)
网上查找这张图片,又涨姿势了。

L32:
快结束了,好开心。
这关是个有趣的游戏,横竖的数组,代表了这行/列的格子的情况。
先做warmup.txt,解完之后做up.txt。
up解完能够看到一个熟悉的logo。
进入url之后,得到新的提示:"Free" as in "Free speech", not as in "free...
google这段话进入下一关

这是这系列里面最难的一个算法了,得费些心思

L33:
提示:
If you are blinded by the light,
remove its power, with its might.
Then from the ashes, fair and square,
another truth at you will glare.
做到这里,看见图片名字后面有数字,自然而然就会改改试试了。
下载png图片,根据上面那段有些诗意的提示,把png里面高于特定亮度值的点去掉,剩余点个数如是个平方数,就能生成一张新图片出来。
尝试所有亮度阈值之后,得到一系列有字母的图片。
把那些被包在方形框里的字母连起来

恭喜通关

通关这些练习你一定学到了很多python的知识,更会发现一个小破网页原来还能有那么多藏东西的地方。。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,905评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,140评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,791评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,483评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,476评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,516评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,905评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,560评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,778评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,557评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,635评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,338评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,925评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,898评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,142评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,818评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,347评论 2 342

推荐阅读更多精彩内容

  • WinRAR - 最新版本的更新 版本 5.50 1. WinRAR 和命令行 RAR 默认使用 RAR ...
    王舒璇阅读 2,366评论 0 2
  • 原文地址
    xcyzjs阅读 557评论 0 0
  • 在爸爸四年级的一天,语文老师说我的作业是别人帮我写的,因为字比之前的写得好。那可是老爸耐着性子一笔一画写的。也怪我...
    敦厚新哥阅读 226评论 2 0
  • 上海又下雨了,本来想今天去参加年会,但是昨天晚上忙到11点,工作还没做完,只能今天来做,领导们整天忙,昨天晚上等了...
    Anna娜阅读 366评论 5 4