-
曾经做的一道 js 题 - [椒图之门 Code]
2009-06-30
版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
http://fuckui.net/logs/41716759.html
<script>
var pass=new Array()
var t3=""
var lim=9
pass[0]="CMG2uMcY5CHS7tk"
pass[1]="75DtE9jchn7QCTL"
pass[2]="cwYSbNm8gMUFh3l"
pass[3]="76OgiilqjKew6Kx"
pass[4]="9iBERc2WGbKAvHky"
pass[5]="18iBERc2WGbKAvHk"
var extension=".html"
var enablelocking=0
var numletter="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
var temp3=''
var cur=0
function max(which){
return (pass[Math.ceil(which)+(3&15)].substring(0,1))//根据传送过来的Math.LOG10E计算应为pass[4].substring(0,1),查看数组pass4,得到返回值为9(注意因为提交值固定为Math.LOG10E所以其实这部分是花指令就为为了返回一个9)
}
function testit(input){
temp=numletter.indexOf(input)//返回输入的字符在numletter的位置,从0开始算。(0-61)
var temp2=temp^parseInt(pass[phase1-1+(1|3)].substring(0,2))//pass[5].substring(0,2),temp2=temp^18(按位异或)
temp2=numletter.substring(temp2,temp2+1)//根据算得的temp在numletter中取字段
//对应如下
//0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
//ijghmnklqropuvst23016j45ab89efcd0PMNSTQRWXUV YZyzwxCDABGHEFKL
return (temp2)
}
function submitentry(){
t3=''
verification=document.password1.password2.value//将密码赋值给verification
phase1=Math.ceil(Math.random())-6+(2<<2)//随机0-1小数,phase1=1-6+8,phase1为3
var indicate=true
for (i=(1&2);i<window.max(Math.LOG10E);i++)//i=0,Math.LOG10E是以10为底的e的对数,为0.4342944819032518,e是常量e自然对数的底,调用函数max()处理Math.LOG10E,i递加循环。处理后应为 for (i=0;i<9;i++)
t3+=testit(verification.charAt(i))//i=9,循环读取密码交给函数testit处理。
for (i=(1&2);i<lim;i++){//还是i=0;i<9;i++
//其实可以再这里简单加一句alert(pass[phase1+Math.round(Math.sin(Math.PI/2)-1)].charAt(i))来快速获取密文
//或者直接加一句alert(pass[3].charAt(i)),因为按位异或的逆运算还是按位异或,所以可以直接获得需要的密码 numletter.substring((numletter.indexOf(pass[3].charAt(i)))^18,((numletter.indexOf(pass[3].charAt(i)))^18)+1)
//alert(pass[3].charAt(i))弹出密文
//alert(numletter.substring((numletter.indexOf(pass[3].charAt(i)))^18,((numletter.indexOf(pass[3].charAt(i)))^18)+1))弹出密码
if (t3.charAt(i)!=pass[phase1+Math.round(Math.sin(Math.PI/2)-1)].charAt(i))//最后pass[3+0].charAt(9),判断返回值是否为76Ogiilqj,根据上面函数得到密码为lkw200781。
indicate=false
}
if (verification.length!=window.max(Math.LOG10E))//判断是否为9位
indicate=false
if (indicate)
window.location=verification+extension//取密码+htm为跳转地址
else
alert("密码错误,请再输入!")
}
//var p="";
//for (var n=0;n<pass[3].length;n++){
// for(var i=0;i<62;i++){
// var tp1 = numletter.substring(i,i+1);
// var tp2 = i^18;
// var tp3 = numletter.substring(tp2,tp2+1)
// var tp4 = pass[3].substring(n,n+1);
// if (tp3 == tp4){p += tp1;break;}
// }
//}
//document.password1.password2.value = p.substring(0,9);
</script>
<table border="1" align="center" cellpadding="0" cellspacing="0" bgcolor="#FFFFBD">
<tr>
<td width="100%">
<form name="password1"><div align="center"><center><p><strong>Enter password: </strong><input
type="text" name="password2" size="15"><br>
<input type="button" value="点击进入" onClick="submitentry()"></p>
</center></div>
</form>
</td>
</tr>
</table>
这个东东的解密关键在于抓住验证的地方来反推,其实主要是看知不知道 按位异或(XOR) 的逆运算。历史上的今天:
偏方精选 2009-06-30bbs“顶” 番外篇 2009-06-30手机里暗含的秘密,让我大吃一惊!给你提个醒 !! 2009-06-30Win2k3 精简资料 2009-06-30睡五分钟等于六钟头的方法 2009-06-30
