JetBrains Quest挑战报告 Quest 3

发布于 2020-03-13  621 次阅读


终于,第三题出现了。那就直接开搞吧。

1.BASE64

第三题一开始给出的是这个东西:

SGF2ZSB5b3Ugc2VlbiB0aGUgcG9zdCBvbiBvdXIgSW5zdGFncmFtIGFjY291bnQ/

不知道是啥,但长得很像BASE64。姑且先找个线上工具试着转换一下。

转换完成后没想到还真的能够变成一句话。

Have you seen the post on our Instagram account?

“你看过我们在Instagram账号上发布的内容了吗?”

2.Kotlin

没有Instagram账号的我还得现场注册一个……

登录之后搜索JetBrains,找到喷气脑袋的官方账号。果然有提示:

Welcome to the final Quest! You should start on the Kotlin Playground: https://jb.gg/kotlin_quest
P.S. If you don’t know about the #JetBrainsQuest, it’s not too late to find out.

访问一下提到的https://jb.gg/kotlin_quest这个链接吧。

链接指向的似乎是一个Kotlin语言在线IDE。里面有一段写好的代码。

fun main() {
   val s = "Zh#kdyh#ehhq#zrunlqj#552:#rq#wkh#ylghr#iru#wkh#iluvw#hslvrgh#ri#wkh#SksVwrup#HDS1#Li#zh#jdyh#|rx#d#foxh/#lw#zrxog#eh#hdv|#dv#sl1"

    val n: Int = TODO()
   for (c in s) {
       print(c - n)
   }
}

看样子变量s解密之后可以变成提示。

可是我并没有学过Kotlin怎么写,或许现在得现学一波。

且慢,这个密文里面怎么又是一堆井号啊?不禁让我想起第一题最后的那一关。

如果原理是一样的话,那么解法一样肯定没毛病。这次我不手操了,写个Python脚本来解决。

#!/usr/bin/env python3
# -*- coding: UTF-8 -*-
# char2asc.py

a = 'Zh#kdyh#ehhq#zrunlqj#552:#rq#wkh#ylghr#iru#wkh#iluvw#hslvrgh#ri#wkh#SksVwrup#HDS1#Li#zh#jdyh#|rx#d#foxh/#lw#zrxog#eh#hdv|#dv#sl1'
for i in range(0,len(a)):
  print(chr((ord(a[i])-3)),end='')

跑一遍脚本,解密完成。原理还真的一样。

解密完后是这样一句话:

We have been working 22/7 on the video for the first episode of the PhpStorm EAP. If we gave you a clue, it would be easy as pi.

3.Pi

上面那段话的意思是“我们7天22小时地来制作PhpStorm EAP的第一集。如果给你一个提示,那么(解题)就会变得超级简单。”

最后的pi读法和pie相同,所以姑且按照“easy as pie”的意思理解。可能这是个提示。

说到第一集,那肯定是视频。在YouTube搜索PhpStorm EAP,找到了这个第一集视频:https://www.youtube.com/watch?v=OtQuAr3n87c

在播放到三分十四秒时画面莫名其妙晃动。或许这个pi的意思就是三分十四秒时会有提示。切换成0.25倍速慢速重放一遍,发现视频演示的代码中,homepage的链接好像悄悄换掉了。

对,就是它。链接变成了https://jb.gg/31415926

4.Quiz

输入这个链接,进入一个喷气脑袋知识问答页面。问题都和喷气脑袋的历史与产品有关,而且还限时。

在失败了好几次,Google了好几次之后终于通过了问答。

答对之后的页面给出了最后的提示:

Almost there! The last challenge is in the Tips of the Day of a specific IntelliJ IDEA Community version from our latest build page in Confluence, but… there is a catch. You have to know which version to look for. To find the build number, you need sight beyond sight:

. Not Everything Today Does All You Could Ask. Lessons Learned From Other Relevant Solutions, Possibly Even Another Kind Emerge. Risking Sometimes Being Liberal Or Generous Proves Ordinary Simple Tests Infinitely More Annoying. Get Examining Hidden Initial Designated Early Symbols. They Have Everything Needed, Except Xerox, To Completely Level Up Everything.

5.Sight Beyond Sight

那个提示的第一段话的意思就是下载一个特定版本的IDEA社区版,查看里面的每日提示。

当然那个特定的IDEA版本号肯定得自己找,而下面那一段莫名其妙的东西就是提示。

仔细观察第二段话,会发现它们都是大写的,而且开头有个句点。这就很可疑,所以可以试着从这上面开始思考。

莫非这些首字母可以拼成句子?

这么想着的我直接把其它小写字母和标点删掉(开头的句点感觉会有用就留着了)。在处理完成后的一堆大写字母中加上一些空格,得出下面的一段话:

.NET DAY CALL FOR SPEAKERS BLOG POST IMAGE HIDES THE NEXT CLUE

“.NET DAY CALL FOR SPEAKERS这篇博文中的图片藏有下一个线索”。

那就去看看呗。搜了下,找到了那篇博文的链接:https://blog.jetbrains.com/dotnet/2020/02/13/jetbrains-net-day-online-2020-call-speakers/

6.Tip of the Day

里面就一张图,光看图片根本看不出什么名堂。

下意识地按下F12键看看图片的alt属性,结果看到了藏在里面的提示:“you_are_looking_for_build_201-6303”。

版本号get,下载去。在Confluence上找到这个版本号的下载页面:https://confluence.jetbrains.com/display/IDEADEV/IDEA+2020.1+Quest+Build+Edition

这个“Quest Build Edition”过于生草……但也证明目前的思路没有错。

点击下载,却显示无法访问该网站。

但将前面一段网址直接替换成jetbrains.com就可以下载了。

如果不能在Confluence上下载,可以试试这个链接:https://download-cf.jetbrains.com/idea/ij_quest/ideaIU-201.6303.exe?_ga=2.60156334.200465339.1584099755-613324424.1584099755

安装完毕之后狂翻每日提示,可以找到这一条提示:

JETBRAINS QUEST: LAST PUZZLE
You have discovered our JetBrains Quest! If you don’t know what this is, you should start from the beginning.
This is it. The last puzzle. You are just one step away from glory!
Now you just need the Key to unlock the Quest page.
The Key is the first and last 4 digits of the 50 * 10^6 position of the Fibonacci sequence (F(50 Million)).
As you may know by now, not all that glitters is gold, and to solve this puzzle you should not go straight for the obvious answer. May you make a glorious choice.
Remember that you have until the 15th of March 12:00 CEST.

7.Fibonacci

WTF?斐波那契数列第五千万项的前四位和后四位?

这怎么算?

(这里就偷了个懒,网上扒了一个算法来解决了……)

考虑到Python作为解释型语言,算起来不会快,就扒了个C++代码。速度很不错。

算出的结果就是这次的flag。如果想直接看答案的话,那就选中这句话后面隐藏的白色文字吧,或者按下Ctrl+A也可以。这次的答案是46023125。

把flag输到https://www.jetbrains.com/promo/quest/中就可以领取最后一份奖励啦。(虽然这次的不是3个月全家桶而是20% off的优惠码)

8.个人吐槽

至此,JetBrains Quest的三道题都已结束。

第三道题的难度也还行,就算是我这样的业余爱好者也能够通过推理来解开……本来我想这么说,但是最后的斐波那契数列也太不好办了吧?

算斐波那契数列的那一关既考验算法又考验电脑性能。如果只是求个几千或者几万项,那么倒是可以按照普通的矩阵算法来写个脚本跑一下。但是这个五千万项用没优化过的算法来计算得花好久诶,如果没有好的算法或者好的电脑的话要解开似乎有点不容易。

嘛,就算这样,还是必须承认这个20周年活动非常有趣。Jetbrains Quest这样的解谜游戏甚至还能让好多推理迷也来关注这次活动,而且给出的活动奖励也很大气,三道题解开就是9个月半年全家桶(后来看了下邮箱才发现这个第三关奖励的是优惠码)。认识的几位程序员大佬听说送全家桶,纷纷开始向谜题发出挑战。或许我写完这篇文章的时候她们也已经早就解开了(毕竟算法对于她们来说超简单)。

顺带一提,砍口垒那边似乎是今天晚上友军出现。收拾收拾激动的心情,上号攻略(一点也不迷你的)迷你活动去。