【技术帖:张老师带你涨姿势】我是这个时候世界上最无聊的人

今天,张老师不是来写吐槽文的,这次张老师要带你们涨姿势!

首先,我们打开这个网站http://www.pythonchallenge.com

(群众:妈蛋裤子都脱了你给老子看这个?)

喂喂不要闹了宝贝儿,今天是真要带你们涨姿势!

点Click here to challenge开始我们的涨姿势之旅吧

进去之后,你会看到这个!


(群众:坑爹呢?!这个是毛阿?!!)

。。。。好吧谢谢你们信任我没看URL就点进来了。。。。这个网站是给无聊的学python的人解题玩儿的。。。。其实用什么语言都可以只是python到后面的关卡比较方便

上图是第0关,注意hint,让我们猜出下一关的URL,图上那么大一个238就是线索!机智如我,现在我们来把地址栏中的URL最后的0.html改为238.html  ,按下回车让我们来到第1关。


No... the 38 is a little bit above the 2...

(群众:坑爹呢!!!裤子都脱了!)

。。。。。。。。。。。。。。。。。。。。。。。。。。。

好吧既然这样我们就算一算2的38次方

直接pow(2,38)得到274877906944

这下没错了吧!把0换成274877906944

===========================================================

真第一关到了。


同学们看到下面紫红色这么风骚的字符串颤抖了没?

不要怕,图上已经写出了规则,我用人格保证那句everybody thinks twice before solving this 是用来装逼的。

K->M O->Q E->G

如果你以为是把下面的K全换成M,O换成Q,E换成G就图样了,换完后你能看懂的话那你一定是那美克星来的。。。。

K到M差了2,O到Q也差2,E到G也是差2,我们把整个字母表向后推两位再来翻译一下下面的字符串。


坑爹阿!!!!!

不要紧。。。我们再来用这个规则对map推一次得到ocr

好了,把URL中的map换成ocr进到第二关。

==================================================================


温馨提示:不要试图去阅读书上的字

我们查看一下网页的源代码在最后的注释里发现下面这个奇怪的东西。。。



同样。。。不要试图去阅读这个东西除非你是那美克星人。。。。

按照提示,我们要找的是characters也就是字母,写个正则表达式[A-Za-z],把那一大片东西复制进去找吧,得到结果equality就是第三关的URL。

=========================================================================================


除了最下面的一行话神马线索都看不到。。。。

那我们老规矩,看源码。。。

结果又是在最后的注释中一大堆乱七八糟的数据。。。。。

好吧。。。我大概知道了。。。这回要在这一坨数据中找到前后都恰好被3个大写字母包围的小写字母

跟第二关一样,改一下正则式的匹配规则[^A-Z]+[A-Z]{3}([a-z])[A-Z]{3}[^A-Z]+

找出结果linkedlist

=================================================================================================

这回有一点点不一样,后缀不是html了而是php,说明肯定有点后台的东西要对我们下毒手了

很惊奇的发现这个图片可以点,赶紧点一下试试。。。

and the next nothing is 44827

。。。。。。。。。。。。。。。。。。。。。

呵呵呵呵呵呵

我们先冷静一下看看当前的URL:http://www.pythonchallenge.com/pc/def/linkedlist.php?nothing=12345

意思是去下一个页面就把最后的12345改成44827

温馨提示,搞计算机的人都是很变态的,不要试图手动去一个个改,他能让你花掉半辈子然后始作俑者看着你,对自己的儿子说千万要多读书不然就跟那个傻逼一样了

现在开始涉及到网络了,我用的是python,用了urllib这个库

基本思想就是循环地把页面读出来,用正则表达式匹配到最后的nothing的值,然后换掉URL最后的nothing值,将nothing打印出来,直到最后页面读取失败,表示已经找到了最后一个nothing的值。需要等一会儿,不知道是不是因为我网络比较慢。

我们得到了16044,输进地址中,看看结果。

Yes. Divide by two and keep going.

草!他调戏我们!

16044/2 = 8022

这下好了吧?!

and the next nothing is 25357

日,换掉程序里的nothing再跑!

得到66381,再试

终于得到答案了。。。。peak.html

==============================================================================================

那么半天终于到了Level 5了


依然是鸡毛都没有,老规矩看源码!


原来是跟读音有关,这个页面叫peak,图片是个hill,我不知道他为什么要写个peak hell,不过应该不影响,读音相近。

peakhell peakel pickle   读音相识。

温馨提示:pickle是python的一个包名,这里用别的语言的同学绝逼跪

那肯定要用pickle这个包了

不管,先把源码中看着就不顺眼的banner.p这个资源文件读出来再说。用urllib.open打开banner.p的URL,打印出来发现毛都看不懂,那就先存起来。

发现没用上pickle包阿。。。。坑爹呢。。。

鉴于pickle.load之后是key:value的组合,尝试一下是不是value表示的是key的个数,load后用key*value来打印一遍。


坑爹。。。。不够宽。。。。显示不全。。。。

哥。。。。我错了我全屏行了么。。。。



得,这就是第六关的入口了。



====================================================================================================================

有兴趣的同学请接着往下做,目前这个游戏一共有33关

张老师尝试了一下,发现自己是战五渣。。。。。



PS:所有关卡的答案在http://holger.thoelking.name/python-challenge都可以找到






评论
© Mo cuishle | Powered by LOFTER