參加 JSP 國中科學探究聯合發表會 的所見所得。事前的準備,到結束後的回味,新的故事,至今仍持續發生。 本次主題的系列文章, 演講影片

老街解謎

在看了海報發表以及趣味課程後,我們在下午四點即將出發到大溪老街,進行大溪老街實境解謎,要在大溪老街中,找出各個謎題的答案。我將網站的連結放這邊 (抱怨一下,這個網站沒辦法用Firefox開啟!!害我用了55 mb下載 chromium)

裡面的每一題都十分困難,需要實際到老街裡面走,而且不太可能用搜尋引擎得到答案。

我一開始是非常熱血的,在前往的路途上就開始研究地圖,根據主辦老師給的地圖,我發現一些可疑之處,並且開始計畫一個攻克路線。 結果到了現場,我們的隊輔表示已經跟友隊串通好要一起破解,我就失去動力了,有時候自己快解出來了卻「被」公佈答案,真的是最掃興的事。

直到我發現,答案都在網頁裡

熱血駭客魂

事情是這樣的,原先我以為答案在伺服器中,客戶端將輸入的答案傳送給伺服器核對,伺服器再回傳是否正確。但是我關了網路,卻仍然可以知道答案是否正確,證明了「答案」一定被紀錄在網頁的某個角落。

哇!發現這個之後不得了,我立刻跟我的工程師朋友講這件事,就用手機想來看原始碼,手機打不開,於是就出動了我隨身攜帶的筆電。

我和我朋友的熱血駭客魂立刻爆發了,我們雖然無法自己找出答案,但可以追求屬於我們的勝利。原本我想答案應該會被隨便擺在某個陣列或是物件中,於是就根據前面所得到的答案內容下去搜尋,應該就能找到擺放答案的陣列。結果不然,什麼都沒查到。我們繼續嘗試用各種關鍵字,像是「答案」、「answer」、「第六題」等等,仍然一無所獲。

看來設計網頁的人有想刻意隱藏這個答案,沒辦法那麼容易破解。

我們開始一行一行慢慢看原始碼,有時候看到關鍵字搜尋,我們兩個都對Javascript(撰寫網頁程式的程式語言)不太擅長,因此看的有些吃力。

<script type="text/javascript" src="../js/md5.js"></script>

當我們看到這一行的時候,我朋友突然大叫。

天啊!它竟然用MD5!這下解不開了。

我不知道MD5是什麼,朋友解釋說,MD5是一種密碼雜湊函式,簡單來說,可以將一個資料轉換為一段暗碼,但你難以透過暗碼去推回原先的資料,也就是單向函式

那要如何利用MD5? 以這個網頁為例,假設答案是「地瓜」(我絕對沒有要劇透的意思),那網站就先將「地瓜」用MD5加密成一段暗碼,然後把暗碼放到網頁裡面。 當使用者輸入答案時,網頁的程式將會將輸入的答案用MD5加密,然後比對加密的結果跟原先放在網站裡的暗碼是否一致,如果一致則代表使用者輸入的答案是正確的。

在證得了這個網頁使用MD5來防止破解後,我們就放棄透過看原始碼來取得答案了。雖然破解失敗了,但是這個破解的過程,或者說跟朋友一起破解的過程,卻是我從未體驗過的。

撩妹…不,我們撩 Object

話說JSP最刺激而瘋狂的活動就是**「隱藏任務」啦!第二天的晚上你別想睡覺,有著最困難的任務要和你的組員一起完成。我們去年在福科的隱藏任務是「開店計畫」**,我們從下午到夜市探勘,到晚上在體育館內討論,我還負責了影片的製作,結果竟然到了半夜三點才睡覺,而且隔天六點就得起來。

隱藏任務雖然辛苦,但非常好玩,在去年的最後一天發表會上,所有人都非常熱烈,台上與台下在熱絡的嘴炮討論。最吵的莫過於我們學校的學生了,每個人好像都不怕生,對台上的講者有一堆意見,這可歸功於我們科研社老師平日的「教育有方」。

而今年的隱藏任務是什麼呢?「科學幽默Slogan」(這是我自己的取名啦),看中最近蔚為流行的「撩妹語錄」、「負能量語錄」,今年的隱藏任務就是要來想跟科學相關的各種Slogan啦!

那我們這組想了什麼呢?我們一開始就打算反骨到底,撩「妹」太嫩啦!我們來撩弟,但一群雄性動物不知道該怎麼撩自己;再來是使用的語詞,我們絞盡腦汁,還是想不出什麼可以用來騷擾同性的詞彙。

於是有人說不要針對性別啦!都撩好嗎?都撩。咦?那就變成「撩People語錄」了? 這時,我朋友突然用他的工程師專業說了句:

「不然『撩Object語錄』?」

其他人都愣在那裡,只有我當場笑倒。

跟大家解釋一下,Object 物件,是在程式設計中的一個概念,在物件導向程式設計中,認為程式是由各種「物件」所組成的,而通常這些物件的最高Parent物件就是Object,所以「撩Object」,根據多型的原則,就是撩了所有的宇宙萬物了。

// 在我的文章中有講解簡單的物件導向觀念,有興趣的朋友可以去看看。物件導向的細節很多,如果想知道更深入的可能要自己去查囉!

畢達哥拉斯

那既然確定要「撩Object語錄」了,那也不用在乎受眾是誰,我們開始想各個科學家的撩Object語錄。 幸好強者我朋友,平日都在看一些怪怪的書,科學素養很高,認識許多科學家和他們的產地。我們常使用一種比較艱澀的鋪梗法,是將科學家本來自己的理論,為了撩Object而故意弄成錯的,例如我自己很喜歡的一則:

畢達哥拉斯: 「你是唯一的無理數」

還是稍微解釋一下,畢達哥拉斯的教派(他有一幫的弟子)有一個思想,是對「比例」的追求,他們相信所有的數字都可以用 “a/b” 這樣來表示,然而當他的一位弟子證明了正方形的斜邊長,也就是√2是個無理數時,他弟子就「溺死」了,我是說被溺死了。

伽利略

再舉一個比較熟知的例子,伽利略應該很多人都熟悉。

伽利略: 「我想和你一起掉下去」

伽利略是推翻過去亞里斯多德「越重東西掉落速度越快」理論的人,在他著名的比薩斜塔實驗中,他將兩顆材質相同但質量不同的球體,從比薩斜塔上往下丟,證明物體的掉落速度與質量無關。

所以「和你一起掉下去」,我們就永遠不分開啦!

完整的內容

這張做一個小註解,它是我們的另一位組員想的,唯一不是我們這兩個阿宅想的內容。非常令人驚訝的是,在發表會上,這是最成功的一則。

現場的老師還加了一個附註: 此事(式)不存在


//說好的去中心化呢?


後來也有想到用:

void love ( you ) {
    love(you);
}

心得

以上,就是今年JSP的紀實啦! 今年最大的收穫,莫過於捕獲了一名野生工程師,從小六開始自己玩Scratch,到現在一路走來都是孤獨的,有時候真的會懷疑,自己寫的程式會不會其實很爛,但從來都沒有可以比較或互相學習的對象。

在離開會場之前,我們留下彼此的四五個聯絡方式(確保萬一),還約好了一起來做火輪手槍的網頁版!現在已經開始研發。

仔細回想,JSP或許是我這個暑假最值得留戀的回憶,從一開始準備的兩個禮拜,到事後寫文章的現在,不停努力的目標。 我一直很害怕自己會過一個虛無飄渺的暑假,擔心當暑假即將到達盡頭,自己卻什麼都沒留下。

而現在我終於可以確定,因為JSP,這個暑假,我不會忘記。