今天晚上友人S桑刷Twitter时刷到JetBrains20周年的活动。活动内容似乎是解开官推出的谜题,每解开一题就可以得到三个月的喷气脑袋全家桶。
“解谜?带我一个!”
全家桶不是重点,解谜才是最有趣的。作为解谜爱好者的我们当然是立即开始行动。我做第一题,S桑做第二题。
(感觉我们知道这个消息的时间有点晚,第一题似乎9号就已经发布……)
虽然Omega不是学计算机的,但是CTF还是有玩过一点点。希望我能够顺利解开(笑)。
1.HEX
第一题官推给出这么一个东西:
48 61 76 65 20 79 6f 75 20 73 65 65 6e 20 74 68 65 20 73 6f 75 72 63 65 20 63 6f 64 65 20 6f 66 20 74 68 65 20 4a 65 74 42 72 61 69 6e 73 20 77 65 62 73 69 74 65 3f
看上去像是十六进制的数字,因为英文字母不超过f。另外20出现好多次,而众所周知20在ASCII里面代表的是空格。(顺带一提,用十进制表示的话32代表的是空格)
所以这就是十六进制的ASCII码咯?姑且先把它粘贴到Notepad++的HEX-Editor中,就看到了这句话:
Have you seen the source code of the JetBrains website?
“你看过喷气脑袋网站上的网页源码了吗?”
2.HTML
网页源码?答案当然是没看过。这不现在就准备去看嘛。
https://jetbrains.com
走起,按下Ctrl+U
看看源码。
猜测提示肯定在绿油油的注释中,就快速划过滚轮并且关注各种注释。果然,找到这么一段话:
<!-- O {o)xxx|===============- O Welcome to the JetBrains Quest. What awaits ahead is a series of challenges. Each one will require a little initiative, a little thinking, and a whole lot of JetBrains to get to the end. Cheating is allowed and in some places encouraged. You have until the 15th of March at 12:00 CET to finish all the quests. Getting to the end of each quest will earn you a reward. Let the quest commence! JetBrains has a lot of products, but there is one that looks like a joke on our Products page, you should start there... (hint: use Chrome Incognito mode) It’s dangerous to go alone take this key: Good luck! == Jrrg#oxfn$ O -===============|xxx(o} O -->
提示部分应该就是最后一段话。
“喷气脑袋有着一堆产品,但其中有一个产品放在产品页面上看上去就是个笑话…(以下省略)”
提示还很友好地说要用chrome的无痕模式。作为Mozilla用户的我还得换个浏览器继续解谜。
但它下面一句话有点看不懂。什么Good luck == (一堆乱码)啊?先不管了,或许无视这个也可以解开谜题。
3.JK
总之先去产品页面看看吧。翻过一堆产品,在PC和WS中间发现了个叫JK的玩意儿。嗯,原来这就是joke吗?看上去还真是个笑话(joke)。
介绍上写着“敢不敢了解更多”。当然敢啊。点击之后弹出这么个提示:
To continue to the next challenge you need to go to the following link… But there is a problem, the last 3 digits are missing: https://jb.gg/### To get these digits you need to know how many prime numbers there are between 500 and 5000 Good Luck!
这一关就很简单粗暴了。意思就是求500到5000间有多少个素数。
4.Prime
重拾Python知识,我们来写个简单的脚本求一下。
#!/usr/bin/env python3 # -*- coding: UTF-8 -*- # prime.py k = 0 for i in range (500,5000): j=2 for j in range(2,i): if(i%j == 0): break else: k += 1 print (k)
跑出来的结果是574。所以说三个井号中的内容是574了。
输入求出的链接一看,原来是PyCharm的帮助文档页面。里面混入了一些奇怪的东西。
YT是啥?圆通?当然不可能。
刚刚看产品时页面看到个YouTrack,多半就是那个。而MPS-31816或许是里面的一个编号?
5.MPS-31816
看了下官方对YouTrack的介绍,这个似乎是个issue号。在https://youtrack.jetbrains.com/issues
里面输入MPS-31816就跳转到了JetBrains Quest的谜题页面。
这一关有点无从下手……
“The key is to think back to the beginning.” – The JetBrains Quest team Qlfh$#Li#|rx#duh#uhdglqj#wklv#|rx#pxvw#kdyh#zrunhg#rxw#krz#wr#ghfu|sw#lw1#Wklv#lv#rxu#lvvxh#wudfnhu#ghvljqhg#iru#djloh#whdpv1#Lw#lv#iuhh#iru#xs#wr#6#xvhuv#lq#Forxg#dqg#iru#43#xvhuv#lq#Vwdqgdorqh/#vr#li#|rx#zdqw#wr#jlyh#lw#d#jr#lq#|rxu#whdp#wkhq#zh#wrwdoo|#uhfrpphqg#lw1#|rx#kdyh#ilqlvkhg#wkh#iluvw#Txhvw/#qrz#lw“v#wlph#wr#uhghhp#|rxu#iluvw#sul}h1#Wkh#frgh#iru#wkh#iluvw#txhvw#lv#‟WkhGulyhWrGhyhors†1#Jr#wr#wkh#Txhvw#Sdjh#dqg#xvh#wkh#frgh#wr#fodlp#|rxu#sul}h1#kwwsv=22zzz1mhweudlqv1frp2surpr2txhvw2
下面一堆乱码看了估计也没啥意义,不如先琢磨一下上面那句话。
“解体的关键在于回想起开头。”
这个开头是指什么呢?16进制ASCII码那个还是HTML源码那个?
本来想把下面的乱码复制到Notepad++里面看看名堂的,但是手抖点开了Firefox,再次看到那一块绿油油的注释。
等等,这个Good luck什么什么的我似乎知道是什么了。
“==”怎么看都是左边等于右边的意思。如果真的可以这么理解的话,那么它就是密码表。G->J,o->r,d->g,空格->#。
说到井号,乱码里面也有很多井号。所以也就是把井号替换成空格,把J替换成G这样的操作吗?
找了下规律,解密的话就是把字母对应的ASCII字符减掉3。看样子就像是凯撒密码嘛。懒得再写脚本替换了,直接Ctrl+H
手操。(大佬们不要笑我_(:з)∠)_)
翻译完毕之后的那段话就是通关奖励,就不剧透啦。
如果想直接看答案的话,那就选中这句话后面隐藏的白色文字吧,或者按下Ctrl+A也可以。(答案是TheDriveToDevelop,但在第三题发布之后被改成了BecauseCode)
总之那句话里面有着最终的flag,在https://www.jetbrains.com/promo/quest/
上输入flag以及自己的邮箱,就可以收到激活三个月全家桶的邮件。
6.个人吐槽
解谜游戏果然超~好玩。而且喷气脑袋出的题目难度刚刚好,给的提示也很齐全。这一点超级好评。
顺带一提,S桑解开第二题花的时间也比较接近,都是一小时左右,说明两道题难度应该相近。想马上开始做第二题的我今天或许又要稍稍熬下夜了。
0 Comments