zldfsz 发表于 2012-6-9 14:02:36

au3调用js问题

本帖最后由 zldfsz 于 2012-6-9 16:31 编辑

参照这篇帖子写了如下调用js的代码,可经过多次测试仍未得到结果,不知什么原因,请大家帮忙修改一下
MsgBox(4096, "加密结果", EncodePwd("\x00\x00\x00\x00\x3c\xcb\x48\x45","123456","EJKS"));如果没错会返回“A314E7BB06E86D49421452B3C68118E3”
Func EncodePwd($pt_uin,$p,$vc)
      Local $code
      $code = FileRead("encodepwd.js")
      $nJS = ObjCreate("MSScriptControl.ScriptControl")
      $nJS.language = "JavaScript"
      $nJS.addcode($code)
      $nReg = $nJS.eval('QXWEncodePwd("'&$pt_uin&'","'&$p&'","'&$vc&'")')
      Return $nReg
EndFunc   ;==>EncodePwd
附件为js文件及上面代码

已解决,将\x通通替换掉,再修改一下js的算法就搞定了。感谢my788522提醒。

my788522 发表于 2012-6-9 14:02:37

测试了下 你的传递的参数方式似乎不对
\x00\x00\x00\x00\x3c\xcb\x48\x45
这个换成其他的字符串就可以成功运行
目测可能是ASC码
尝试转换一下 或者你抓的数据不正确

zldfsz 发表于 2012-6-9 14:21:20

顺便贴上encodepwd.jsvar hexcase=1;
var b64pad="";
var chrsz=8;
var mode=32;
function QXWEncodePwd(pt_uin,p,vc){
var I=hexchar2bin(md5(p));
var H=md5(I+TTescapechar2bin(pt_uin));
var G=md5(H+vc.toUpperCase());
return G
}

function md5(A){
return hex_md5(A)
}

function hex_md5(A){
return binl2hex(core_md5(str2binl(A),A.length*chrsz))
}

function str_md5(A){
return binl2str(core_md5(str2binl(A),A.length*chrsz))
}

function hex_hmac_md5(A,B){
return binl2hex(core_hmac_md5(A,B))
}

function b64_hmac_md5(A,B){
return binl2b64(core_hmac_md5(A,B))
}

function str_hmac_md5(A,B){
return binl2str(core_hmac_md5(A,B))
}

function core_md5(K,F){
K|=128<<((F)%32);
K[(((F+64)>>>9)<<4)+14]=F;
var J=1732584193;
var I=-271733879;
var H=-1732584194;
var G=271733878;
for(var C=0;
C<K.length;
C+=16){
var E=J;
var D=I;
var B=H;
var A=G;
J=md5_ff(J,I,H,G,K,7,-680876936);
G=md5_ff(G,J,I,H,K,12,-389564586);
H=md5_ff(H,G,J,I,K,17,606105819);
I=md5_ff(I,H,G,J,K,22,-1044525330);
J=md5_ff(J,I,H,G,K,7,-176418897);
G=md5_ff(G,J,I,H,K,12,1200080426);
H=md5_ff(H,G,J,I,K,17,-1473231341);
I=md5_ff(I,H,G,J,K,22,-45705983);
J=md5_ff(J,I,H,G,K,7,1770035416);
G=md5_ff(G,J,I,H,K,12,-1958414417);
H=md5_ff(H,G,J,I,K,17,-42063);
I=md5_ff(I,H,G,J,K,22,-1990404162);
J=md5_ff(J,I,H,G,K,7,1804603682);
G=md5_ff(G,J,I,H,K,12,-40341101);
H=md5_ff(H,G,J,I,K,17,-1502002290);
I=md5_ff(I,H,G,J,K,22,1236535329);
J=md5_gg(J,I,H,G,K,5,-165796510);
G=md5_gg(G,J,I,H,K,9,-1069501632);
H=md5_gg(H,G,J,I,K,14,643717713);
I=md5_gg(I,H,G,J,K,20,-373897302);
J=md5_gg(J,I,H,G,K,5,-701558691);
G=md5_gg(G,J,I,H,K,9,38016083);
H=md5_gg(H,G,J,I,K,14,-660478335);
I=md5_gg(I,H,G,J,K,20,-405537848);
J=md5_gg(J,I,H,G,K,5,568446438);
G=md5_gg(G,J,I,H,K,9,-1019803690);
H=md5_gg(H,G,J,I,K,14,-187363961);
I=md5_gg(I,H,G,J,K,20,1163531501);
J=md5_gg(J,I,H,G,K,5,-1444681467);
G=md5_gg(G,J,I,H,K,9,-51403784);
H=md5_gg(H,G,J,I,K,14,1735328473);
I=md5_gg(I,H,G,J,K,20,-1926607734);
J=md5_hh(J,I,H,G,K,4,-378558);
G=md5_hh(G,J,I,H,K,11,-2022574463);
H=md5_hh(H,G,J,I,K,16,1839030562);
I=md5_hh(I,H,G,J,K,23,-35309556);
J=md5_hh(J,I,H,G,K,4,-1530992060);
G=md5_hh(G,J,I,H,K,11,1272893353);
H=md5_hh(H,G,J,I,K,16,-155497632);
I=md5_hh(I,H,G,J,K,23,-1094730640);
J=md5_hh(J,I,H,G,K,4,681279174);
G=md5_hh(G,J,I,H,K,11,-358537222);
H=md5_hh(H,G,J,I,K,16,-722521979);
I=md5_hh(I,H,G,J,K,23,76029189);
J=md5_hh(J,I,H,G,K,4,-640364487);
G=md5_hh(G,J,I,H,K,11,-421815835);
H=md5_hh(H,G,J,I,K,16,530742520);
I=md5_hh(I,H,G,J,K,23,-995338651);
J=md5_ii(J,I,H,G,K,6,-198630844);
G=md5_ii(G,J,I,H,K,10,1126891415);
H=md5_ii(H,G,J,I,K,15,-1416354905);
I=md5_ii(I,H,G,J,K,21,-57434055);
J=md5_ii(J,I,H,G,K,6,1700485571);
G=md5_ii(G,J,I,H,K,10,-1894986606);
H=md5_ii(H,G,J,I,K,15,-1051523);
I=md5_ii(I,H,G,J,K,21,-2054922799);
J=md5_ii(J,I,H,G,K,6,1873313359);
G=md5_ii(G,J,I,H,K,10,-30611744);
H=md5_ii(H,G,J,I,K,15,-1560198380);
I=md5_ii(I,H,G,J,K,21,1309151649);
J=md5_ii(J,I,H,G,K,6,-145523070);
G=md5_ii(G,J,I,H,K,10,-1120210379);
H=md5_ii(H,G,J,I,K,15,718787259);
I=md5_ii(I,H,G,J,K,21,-343485551);
J=safe_add(J,E);
I=safe_add(I,D);
H=safe_add(H,B);
G=safe_add(G,A)
}
if(mode==16){
return Array(I,H)
}
else{
return Array(J,I,H,G)
}

}

function md5_cmn(F,C,B,A,E,D){
return safe_add(bit_rol(safe_add(safe_add(C,F),safe_add(A,D)),E),B)
}

function md5_ff(C,B,G,F,A,E,D){
return md5_cmn((B&G)|((~B)&F),C,B,A,E,D)
}

function md5_gg(C,B,G,F,A,E,D){
return md5_cmn((B&F)|(G&(~F)),C,B,A,E,D)
}

function md5_hh(C,B,G,F,A,E,D){
return md5_cmn(B^G^F,C,B,A,E,D)
}

function md5_ii(C,B,G,F,A,E,D){
return md5_cmn(G^(B|(~F)),C,B,A,E,D)
}

function core_hmac_md5(C,F){
var E=str2binl(C);
if(E.length>16){
E=core_md5(E,C.length*chrsz)
}
var A=Array(16),D=Array(16);
for(var B=0;
B<16;
B++){
A=E^909522486;
D=E^1549556828
}
var G=core_md5(A.concat(str2binl(F)),512+F.length*chrsz);
return core_md5(D.concat(G),512+128)
}

function safe_add(A,D){
var C=(A&65535)+(D&65535);
var B=(A>>16)+(D>>16)+(C>>16);
return(B<<16)|(C&65535)
}

function bit_rol(A,B){
return(A<<B)|(A>>>(32-B))
}

function str2binl(D){
var C=Array();
var A=(1<<chrsz)-1;
for(var B=0;
B<D.length*chrsz;
B+=chrsz){
C|=(D.charCodeAt(B/chrsz)&A)<<(B%32)
}
return C
}

function binl2str(C){
var D="";
var A=(1<<chrsz)-1;
for(var B=0;
B<C.length*32;
B+=chrsz){
D+=String.fromCharCode((C>>>(B%32))&A)
}
return D
}

function binl2hex(C){
var B=hexcase?"0123456789ABCDEF":"0123456789abcdef";
var D="";
for(var A=0;
A<C.length*4;
A++){
D+=B.charAt((C>>((A%4)*8+4))&15)+B.charAt((C>>((A%4)*8))&15)
}
return D
}

function binl2b64(D){
var C="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
var F="";
for(var B=0;
B<D.length*4;
B+=3){
var E=(((D>>8*(B%4))&255)<<16)|(((D>>8*((B+1)%4))&255)<<8)|((D>>8*((B+2)%4))&255);
for(var A=0;
A<4;
A++){
if(B*8+A*6>D.length*32){
F+=b64pad
}
else{
F+=C.charAt((E>>6*(3-A))&63)
}

}

}
return F
}

function hexchar2bin(str){
var arr=[];
for(var i=0;
i<str.length;
i=i+2){
arr.push("\\x"+str.substr(i,2))
}
arr=arr.join("");
eval("var temp = '"+arr+"'");
return temp
}
function TTescapechar2bin(str){
eval("var temp = '"+str+"'");
return temp
}

zldfsz 发表于 2012-6-9 16:34:58

回复 2# my788522
原来是"\"符号在作祟。让我头疼了很久的问题,按你的提示做一下修改就搞定了,谢谢了!

yorker0503 发表于 2012-6-19 21:47:27

学习学习~~~~~~~~

cvwyg 发表于 2012-11-30 20:21:45

感谢分享~!!!
页: [1]
查看完整版本: au3调用js问题