JetBrains Quest挑战报告 Quest 1

发布于 2020-03-11  1.55k 次阅读


今天晚上友人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)。

JetBrains Quest挑战报告 Quest 1

介绍上写着“敢不敢了解更多”。当然敢啊。点击之后弹出这么个提示:

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的帮助文档页面。里面混入了一些奇怪的东西。

JetBrains Quest挑战报告 Quest 1

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桑解开第二题花的时间也比较接近,都是一小时左右,说明两道题难度应该相近。想马上开始做第二题的我今天或许又要稍稍熬下夜了。