Re: [閒聊] 有趣的網頁

看板NTUE-CS99作者 (風之信使)時間17年前 (2008/07/02 02:00), 編輯推噓3(300)
留言3則, 3人參與, 最新討論串2/2 (看更多)
太無聊了 把之前找的資料貼一貼好了 首先先來認識一下一些函式 parseInt(string) parseInt(string, radix) 這個函式可以把string轉成數字 假如第一個字元無法轉成數字則傳回NaN stringObject.substring(start) stringObject.substring(start,stop) 從第start個位子開始讀取字串到第stop個 stringObject.indexOf(searchvalue) stringObject.indexOf(searchvalue,fromindex) 這個函式可以在字串搜索字串 並傳回開始的位置 如果找不到則傳回-1 ^ Xor的運算子 Xor的真值表 X Y → Z 0 0 0 0 1 1 1 0 1 1 1 0 ex. 00100110 ^ 10110101 ------------- 00100110 ^ 10110101 = 10010011 接下來就可以開始分析程式碼了 function testEncode(form) { seed = 1; newStr = encode(form.passwordField.value, seed) newStr2 = encode(newStr , seed) if(form.userName.value!='cs5801') alert("帳號或密碼錯誤,請重新輸入!") else if(newStr !='86msgvdt') alert("帳號或密碼錯誤,請重新輸入!") else document.location = newStr2+".htm" } 上面這段不重要 應該沒人看不懂吧 重點是下面這段 function encode(inStr, seed){ seed = parseInt(seed); var char, index, newIndex, outStr=""; var refStr="0123456789abcdefghijklmnopqrstuvwxyz._~ABCDEFGHIJKLMNOPQRSTUVWXYZ"; for (var i=0; i<inStr.length; i++) { char = inStr.substring(i, i+1) index = refStr.indexOf(char) newIndex = index^seed; // ^: bitwise xor operator outStr += refStr.substring(newIndex, newIndex+1); } return (outStr) } 函式一開始會進入兩個值 inStr是你輸入的密碼 seed是testEncode()宣告的一個變數 函式第一行是要確定seed是個int 接下來幾乎都是宣告的部分 再來就是第5行開始的for迴圈 這個迴圈要執行inStr長度的次數 迴圈一開始 先把inStr字串的第i項放入char中 然後尋找refStr中出現char的位置 將index^seed放入newIndex中 最後把第newIndex位置的refStr字元加入outStr中 整個for迴圈跑完就輸出outStr 從以上分析可以發現 編碼的重點在於Xor的運算 在testEncode()中定義seed為1 現在我假設index為0 00000000 ^ 00000001 ----------- 00000001 => 所以出來會是1 假設index為1 00000001 ^ 00000001 ----------- 00000000 => 出來為0 所以這個東西只是把最左邊一位1變成0 0變成1而已 也就是說 2會變3 3會變2 以此類推 輸入的東西是refStr字串的第19個 就會輸出refStr的第18個 這樣就能解決問題了 假如他的seed不是1 甚至不是固定值怎麼辦? 很簡單 在做一次Xor就好了 = =b ---------------------------------------------------- 以上是正統解法 我當初是把整個網頁抓下來放在自己電腦跑 改個幾行程式答案就出來了 不過這解法好沒品 = =a -- ◥◣ ◢◤ 萃まる夢、幻、そして百鬼夜行 ﹒ ▕● < ● ▕ § § 伊吹の西瓜 ▄▄ Suika Ibuki gbwind ψgbwind -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.132.162.39

07/02 02:26, , 1F
強者志明~~ 等等看完= =
07/02 02:26, 1F

07/02 10:24, , 2F
oh~ fucking xor XD
07/02 10:24, 2F

07/02 11:02, , 3F
不愧是日和大大 =口=
07/02 11:02, 3F
文章代碼(AID): #18Qd2p0u (NTUE-CS99)
文章代碼(AID): #18Qd2p0u (NTUE-CS99)