南宁城市轨道交通招聘:java script 密码问题

来源:百度文库 编辑:神马品牌网 时间:2024/05/04 19:11:49
谁能解如下的密码。

<script>

var pass=new Array()
var t3=""
var lim=8
pass[0]="m3JtpznVQ8sCfXU"
pass[1]="lHzv1fREVD84tes"
pass[2]="c5Fi1XRUVcdExPg"
pass[3]="opplvoqswcs5KbP"
pass[4]="8erJZvcfcuOprVgw"
pass[5]="29erJZvcfcuOprVg"

var extension=".htm"
var enablelocking=0
var numletter="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
var temp3=''
var cur=0

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

function testit(input){
temp=numletter.indexOf(input)
var temp2=temp^parseInt(pass[phase1-1+(1|3)].substring(0,2))
temp2=numletter.substring(temp2,temp2+1)
return (temp2)
}

function submitentry(){
t3=''
verification=document.password1.password2.value
phase1=Math.ceil(Math.random())-6+(2<<2)
var indicate=true
for (i=(1&2);i<window.max(Math.LOG10E);i++)
t3+=testit(verification.charAt(i))
for (i=(1&2);i<lim;i++){
if (t3.charAt(i)!=pass[phase1+Math.round(Math.sin(Math.PI/2)-1)].charAt(i))
indicate=false
}
if (verification.length!=window.max(Math.LOG10E))
indicate=false
if (indicate)
window.location=verification+extension
else
alert("密码错误!")
}
</script>
<form name="password1">
<title>::</title>
<table border="1" cellspacing="5" cellpadding="15" bgcolor="#3399cc" width="303" style="border-collapse: collapse" bordercolor="#3366cc" class="exheading">
<tr>
<td width="287" height="41" valign="top" bordercolor="#3366cc" bgcolor="#3399CC">
<div align="center">
<center>
<font color="#FFFFFF" size="3" face="Arial, Helvetica, sans-serif"><b>密码:</b></font>
<input type="text" name="password2" size="20" style="border: 1px solid #3366cc">
<input type="button" value="确认" onClick="submitentry()" name="button">
</center>
</div>
</td>
</tr>
</table>
</form>

第一步:

先alert(window.max(Math.LOG10E)),得出密码是8位。

第二步:

alert(pass[phase1+Math.round(Math.sin(Math.PI/2)-1)].charAt(i)),得到t3的值opplvoqs

第三步:通过分析代码,发现t3的值是testit(verification.charAt(i))得到的,找到testit()函数。

第四步:发现里面的函数里的phase1没有值,在后面的代码里找到Math.ceil(Math.random())-6+(2<<2)并把它alert出来,是3

第五步:构造一段代码,先用数字测试一下:
<Script Language="JavaScript">
var pass=new Array()
var t3=""
var lim=8
pass[0]="m3JtpznVQ8sCfXU"
pass[1]="lHzv1fREVD84tes"
pass[2]="c5Fi1XRUVcdExPg"
pass[3]="opplvoqswcs5KbP"
pass[4]="8erJZvcfcuOprVgw"
pass[5]="29erJZvcfcuOprVg"

var extension=".htm"
var enablelocking=0
var numletter="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
var temp3=''
var cur=0

function testit(input)
{
temp=numletter.indexOf(input)
var temp2=temp^parseInt(pass[3-1+(1|3)].substring(0,2))
temp2=(numletter.substring(temp2,temp2+1))
return (temp2)
}
var i=0
for(i=0;i<10;i++)
{
alert(testit(i))
}
</script>
得到0123456789分别对应tsvuporqlk,由此得出opplvoqs对应的密码是54482571