西邮Linux兴趣小组2017纳新免试题揭秘

声明

今年的免试题按照关卡顺序依次是由小组15级成员何攀、楚东方、宫展京、杜肖孟、王一妃同学精心准备的(鼓掌),每个人总结了一下自己负责关卡的解法,我这里整理了一下,给出一套完整的免试题详解,免试题通过方法不唯一哦,想分享的可以留言。文末附上小组前几年的免试题详解,感兴趣的同学可以参考着玩一下。Let’s go!

第一关

免试题链接:点此进入 ,进去之后会有如下页面映入眼帘:

这里写图片描述

首先,我们看到的是一段代码(运行结果是 11,代表着我们小组成立 11 周年)和一段关于 π 的视频,在欣赏完这曲美妙的钢琴曲后发现并没有什么其他的信息了,然后我们应该想到查看网页源代码(Ctrl+u 或 F12),然后会发现在网页源代码里有一个压缩包文件,如下图:

这里写图片描述

把这个压缩文件 XiyouLinuxGroup.zip 下载下来后,发现这个压缩包是加密的,然后我们应该想到这个密码肯定隐藏在这个网页的某个地方,这时候应该想起网页上的那段代码和视频,那这个代码的运行结果 11 与关于 π 的视频和那个压缩包的密码有什么联系呢?我们都知道 π 是一个无限不循环小数,所以密码不可能是 π ,然后,再联想一下那个 11,可以猜到密码应该是 π 的前 11 位,或者 π 的小数点后 11 位,试着输入一下,会发现密码就是 π 的前 11 位 3.141592653,解压完成后我们得到了这样一张图片:

这里写图片描述

这是我们小组的微信公众号,得到它后应该做什么呢?当然是关注了~

关注了之后呢,发现并没有什么过关提示,然后,我们再仔细看一下网页源代码,发现并没有什么可用的信息了,然后我们应该思考一下这个图片是不是有什么问题,用编辑器打开这个图片,这里以 vim 为例,发现文件头是没问题的,然后往下翻,会发现在文件尾有一些信息(可以在 vim 中执行命令 G 直达文件尾),如下图:

这里写图片描述

发现这段 Unicode 码,可以用 shell 命令把它提取出来,如下图所示:

这里写图片描述

找一个 Unicode 在线转换工具将这段 Unicode 码转换为字符,如下图所示:

这里写图片描述

了解 linux 的同学应该很容易看出这是一个 shell 命令,然后该怎么办呢?当然是找一台装有 linux 环境的机器(包括各种 linux 的发行版本,虚拟机,服务器等),这里以 Fedora 25 为例,运行结果如下图所示:

这里写图片描述

得到了这个运行结果后该干嘛呢?在网页上似乎也没发现可以提交的入口,这时候我们应该想到前期得到二维码后关注的那个公众号,把这个结果发到这个公众号试试,看看有什么效果,如下图所示:

这里写图片描述

微信自动回复是不区分大小写的,所以输入小写字母也是可以的,然后得到了这段大写数字,将它转换一下会发现这就是通往下一关的IP: 112.74.212.172

Note:
   本关网页上的那段代码寓意西邮Linux兴趣小组成立 11 周年,主要考察大家的分析、联想能力,还有就是对 linux 命令的掌握情况(当然也有一点儿为我们小组公众号打广告的成分),这就是免试题第一关的详解。

第二关

链接:点此进入

这里写图片描述

第二关界面上是一首诗、一首歌、n和m。歌的名字是“给我一首歌的时间”,暗示着只有一首歌的时间答题。事实上在一首歌的时间过后,其数据就会刷新。

首先审查元素,在这一首诗的上下分别找到了两个网址,我们首先访问第一个(点此进入),发现其为一个矩阵相乘得到矩阵a的问题,但是只给了第一个矩阵的信息,并没有第二个矩阵的信息,只是给了提示第二个矩阵已经发给我们。

我们审查元素发现该网址上有一段JS代码,其向我们发送了一个名为 “Matrix_2.html” 的矩阵,我们利用浏览器上的Network进行抓包,找到了第二矩阵,发现第二个矩阵为一个100×100的蛇型矩阵。

JS代码

利用Network进行抓包

抓包

通关以上步骤,我们已经得到了矩阵a。然后我们打开第二个链接,如果未翻墙的童鞋可能打不开,因为这个网址是由Google提供,需要翻墙才能访问,我们打开网页后发现其是一个公式:

公式

现在目标很明确了,我们知道了a,n,m,又得到了公式,我们要做的就是计算得到结果。那么我们又遇到两个问题,一是n是一个非常大的数,如果一个for循环相乘的话是无法在规定时间内得到结果的。二是一个数的n次幂是一个非常大的数,long long 和 int 都无法存下。(python 、php等不要求变量类型的语言除外)

为了解决着两个问题,这里提供两个解决方案
针对第一个问题,我们利用快速幂,把时间复杂度从O(n)降为O(log(n))。

对于第二个问题,我们采用乘法和加法的取模公式:

(a+b)%m = a%m + 
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值