<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>JetBrains &#8211; 天地一沙鸥</title>
	<atom:link href="https://haoluobo.com/tag/jetbrains/feed/" rel="self" type="application/rss+xml" />
	<link>https://haoluobo.com</link>
	<description>to be continue....</description>
	<lastBuildDate>Thu, 16 Dec 2021 03:11:35 +0000</lastBuildDate>
	<language>zh-Hans</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.8.2</generator>
	<item>
		<title>JetBrains Quest 解谜过程</title>
		<link>https://haoluobo.com/2020/03/jetbrains-quest-%e8%a7%a3%e8%b0%9c%e8%bf%87%e7%a8%8b/</link>
		
		<dc:creator><![CDATA[vicalloy]]></dc:creator>
		<pubDate>Wed, 11 Mar 2020 13:37:52 +0000</pubDate>
				<category><![CDATA[编程]]></category>
		<category><![CDATA[JetBrains]]></category>
		<category><![CDATA[JetBrains Quest]]></category>
		<guid isPermaLink="false">/?p=11803</guid>

					<description><![CDATA[JetBrains的推广活动，解谜后可以获取三个月的免费订阅。由于是推广活动，所以解密过程不是非常难。真正让人 [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>JetBrains的推广活动，解谜后可以获取三个月的免费订阅。由于是推广活动，所以解密过程不是非常难。真正让人头痛的是那糟糕的网速，不管挂不挂代理页面的打开都非常的慢。</p>



<h2 class="wp-block-heading">题目一</h2>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; title: ; notranslate">
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
</pre></div>


<h3 class="wp-block-heading">解题</h3>



<p>很明显字符串的ASCII码，使用python很容易进行解码</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; title: ; notranslate">
&gt;&gt;&gt; s = &quot;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&quot;
&gt;&gt;&gt; &#039;&#039;.join(chr(int(e, 16)) for e in s.split(&#039; &#039;))
&#039;Have you seen the source code of the JetBrains website?&#039;
</pre></div>


<h2 class="wp-block-heading">题目二</h2>



<p>查看首页源代码找到解谜线索</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; title: ; notranslate">
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$
</pre></div>


<p>根据提示，到产品页面。其中名为“JK”的产品介绍是“dare to lean more”，点击该产品继续进行挑战。</p>



<p>注：之前都不知道JetBrains居然已经有这多的产品了。</p>



<h2 class="wp-block-heading">题目三</h2>



<p>补完 <code>https://jb.gg/###</code> 后面确实的三个数字。数字为500到5000的质数个数。</p>



<h3 class="wp-block-heading">解题</h3>



<p>到网上找了个求质数的函数，跑了一下，很快得到结果574</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: python; title: ; notranslate">
import math
def isprime(n):
    if n &lt; 2:
        return False
    for i in range(2, int(math.sqrt(n)) + 1):
        if n % i == 0:
            return False
    return True
count = 0
for i in range(500, 5000):
    if isprime(i):
        count += 1
print(count)
</pre></div>


<h2 class="wp-block-heading">题目四</h2>



<p>打开上面得到的链接，其中有张图片。图片中的字符为“MPS-31816”</p>



<h3 class="wp-block-heading">解题</h3>



<p>这个题目最坑的在于这个图片实在是太大了，约有15M，死活打不开。</p>



<ol class="wp-block-list"><li>查看图片属性，用编辑器直接打开图片，都没有获取到有效的信息。</li><li>直接访问 <code><a href="https://www.jetbrains.com/MPS-31816">https://www.jetbrains.com/MPS-31816</a></code> 显示没有这个网页。</li><li>于是直接启用Google搜索 <code>MPS-31816</code> 在JetBrains 网站找到对应页面。注：后续会知道图片上的图标是JebBrains网站的问题区的Logo。</li></ol>



<h2 class="wp-block-heading">题目五</h2>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; title: ; notranslate">
“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
</pre></div>


<h3 class="wp-block-heading">解题</h3>



<p>很明显要用到之前的 <code>take this key: Good luck! == Jrrg#oxfn$</code> 。我一开始将问题想的太复杂了，以为第一题里的内容是密钥，用xor进行解密。在网上找了个xor解密的函数，解出来一塌糊涂。</p>



<p>由回头仔细看了一下这所谓的密码，其实就是一个简单的字映射。</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; title: ; notranslate">
&gt;&gt;&gt; s = &quot;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#dq
g#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#s
ul}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&quot;
&gt;&gt;&gt;
&gt;&gt;&gt; c = ord(&#039;J&#039;) - ord(&#039;G&#039;)
&gt;&gt;&gt; &#039;&#039;.join(chr(ord(e) - c) for e in s)
&#039;Nice! If you are reading this you must have worked out how to decrypt it. This is our issue tracker designed for agile teams. It is free for up to 3 users in Cloud and for 10
 users in Standalone, so if you want to give it a go in your team then we totally recommend it. you have finished the first Quest, now it’s time to redeem your first prize. Th
e code for the first quest is “TheDriveToDevelop”. Go to the Quest Page and use the code to claim your prize. https://www.jetbrains.com/promo/quest/&#039;
</pre></div>]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
