西郵Linux小組免試題揭秘西郵Linux小組免試題——繼續挑戰

來源:互聯網
上載者:User

還記得東京大學情報理工學系的招生海報嗎?只要答對了問題,然後你就被錄取了。當時可火了,人人和微博瘋狂轉載。

如今西郵Linux小組也搞了個這樣題目,只要你能答對,就能免試進入西郵Linux小組!感覺挺好玩,遂挑戰一把。

題目原文在這裡:http://www.xiyoubbs.com/thread-81454-1-1.html

第一關題目

題目就是一段密文:

0011011101111010101111001010111100100111000111000000000000000011100110111011010111100011010100101111011000000000000000000000000000000000000000000000000000000000010011100000000000000000000000000000000000000000000000000000000001011110001100000101000101001101000000000001000110011001000010001010011010000010100110011011100011000101100001110010010001011010011100010011010111011001000011110111010110101101101110011100111111110101000010110111001110001001011101111011010010011000001110111001111100010100100100010010110101010101100001000101011001110010101111101100100100000101011100000011011001010101000110111101011001010101000001101001000111000011100101101111010001010001100011110110000011111010100101111100101010000111010111001110111011011110100100001001110001111010110100111001110000111111100100010011010001011110000101010000110101000111100101111100110101000100111101101100000110111111000111100001010111000101100010011111100111101110111110111111001111010010000100010100000101011101011010001010111011110111011001000001111100110100111101011011111001101110000110101101010011101010101001000011011110111111001111000010000110010110101100100010110110101000110110111001100011010011111001110110111101100000101001011101110011111101010110101100010001011001010000100100100000001010110111111101101111001000011010111001101110100110000101110110100110101100100011100011110100111011010001001010110110101011010111111001001110101001011110010010001011101000010001101010001110100001011000001110011000100001110110101001000101110001100001010000101100101101111100101110011001011000111011010111010000010101111110001100001110011110010011110110101100110011101101110001101110110001101101001001011110110101101010110111111100111110000111010010111111110001010111000010100000000001100110001101111011001010101001100100101101010011110000010000100111000011110111001001100110101101101110101100111001101000010010101000100101111010101000000100011000101100110011111010101111000110100010110011000000110000000000110110001111011110001110011101000100100010010111110000001001000100100011011100110001011111101101011110100101101000010011010100110101100110001010011101111011101101111010000110110100111101100101110001100010100111111101101011110001101001111110010000000000000000000000010000010000000110000000000000000100001001100000001111011000000000000001110000101100000001000000000000000100100011000000110000000100000001000001010101110100000000000000000000000100000000000011001000001000000010000000000000100000001010000000011000110001111011110010111100101100000000000000000000010100000001000100010000111100000000011000110000000001101111000000000110010000000000011001010000000000101110000000000110001100000000000000000000000000010100000010100000000100000000000000000011101100100000001000010110000100100000110011100000000100010101000001100000000100000000001000001000000010110100100000010000000000000000
分析

一大串01代碼,二進位也是01代碼,其中可能有某種關聯,首先轉換成ASCII代碼看看吧。

線上的工具是最方便的!http://home.paulschou.net/tools/xlate/。把那一串01代碼貼進第二個框,單擊下面的“DECODE”,瞬間就轉完了:

注意觀察一下第一個文字框,前兩個字母是“7z”,7z是什嗎?7z不就是7zip壓縮格式嗎?難道這是一個7z的壓縮包?有可能!再找個7z壓縮包開啟看看,vim -b + 檔案名稱 開啟一個7z格式的壓縮包,輸入: %!xxd 查看其16進位編碼:

再和上面的圖片的第三個框的編碼比較一下,發現了什嗎?前面的37 7a bc af 27 1c 00 03完全是一樣的!這不是巧合,這足以讓我們確信這就是一個7z的壓縮包,下面的任務,就是將壓縮包還原,用python寫了個小程式:

#!/usr/bin/env python#coding=utf-8data = open('data.txt')out = open('out','a')while True:    d = data.read(8)    if len(d) != 8:        break    out.write(chr(eval("0b%s"%d)))data.close()out.close()

data.txt裡面放的是那以長串01代碼,執行程式後得到一個名字為out檔案,用file out命令查看檔案類型,顯示:out: 7-zip archive data, version 0.3。果然沒用猜錯!接下來就是解壓這個檔案了:7z e out,然後,我們就會發現目錄下多了一個code.c檔案,內容如下:

#define ____ puts#define __ main#define _ int#define _______ char#define _____ {#define ______ }_ puts (_______ *); _ __() _____ ____ ("\151\156\164\040\143\157\144\145\040\133\135\040\075\040\173188""66\0700168\054\04020163\0658202\054\04019702\0639849\054\040""016533\06464554\054\0402016\06423544\054\04017179\0706918\054\0401""8653\0611846\054\0400x6\06772\175\073\012\143""\150\141\162\040\052""\141\156\163\167\145\162\040\075\040\050\143\150\141\162\040\052""\051\143\157\144\145\073" ); ______

這是神碼東東?一大堆宏定義,難道要我們翻解碼?不管了,讓電腦自己去翻譯吧。編譯執行:gcc code.c -o code,編譯成功,執行./code,得到下面的結果:

int code [] = {1886680168, 2016358202, 1970239849, 016533464554, 2016423544, 1717986918, 1865311846, 0x6772};char *answer = (char *)code;

這又是神碼東東?怎麼看著這麼像C語言,這應該就是C語言代碼,寫個小程式,執行一下這個代碼:

#include <stdio.h>int main(){    int code [] = {1886680168, 2016358202, 1970239849, 016533464554, 2016423544, 1717986918, 1865311846, 0x6772};    char *answer = (char *)code;    puts(answer);    return 0;}

編譯執行,你猜結果是什嗎?結果是:http://xiyoulinux.0xffffff.org,一個網址!哈哈,果斷開啟,頁面跳轉到了http://xiyoulinuxgroup.sinaapp.com/,頁面是這樣的:

您可以通過這個連結訪問這個頁面:頁面連結,還能查看源碼。

僥倖過了第一關!

第二關題目在哪?

我們看到上面的頁面有一個輸入框,隨便輸入焦點東西,提示“口令錯誤!”,看來,這一關是要輸入一個正確的口令才能過關,那口令是神碼?自己找。

開啟源碼,首先映入眼帘的是好多數字,先把這些數字儲存到num.txt裡面,寫個小程式分析一下:

a = open("num.txt")li = a.read().split()num = [int(i) for i in li]count = len(num)max = max(num)min = min(num)print max,min,count

統計結果表面,這些數字最大是99991,最小是8053,總共8582個。這些數字有什麼含義呢?開始猜吧。

記得東京大學裡面有聲音,這些數字不會是聲音吧?用數字表示聲音的音調高低還是什嗎?如果表示聲音的話範圍也太大了吧。人的聲音頻率範圍是64~523Hz,顯然上面提供的數有點大啊。

或者表示圖片,表示像素點顏色?像素點顏色最大是(255,255,255)255*255*255 = 16581375,貌似差距也比較大。想了半天,感覺不太靠譜,開始重新審視那個頁面。

頁面裡面有兩個東西比較可疑: 
cript src="http://s16.cnzz.com/stat.php?id=5134185&web_id=5134185&show=pic" language="JavaScript"></script> 
<link href="question.css" rel="stylesheet">。 
其中前一個JS開啟看了一下是挺亂的,沒猜錯的話應該是個頁面訪問統計的東西,因為CNZZ就是資料專家站長統計。 下面那個CSS點開一看,內容是這樣的:

.STYLE1 {    font-size: 36px;    font-family: "黑體";}.STYLE2 {font-family: Arial, Helvetica, sans-serif}/*%E8%AF%B7%E5%9C%A8%E5%8E%9F%E9%A1%B5%E9%9D%A2%E6%95%B0%E5%AD%97%E4%B8%AD%E6%89%BE%E5%87%BA%E5%94%AF%E4%B8%80%E7%9A%84%E5%90%88%E6%95%B0*/

最下面的一個注釋相當可疑啊!有點經驗的應該能看出來是url編碼,什麼意思?解碼一下就知道了,懶得寫程式,用線上的吧:http://tool.chinaz.com/Tools/URLEncode.aspx,把那段帶編碼的輸進去,點擊UrlDecode解碼,瞬間題目就出來了:“請在原頁面數字中找出唯一的合數”。

天啊,原來是找合數,那就簡單了,8000多個數,用python寫個小程式瞬間搞定:

#!/usr/bin/env python#coding=utf-8import matha = open("num.txt")li = a.read().split()num = [int(i) for i in li]a.close()def test(num):    for i in range(2,int(math.sqrt(num))):        if num % i == 0:            return True    return Falsefor i in num:    if test(i) == True:        print i

結果是98201,果斷在頁面輸進去,然後就算過關啦!然後頁面顯示一個二維碼:

頁面的內容是這樣的:

<h1 align="center">[3/5]</h1><div align="center"><img src="http://heylindayi.sinaapp.com/test/new.jpg"></div><script src="http://s16.cnzz.com/stat.php?id=5134185&web_id=5134185&show=pic" language="JavaScript"></script>
第三關

看到二維碼,第一反應就是掃一掃,用我查查一掃,掃出來個的url,估計是了,然後用掃一掃,然後就加入了西郵Linux興趣小組,然後就是各種調戲,調戲,調戲。調了半天沒調出個翔來。。。

再回頁面找找,源碼就上面那些,沒什麼啊,那問題在那裡?有問題可以想法解決,不知道問題就悲劇了,都不知道往哪方面想。

是不是圖片有陷阱?抱著試試看的態度用vim開啟了那張圖片,看到最後答案就出來了,在最後一行寫著:password:LinusTorvalds1969

好吧,這就是密碼了,然後在在上輸入這一串密碼,他們的返回了這些資訊:“對不起,你目前還沒有通過任何一次面試.”。

好吧,看來我這個外校的只能挑戰到這了。。

總結

西郵的題目還是很有技術含量的,對新手來說還是很有挑戰性的!做出題來不牛逼,出題者才牛逼!

題目不需要特別高深的編程基礎,只要有點基礎,有點經驗,敢於探索,勇於發現和創新,喜歡折騰,做出題目來就不難。這正是Linux小組成員必備的技能或素質。

題目很有趣,或許通過講解,能讓更多的人對Linux感興趣,對Linux技術感興趣,這就達到目的了。

推廣一下西郵Linux興趣小組:
  • 小組首頁
  • 小組簡介
  • 小組部落格
  • 小組相簿
  • 小組維基
順便推廣一下山東理工大學Linux小組:
  • 小組論壇
  • 小組部落格
  • 小組海報
  闖關還沒有結束,下一篇更精彩 點擊查看:西郵Linux小組免試題——繼續挑戰

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.