進入第四關,許毅找了老半天,實在是沒找到哪個地方是突破口,源代碼是檢查了一遍又一遍,正懷疑線索可能並不在源代碼中的時候,他終於發現了奇怪之處。
在源代碼中有這麼一句:
疑點就在這裡了,這段代碼看上去好像沒什麼問題,可是卻沒什麼具體的作用。通常情況下,腳本代碼都是夾在和之間的,但這個其中卻沒有任何代碼。這還不是主要的,關鍵在於,如果網頁腳本語言要使用JavaScript語言的話,正確格式應該為:
或者,將腳本獨立出來,直接放到另外一個文件中,然後進行引用。則語法為:
也就是說,上面那個是引用了一個文件了,而文件名正好是JavaScript,出題者這麼出,正好是利用它們之間的相似之處,如果對這兩個概念不清楚,還真不能發現其中的疑點,當然,這麼一句無關緊要的代碼隱藏在大量代碼中,如果不細心也是發現不了的。
許毅按照上面的地址,將那個文件打開,果然裡面有東西,準確的說裡面是一句密文,許毅知道自己找對了。
就這麼一句密文,不知道加密算法也是沒有任何辦法的。加密算法何其多,任許毅如何厲害,單憑一句密文也是不能破解的,這個不比軟件破解,這只是一個過關密碼,也不能根據上下文來推斷,各種情況都是有可能的。
既然這是闖關遊戲,那肯定還有其他什麼線索,這點是可以肯定的。於是,許毅又回到網頁源代碼上,仔細閱讀起來,在其中,發現了一小段和加密有關的代碼,不過這段代碼實際上是沒有起作用的,並沒有得到執行,唯一的作用那就是干擾了。其中用的加密方式是base64加密,許毅感覺到自己又一次抓住了過關的鑰匙。
許毅再次查看了一下密文的特點,更加肯定這正是用base64加密算法加密的密文了。
Base64是互聯網上用的比較多的一種算法,它是為了解決郵件傳輸中的加密和二進制數據(聲音、圖形圖像等)傳輸問題而產生的。也就是說,這個算法和郵件聯繫緊密,幾乎所有的電子郵件軟件都把它作為默認的二進制編碼,它已經成了現今電子郵件編碼的代名詞。
它的主要思想是將輸入的字符串或數據編碼成只含有{『A『-『Z『,『a『-『z『,『0『-『9『,『+『,『/『}這64個可打印字符的串,故稱為「Base64」(基於64個字符)。它構造簡單,速度快,但安全性就一般了,因為這是一種可逆的加密算法,也就是說只要知道密文,就可以將明文很輕易地恢復過來。
在PHP編程中,裡面就內置了這樣的加密函數,所以許毅很輕易地就將密文破解了,得到了進入第五關的密碼。
來到第五關的頁面,這次倒乾脆,直接給出了一個16位的密文,另外還有一段提示,說密碼是6位純數字。16位的密文,許毅立刻就想到了MD5加密,再聯繫題目給出的提示,許毅大致猜測自己的推斷應該是不錯了,不然也不會給出這麼一個提示。
看到這個,許毅有些無奈了,他估計這關卡也許就到頂了。因為MD5加密算法是不可逆的,許毅要想破解,就只能是暴力破解了,編寫一個軟件對6位數字進行窮舉,肯定可以將密文跑出來。
既然是MD5,前面自然還有MDX(X