这段代码关键部分就是 function ee(){} 我输入密码,然后经过加密,通过 post 方式请求返回服务器。我用 python 写个模拟登陆,但是这段加密搞不定,照着写出来的代码,运行结果不对。。 正确的值如下: upass: E1f0813d4cea349c75b135043842608b123456781
~~~~~~~~~~~~~javascript 代码~~~~~~~~~~~~~~~~~~~~~~~~
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<script language="JavaScript"><!--
sv=0;sv1=0;v6='http://[::]:9002/v6 ';myv6ip=' ';v4serip='10.100.10.104' ;m46=0;v46ip='172.19.213.68' ;
ps=1;pid='1';calg='12345678';
function safe_add(x,y){
var lsw=(x&0xFFFF)+(y&0xFFFF)
var msw=(x>>16)+(y>>16)+(lsw>>16)
return(msw<<16)|(lsw&0xFFFF)}
function rol(num,cnt){return(num<<cnt)|(num>>>(32-cnt));}
function cmn(q,a,b,x,s,t){return safe_add(rol(safe_add(safe_add(a,q),safe_add(x,t)),s),b);}
function ff(a,b,c,d,x,s,t){return cmn((b&c)|((~b)&d),a,b,x,s,t);}
function gg(a,b,c,d,x,s,t){return cmn((b&d)|(c&(~d)),a,b,x,s,t);}
function hh(a,b,c,d,x,s,t){return cmn(b^c^d,a,b,x,s,t);}
function ii(a,b,c,d,x,s,t){return cmn(c^(b|(~d)),a,b,x,s,t);}
function coreMD5(x){
var a=1732584193
var b=-271733879
var c=-1732584194
var d=271733878
for(i=0; i < x.length; i+=16){
var olda=a
var oldb=b
var oldc=c
var oldd=d
a=ff(a,b,c,d,x[i+0],7,-680876936)
d=ff(d,a,b,c,x[i+1],12,-389564586)
c=ff(c,d,a,b,x[i+2],17,606105819)
b=ff(b,c,d,a,x[i+3],22,-1044525330)
a=ff(a,b,c,d,x[i+4],7,-176418897)
d=ff(d,a,b,c,x[i+5],12,1200080426)
c=ff(c,d,a,b,x[i+6],17,-1473231341)
b=ff(b,c,d,a,x[i+7],22,-45705983)
a=ff(a,b,c,d,x[i+8],7,1770035416)
d=ff(d,a,b,c,x[i+9],12,-1958414417)
c=ff(c,d,a,b,x[i+10],17,-42063)
b=ff(b,c,d,a,x[i+11],22,-1990404162)
a=ff(a,b,c,d,x[i+12],7,1804603682)
d=ff(d,a,b,c,x[i+13],12,-40341101)
c=ff(c,d,a,b,x[i+14],17,-1502002290)
b=ff(b,c,d,a,x[i+15],22,1236535329)
a=gg(a,b,c,d,x[i+1],5,-165796510)
d=gg(d,a,b,c,x[i+6],9,-1069501632)
c=gg(c,d,a,b,x[i+11],14,643717713)
b=gg(b,c,d,a,x[i+0],20,-373897302)
a=gg(a,b,c,d,x[i+5],5,-701558691)
d=gg(d,a,b,c,x[i+10],9,38016083)
c=gg(c,d,a,b,x[i+15],14,-660478335)
b=gg(b,c,d,a,x[i+4],20,-405537848)
a=gg(a,b,c,d,x[i+9],5,568446438)
d=gg(d,a,b,c,x[i+14],9,-1019803690)
c=gg(c,d,a,b,x[i+3],14,-187363961)
b=gg(b,c,d,a,x[i+8],20,1163531501)
a=gg(a,b,c,d,x[i+13],5,-1444681467)
d=gg(d,a,b,c,x[i+2],9,-51403784)
c=gg(c,d,a,b,x[i+7],14,1735328473)
b=gg(b,c,d,a,x[i+12],20,-1926607734)
a=hh(a,b,c,d,x[i+5],4,-378558)
d=hh(d,a,b,c,x[i+8],11,-2022574463)
c=hh(c,d,a,b,x[i+11],16,1839030562)
b=hh(b,c,d,a,x[i+14],23,-35309556)
a=hh(a,b,c,d,x[i+1],4,-1530992060)
d=hh(d,a,b,c,x[i+4],11,1272893353)
c=hh(c,d,a,b,x[i+7],16,-155497632)
b=hh(b,c,d,a,x[i+10],23,-1094730640)
a=hh(a,b,c,d,x[i+13],4,681279174)
d=hh(d,a,b,c,x[i+0],11,-358537222)
c=hh(c,d,a,b,x[i+3],16,-722521979)
b=hh(b,c,d,a,x[i+6],23,76029189)
a=hh(a,b,c,d,x[i+9],4,-640364487)
d=hh(d,a,b,c,x[i+12],11,-421815835)
c=hh(c,d,a,b,x[i+15],16,530742520)
b=hh(b,c,d,a,x[i+2],23,-995338651)
a=ii(a,b,c,d,x[i+0],6,-198630844)
d=ii(d,a,b,c,x[i+7],10,1126891415)
c=ii(c,d,a,b,x[i+14],15,-1416354905)
b=ii(b,c,d,a,x[i+5],21,-57434055)
a=ii(a,b,c,d,x[i+12],6,1700485571)
d=ii(d,a,b,c,x[i+3],10,-1894986606)
c=ii(c,d,a,b,x[i+10],15,-1051523)
b=ii(b,c,d,a,x[i+1],21,-2054922799)
a=ii(a,b,c,d,x[i+8],6,1873313359)
d=ii(d,a,b,c,x[i+15],10,-30611744)
c=ii(c,d,a,b,x[i+6],15,-1560198380)
b=ii(b,c,d,a,x[i+13],21,1309151649)
a=ii(a,b,c,d,x[i+4],6,-145523070)
d=ii(d,a,b,c,x[i+11],10,-1120210379)
c=ii(c,d,a,b,x[i+2],15,718787259)
b=ii(b,c,d,a,x[i+9],21,-343485551)
a=safe_add(a,olda)
b=safe_add(b,oldb)
c=safe_add(c,oldc)
d=safe_add(d,oldd);}
return [a,b,c,d];}
function binl2hex(binarray){
var hex_tab="0123456789abcdef"
var str=""
for(var i=0; i < binarray.length * 4; i++){
str+=hex_tab.charAt((binarray[i>>2] >>((i%4)*8+4))&0xF)+
hex_tab.charAt((binarray[i>>2] >>((i%4)*8))&0xF)
}
return str;}
function binl2b64(binarray){
var tab="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
var str=""
for(var i=0; i < binarray.length * 32; i+=6){
str+=tab.charAt(((binarray[i>>5] <<(i%32))&0x3F)|((binarray[i>>5+1] >>(32-i%32))&0x3F))
}
return str;}
function str2binl(str){
var nblk=((str.length+8)>>6)+1 // number of 16-word blocks
var blks=new Array(nblk * 16)
for(var i=0; i < nblk * 16; i++) blks[i]=0
for(var i=0; i < str.length; i++)
blks[i>>2]|=(str.charCodeAt(i)&0xFF) <<((i%4) * 8)
blks[i>>2]|=0x80 <<((i%4) * 8)
blks[nblk*16-2]=str.length * 8
return blks;}
function strw2binl(str){
var nblk=((str.length+4)>>5)+1 // number of 16-word blocks
var blks=new Array(nblk * 16)
for(var i=0; i < nblk * 16; i++) blks[i]=0
for(var i=0; i < str.length; i++)
blks[i>>1]|=str.charCodeAt(i) <<((i%2) * 16)
blks[i>>1]|=0x80 <<((i%2) * 16)
blks[nblk*16-2]=str.length * 16
return blks;}
function hexMD5(str){return binl2hex(coreMD5( str2binl(str)))}
function hexMD5w(str){return binl2hex(coreMD5(strw2binl(str)))}
function b64MD5(str){return binl2b64(coreMD5( str2binl(str)))}
function b64MD5w(str){return binl2b64(coreMD5(strw2binl(str)))}
function calcMD5(str){return binl2hex(coreMD5( str2binl(str)))}
function xproc1(str){
var EChars="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
var out,i,len,c1,c2,c3;
len=str.length;
i=0;
out = "";
while(i<len){
c1=str.charCodeAt(i++)&0xff;
if(i==len){out+=EChars.charAt(c1>>2);
out+=EChars.charAt((c1&0x3)<<4);
out+= "==";
break;}
c2=str.charCodeAt(i++);
if(i==len){out+=EChars.charAt(c1>>2);
out+=EChars.charAt(((c1&0x3)<<4)|((c2&0xF0)>>4));
out+=EChars.charAt((c2&0xF)<<2);
out+="=";
break;}
c3=str.charCodeAt(i++);
out+=EChars.charAt(c1>>2);
out+=EChars.charAt(((c1&0x3)<<4)|((c2&0xF0)>>4));
out+=EChars.charAt(((c2&0xF)<<2)|((c3&0xC0)>>6));
out+=EChars.charAt(c3&0x3F);}
return out;}
function cc(ss){f0.R1.value=ss;}
function ee(){
if(f1.DDDDD.value==""){alert("??ê?è??úμ???o? Please enter your account account number");return false;}
f0.DDDDD.value=f1.DDDDD.value
if(ps==0){f0.upass.value=xproc1(f1.upass.value);}
else{tmpchar=pid+f1.upass.value+calg;f0.upass.value=calcMD5(tmpchar)+calg+pid;f0.R2.value=1;}
document.f0.submit();
return false;}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~` 我用 python 写的加密代码
def safe_add(x,y):
lsw=(x & 0xFFFF)+(y & 0xFFFF)
msw=(x >> 16)+(y >> 16)+(lsw >> 16)
return(msw << 16)|(lsw & 0xFFFF)
def rol(num,cnt):
tmp = num << 2
tmp1 = abs(num) >> (32 - cnt)
return (tmp | tmp1)
def cmn(q,a,b,x,s,t):
return safe_add(rol(safe_add(safe_add(a, q), safe_add(x, t)), s), b)
def ff(a,b,c,d,x,s,t):
return cmn((b & c)|((~b) & d),a,b,x,s,t)
def gg(a,b,c,d,x,s,t):
return cmn((b & d)|(c & (~d)),a,b,x,s,t)
def hh(a,b,c,d,x,s,t):
return cmn(b ^ c ^ d, a, b, x, s, t)
def ii(a,b,c,d,x,s,t):
return cmn(c^(b|(~d)),a,b,x,s,t)
def coreMD5(x):
a=1732584193
b=-271733879
c=-1732584194
d=271733878
for i in range(0,len(x),16):
olda=a
oldb=b
oldc=c
oldd=d
a = ff(a, b, c, d, x[i + 0], 7, -680876936)
d = ff(d, a, b, c, x[i + 1], 12, -389564586)
c = ff(c, d, a, b, x[i + 2], 17, 606105819)
b = ff(b, c, d, a, x[i + 3], 22, -1044525330)
a = ff(a, b, c, d, x[i + 4], 7, -176418897)
d = ff(d, a, b, c, x[i + 5], 12, 1200080426)
c = ff(c, d, a, b, x[i + 6], 17, -1473231341)
b = ff(b, c, d, a, x[i + 7], 22, -45705983)
a = ff(a, b, c, d, x[i + 8], 7, 1770035416)
d = ff(d, a, b, c, x[i + 9], 12, -1958414417)
c = ff(c, d, a, b, x[i + 10], 17, -42063)
b = ff(b, c, d, a, x[i + 11], 22, -1990404162)
a = ff(a, b, c, d, x[i + 12], 7, 1804603682)
d = ff(d, a, b, c, x[i + 13], 12, -40341101)
c = ff(c, d, a, b, x[i + 14], 17, -1502002290)
b = ff(b, c, d, a, x[i + 15], 22, 1236535329)
a = gg(a, b, c, d, x[i + 1], 5, -165796510)
d = gg(d, a, b, c, x[i + 6], 9, -1069501632)
c = gg(c, d, a, b, x[i + 11], 14, 643717713)
b = gg(b, c, d, a, x[i + 0], 20, -373897302)
a = gg(a, b, c, d, x[i + 5], 5, -701558691)
d = gg(d, a, b, c, x[i + 10], 9, 38016083)
c = gg(c, d, a, b, x[i + 15], 14, -660478335)
b = gg(b, c, d, a, x[i + 4], 20, -405537848)
a = gg(a, b, c, d, x[i + 9], 5, 568446438)
d = gg(d, a, b, c, x[i + 14], 9, -1019803690)
c = gg(c, d, a, b, x[i + 3], 14, -187363961)
b = gg(b, c, d, a, x[i + 8], 20, 1163531501)
a = gg(a, b, c, d, x[i + 13], 5, -1444681467)
d = gg(d, a, b, c, x[i + 2], 9, -51403784)
c = gg(c, d, a, b, x[i + 7], 14, 1735328473)
b = gg(b, c, d, a, x[i + 12], 20, -1926607734)
a = hh(a, b, c, d, x[i + 5], 4, -378558)
d = hh(d, a, b, c, x[i + 8], 11, -2022574463)
c = hh(c, d, a, b, x[i + 11], 16, 1839030562)
b = hh(b, c, d, a, x[i + 14], 23, -35309556)
a = hh(a, b, c, d, x[i + 1], 4, -1530992060)
d = hh(d, a, b, c, x[i + 4], 11, 1272893353)
c = hh(c, d, a, b, x[i + 7], 16, -155497632)
b = hh(b, c, d, a, x[i + 10], 23, -1094730640)
a = hh(a, b, c, d, x[i + 13], 4, 681279174)
d = hh(d, a, b, c, x[i + 0], 11, -358537222)
c = hh(c, d, a, b, x[i + 3], 16, -722521979)
b = hh(b, c, d, a, x[i + 6], 23, 76029189)
a = hh(a, b, c, d, x[i + 9], 4, -640364487)
d = hh(d, a, b, c, x[i + 12], 11, -421815835)
c = hh(c, d, a, b, x[i + 15], 16, 530742520)
b = hh(b, c, d, a, x[i + 2], 23, -995338651)
a = ii(a, b, c, d, x[i + 0], 6, -198630844)
d = ii(d, a, b, c, x[i + 7], 10, 1126891415)
c = ii(c, d, a, b, x[i + 14], 15, -1416354905)
b = ii(b, c, d, a, x[i + 5], 21, -57434055)
a = ii(a, b, c, d, x[i + 12], 6, 1700485571)
d = ii(d, a, b, c, x[i + 3], 10, -1894986606)
c = ii(c, d, a, b, x[i + 10], 15, -1051523)
b = ii(b, c, d, a, x[i + 1], 21, -2054922799)
a = ii(a, b, c, d, x[i + 8], 6, 1873313359)
d = ii(d, a, b, c, x[i + 15], 10, -30611744)
c = ii(c, d, a, b, x[i + 6], 15, -1560198380)
b = ii(b, c, d, a, x[i + 13], 21, 1309151649)
a = ii(a, b, c, d, x[i + 4], 6, -145523070)
d = ii(d, a, b, c, x[i + 11], 10, -1120210379)
c = ii(c, d, a, b, x[i + 2], 15, 718787259)
b = ii(b, c, d, a, x[i + 9], 21, -343485551)
a = safe_add(a, olda)
b = safe_add(b, oldb)
c = safe_add(c, oldc)
d = safe_add(d, oldd)
return [a,b,c,d]
def str2binl(str):
nblk=((len(str)+8) >> 6)+1
blks=[0 for i in range(0,nblk*16)]
for i in range(0,len(str)):
blks[i>>2] = blks[i>>2] | ((int(str[i])& 0xFF) <<((i%4) * 8))
blks[i>>2] = blks[i>>2] | (0x80 <<((i%4) * 8))
blks[(nblk*16 - 2)] = len(str) * 8
return blks
def binl2hex(binarray):
hex_tab="0123456789abcdef"
str=""
for i in range(len(binarray)*4):
str= str + hex_tab[(binarray[i>>2] >>((i%4)*8+4))&0xF]+hex_tab[(binarray[i>>2] >>((i%4)*8))&0xF]
return str
def calcMD5(str):
return binl2hex(coreMD5( str2binl(str)))
str = '12345678'
pid = '1'
calg = '12345678'
def main():
tmpchar = pid + str +calg
tmpchar2 = calcMD5(tmpchar)
passd = tmpchar2 +calg +pid
print passd
if __name__ == "__main__":
main()
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.