2009年1月6日 星期二

網頁密碼 - 混淆程序

在編程中,有一個東西叫做「混淆器」,是用來防止其他人輕易地閱讀及修改程式碼,防止抄襲。
這經常用於 Java 程式,因為 Java 程式很容易便能被反編譯,從而顯示出原始碼。
這亦經常用於 JavaScript,但很不幸的是,大部份人閱讀閣下網頁的 JavaScript,並不是為了抄襲。若果是抄襲,通常只要上網找找教學網便有大量資源可供參考。他們的目的是,為了獲得一些重要的資訊,例如傳送的資訊、傳送資訊的目的地、網頁密碼等。

看看以下一段 JavaScript Code (節錄)
var pass=new Array();
pass[0]="0110111001011101111000";
pass[1]="14916253649";
pass[2]="235711131719232931";
pass[3]="3*7*37=777";
pass[4]="4916253649";
pass[5]="5' or 1=1 --";

function max(which){
return (pass[Math.ceil(which)+(3&15)].substring(0,1))
}

function verify(verification){
if(verification.length==max(Math.LOG10E))
window.location=verification+".htm";
else
alert("Wrong password.");
}

究竟 verification.length 應該是多少?
表面上很混亂,但若加一句 alert(max(Math.LOG10E)); 便一下子浮現了 (4)。
當然每次也要貼去網頁編輯器去改是很麻煩的事,所以當你想插入 JavaScript 到網頁中,可以使用:
javascript:alert(max(Math.LOG10E));

注意,大部份瀏覽器若執行此類插入的 JavaScript 後有傳回值,便會轉到另一頁。例如:
document.getElementsByTagName('div')[0].innerHTML='test';

這樣便需要在最後加上 void(0); 傳回 Null來停止轉頁:
document.getElementsByTagName('div')[0].innerHTML='test';void(0);


P.S. 我個人覺得這篇文與密碼學不太相關。

沒有留言:

張貼留言