TC官方合作论坛
标题:
纯TC代码实现js代码的执行
[打印本页]
作者:
kevinqq
时间:
2013-5-15 20:22
标题:
纯TC代码实现js代码的执行
注意,要TC4.049以后的版本才能正常执行
哎 作为插件区的版主
作为一名超级版主 已经好久没有给大家发过福利了
今天给大家说下TC利用系统的“MSScriptControl.ScriptControl”对象执行JavaScript代码
什么叫JavaScript 这个想必大部分同学都知道,最近论坛流行post 不懂的同学自行百度 google或者通过一些其他的手段去了解吧
接下来 我们讲,为什么要执行JavaScript代码?
因为在post的过程中 网页之间传递的一些数据都是明文显示的,很容易就会被像我们这样的开发者获取到,然后就各种脚本各种脚模拟你懂的
总而言之 言而总之,JavaScript的顺应出世了,接下来,我们开始讲最重点的,就是数据加密
在网页登陆的时候,一些比较简单的网站密码一般都是明文的,例如百度,之类的一些论坛 什么的, 还有一些比较复杂的是通过加密的,例如QQ,5173这类的网站
刚刚前面说了网页之间的数据交换都是文的 那我们怎么加密呢,在这里,JavaScript就是我们今天的主角,JavaScript大家通常简称js脚本,一种能够在任何网页里面执行的
脚本代码,这种代码当然也是明文的,大家可能会说vbscript也是脚本语言 也可以在网页里面执行这个是没有错的,但是它却不是我们今天的主脚 ,我们今天的主脚
还是JavaScript,在网络如此发达的今天,js已经成为一种潮流, 随便打开一个网页,在他的源码里面都可以找到js脚本的影子,特别在各种网页的特效方面,
好吧,我们又偏题了, 今天我们说的执行JavaScript 主要于到JavaScript已经写好的一些加密函数,就像我们最常用的MD5加密 这种加密方式是不可逆的 相对来说安装性会比较高一点,上面我们也说了那么多废话,下面我们进入主题吧:
先来一段js代码,是我在一个网站里面找到一个MD5加密的js文件
/*
* A JavaScript implementation of the RSA Data Security, Inc. MD5 Message
* Digest Algorithm, as defined in RFC 1321.
* Version 2.2 Copyright (C) Paul Johnston 1999 - 2009
* Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
* Distributed under the BSD License
* See http://pajhome.org.uk/crypt/md5 for more info.
*/
var hexcase=0;
function hex_md5(a){
return rstr2hex(rstr_md5(str2rstr_utf8(a)))
}
function hex_hmac_md5(a,b){
return rstr2hex(rstr_hmac_md5(str2rstr_utf8(a),str2rstr_utf8(b)))
}
function md5_vm_test(){
return hex_md5("abc").toLowerCase()=="900150983cd24fb0d6963f7d28e17f72"
}
function rstr_md5(a){
return binl2rstr(binl_md5(rstr2binl(a),a.length*8))
}
function rstr_hmac_md5(c,f){
var e=rstr2binl(c);
if(e.length>16){
e=binl_md5(e,c.length*8)
}
var a=Array(16),d=Array(16);
for(var b=0;
b<16;
b++){
a[b]=e[b]^909522486;
d[b]=e[b]^1549556828
}
var g=binl_md5(a.concat(rstr2binl(f)),512+f.length*8);
return binl2rstr(binl_md5(d.concat(g),512+128))
}
function rstr2hex(c){
try{
hexcase
}
catch(g){
hexcase=0
}
var f=hexcase?"0123456789ABCDEF":"0123456789abcdef";
var b="";
var a;
for(var d=0;
d<c.length;
d++){
a=c.charCodeAt(d);
b+=f.charAt((a>>>4)&15)+f.charAt(a&15)
}
return b
}
function str2rstr_utf8(c){
var b="";
var d=-1;
var a,e;
while(++d<c.length){
a=c.charCodeAt(d);
e=d+1<c.length?c.charCodeAt(d+1):0;
if(55296<=a&&a<=56319&&56320<=e&&e<=57343){
a=65536+((a&1023)<<10)+(e&1023);
d++
}
if(a<=127){
b+=String.fromCharCode(a)
}
else{
if(a<=2047){
b+=String.fromCharCode(192|((a>>>6)&31),128|(a&63))
}
else{
if(a<=65535){
b+=String.fromCharCode(224|((a>>>12)&15),128|((a>>>6)&63),128|(a&63))
}
else{
if(a<=2097151){
b+=String.fromCharCode(240|((a>>>18)&7),128|((a>>>12)&63),128|((a>>>6)&63),128|(a&63))
}
}
}
}
}
return b
}
function rstr2binl(b){
var a=Array(b.length>>2);
for(var c=0;
c<a.length;
c++){
a[c]=0
}
for(var c=0;
c<b.length*8;
c+=8){
a[c>>5]|=(b.charCodeAt(c/8)&255)<<(c%32)
}
return a
}
function binl2rstr(b){
var a="";
for(var c=0;
c<b.length*32;
c+=8){
a+=String.fromCharCode((b[c>>5]>>>(c%32))&255)
}
return a
}
function binl_md5(p,k){
p[k>>5]|=128<<((k)%32);
p[(((k+64)>>>9)<<4)+14]=k;
var o=1732584193;
var n=-271733879;
var m=-1732584194;
var l=271733878;
for(var g=0;
g<p.length;
g+=16){
var j=o;
var h=n;
var f=m;
var e=l;
o=md5_ff(o,n,m,l,p[g+0],7,-680876936);
l=md5_ff(l,o,n,m,p[g+1],12,-389564586);
m=md5_ff(m,l,o,n,p[g+2],17,606105819);
n=md5_ff(n,m,l,o,p[g+3],22,-1044525330);
o=md5_ff(o,n,m,l,p[g+4],7,-176418897);
l=md5_ff(l,o,n,m,p[g+5],12,1200080426);
m=md5_ff(m,l,o,n,p[g+6],17,-1473231341);
n=md5_ff(n,m,l,o,p[g+7],22,-45705983);
o=md5_ff(o,n,m,l,p[g+8],7,1770035416);
l=md5_ff(l,o,n,m,p[g+9],12,-1958414417);
m=md5_ff(m,l,o,n,p[g+10],17,-42063);
n=md5_ff(n,m,l,o,p[g+11],22,-1990404162);
o=md5_ff(o,n,m,l,p[g+12],7,1804603682);
l=md5_ff(l,o,n,m,p[g+13],12,-40341101);
m=md5_ff(m,l,o,n,p[g+14],17,-1502002290);
n=md5_ff(n,m,l,o,p[g+15],22,1236535329);
o=md5_gg(o,n,m,l,p[g+1],5,-165796510);
l=md5_gg(l,o,n,m,p[g+6],9,-1069501632);
m=md5_gg(m,l,o,n,p[g+11],14,643717713);
n=md5_gg(n,m,l,o,p[g+0],20,-373897302);
o=md5_gg(o,n,m,l,p[g+5],5,-701558691);
l=md5_gg(l,o,n,m,p[g+10],9,38016083);
m=md5_gg(m,l,o,n,p[g+15],14,-660478335);
n=md5_gg(n,m,l,o,p[g+4],20,-405537848);
o=md5_gg(o,n,m,l,p[g+9],5,568446438);
l=md5_gg(l,o,n,m,p[g+14],9,-1019803690);
m=md5_gg(m,l,o,n,p[g+3],14,-187363961);
n=md5_gg(n,m,l,o,p[g+8],20,1163531501);
o=md5_gg(o,n,m,l,p[g+13],5,-1444681467);
l=md5_gg(l,o,n,m,p[g+2],9,-51403784);
m=md5_gg(m,l,o,n,p[g+7],14,1735328473);
n=md5_gg(n,m,l,o,p[g+12],20,-1926607734);
o=md5_hh(o,n,m,l,p[g+5],4,-378558);
l=md5_hh(l,o,n,m,p[g+8],11,-2022574463);
m=md5_hh(m,l,o,n,p[g+11],16,1839030562);
n=md5_hh(n,m,l,o,p[g+14],23,-35309556);
o=md5_hh(o,n,m,l,p[g+1],4,-1530992060);
l=md5_hh(l,o,n,m,p[g+4],11,1272893353);
m=md5_hh(m,l,o,n,p[g+7],16,-155497632);
n=md5_hh(n,m,l,o,p[g+10],23,-1094730640);
o=md5_hh(o,n,m,l,p[g+13],4,681279174);
l=md5_hh(l,o,n,m,p[g+0],11,-358537222);
m=md5_hh(m,l,o,n,p[g+3],16,-722521979);
n=md5_hh(n,m,l,o,p[g+6],23,76029189);
o=md5_hh(o,n,m,l,p[g+9],4,-640364487);
l=md5_hh(l,o,n,m,p[g+12],11,-421815835);
m=md5_hh(m,l,o,n,p[g+15],16,530742520);
n=md5_hh(n,m,l,o,p[g+2],23,-995338651);
o=md5_ii(o,n,m,l,p[g+0],6,-198630844);
l=md5_ii(l,o,n,m,p[g+7],10,1126891415);
m=md5_ii(m,l,o,n,p[g+14],15,-1416354905);
n=md5_ii(n,m,l,o,p[g+5],21,-57434055);
o=md5_ii(o,n,m,l,p[g+12],6,1700485571);
l=md5_ii(l,o,n,m,p[g+3],10,-1894986606);
m=md5_ii(m,l,o,n,p[g+10],15,-1051523);
n=md5_ii(n,m,l,o,p[g+1],21,-2054922799);
o=md5_ii(o,n,m,l,p[g+8],6,1873313359);
l=md5_ii(l,o,n,m,p[g+15],10,-30611744);
m=md5_ii(m,l,o,n,p[g+6],15,-1560198380);
n=md5_ii(n,m,l,o,p[g+13],21,1309151649);
o=md5_ii(o,n,m,l,p[g+4],6,-145523070);
l=md5_ii(l,o,n,m,p[g+11],10,-1120210379);
m=md5_ii(m,l,o,n,p[g+2],15,718787259);
n=md5_ii(n,m,l,o,p[g+9],21,-343485551);
o=safe_add(o,j);
n=safe_add(n,h);
m=safe_add(m,f);
l=safe_add(l,e)
}
return Array(o,n,m,l)
}
function md5_cmn(h,e,d,c,g,f){
return safe_add(bit_rol(safe_add(safe_add(e,h),safe_add(c,f)),g),d)
}
function md5_ff(g,f,k,j,e,i,h){
return md5_cmn((f&k)|((~f)&j),g,f,e,i,h)
}
function md5_gg(g,f,k,j,e,i,h){
return md5_cmn((f&j)|(k&(~j)),g,f,e,i,h)
}
function md5_hh(g,f,k,j,e,i,h){
return md5_cmn(f^k^j,g,f,e,i,h)
}
function md5_ii(g,f,k,j,e,i,h){
return md5_cmn(k^(f|(~j)),g,f,e,i,h)
}
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))
};
复制代码
接下面就是最关键的代码了,没有这一段代码,一切js的代码函数都是渣渣,为什么呢,因为TC不认识他妈是谁
下面见证关键的问题:
//执行js代码
//scriptcode: js源码,功能函数
//callfun:要执行的函数 例如 md5(\"adfsdfsdf\");//记得一定要加;号
//Script:暂时只支持js,vbs执行的时候会出现问题,暂时不知道为什么
function runScriptCode(scriptcode,callfun,Script="JavaScript")
ScriptContorl=com("MSScriptControl.ScriptControl")
ScriptContorl.AllowUI=true
ScriptContorl.Language=Script
ret=ScriptContorl.Eval(scriptcode&callfun)
ojb=null
debug.print(ret)
return ret
endfunction
复制代码
md5=file.readfileex("rc:md5.txt")
参数="ffdfsd"
callfunction= "hex_md5(\""&参数&"\");"
ret = winhttp.runScriptCode(md5,callfunction)
复制代码
上面的代码很简单
第一行,就是最上面的MD5加密代码已经写好了,写在一个文件里面方便读取
第二行,定义参数
第三行,把要执行的函数以及参数写到源码的最后,为什么的,我也不知道为什么,反正调用函数放在最后面比较灵活 会直接执行最后一个函数,
第四行,就是调用我们的js源码执行
有什么不懂的可以到天使插件群:227896889 来问我 后面我会陆续开源一些我已经封装好的一些系统组件的源码
关于有些同学跟贴说js代码要全部加载 ,这个是必须的你没有源码 组件无法解析你的JS功能函数
可以通过网页获取源码API 远程获取或者复制到本地的文本里面加载
作者:
26666180
时间:
2013-5-15 20:29
.....................
作者:
chinamyt
时间:
2013-5-15 20:33
全没看懂。。。。。。。。的路过!!!!!!!看懂的举手!
作者:
187144831
时间:
2013-5-15 20:34
支持 收藏
作者:
saga
时间:
2013-5-15 20:59
这个很精悍!!!!!!!!!!!!!
作者:
Sky_Pro
时间:
2013-5-15 21:01
这个必须支持的。。
作者:
fsfsgdg
时间:
2013-5-15 22:10
我只懂阿拉伯语。。。。这个语言看不懂
作者:
我是冰冻的番茄
时间:
2013-5-15 22:54
edddd
作者:
msyycb
时间:
2013-5-15 23:44
膜拜一下!看不懂!
作者:
cylhb
时间:
2013-5-15 23:49
TC各种强大。
作者:
qq06314488
时间:
2013-5-16 02:09
知道我不懂英文,为嘛老是用英文的挫,看起来好纠结
作者:
xqxujun
时间:
2013-5-16 08:20
支持!不javascripgt都写在文件里貌似也不怎么方便,如果很多个javascript各不相关,每次不是都要全部加载一次?
作者:
sport431
时间:
2013-5-16 08:51
一直在找,终于有这方面的教程了
作者:
麦兜兄弟
时间:
2013-5-20 13:37
学习一下吧...
作者:
chi98002
时间:
2013-5-20 17:08
你不懂得中文输入法吗?
作者:
qsmoon
时间:
2013-6-20 22:40
看懂了,谢谢楼主分享了!!
作者:
花云寒
时间:
2014-2-11 15:31
为何 调用js 有时返回值正常 有时返回null?????楼主 求解答
作者:
花云寒
时间:
2014-3-14 15:21
ScriptContorl=com("MSScriptControl.ScriptControl")
你好 我现在是每次加解密都是重新定义MSScriptControl.ScriptControl 对象的 目前大部分电脑没问题。。但是偶尔有些电脑 调js返回值为空~~~~~~~~~~~这些电脑重装了系统有可能修复。。求解 为什么呢。。。。。
作者:
myf526cn
时间:
2014-5-22 16:28
看不懂啊,有个实例就最好了
作者:
slz336
时间:
2014-8-26 09:37
感谢分先噶
作者:
2961034
时间:
2015-1-13 07:44
作者:
a11518
时间:
2015-3-18 17:26
借用一下
function MD5(str)
{
x = str2blks_MD5(str);
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 = add(a, olda);
b = add(b, oldb);
c = add(c, oldc);
d = add(d, oldd);
}
return rhex(a) + rhex(b) + rhex(c) + rhex(d);
}
复制代码
作者:
wudongdonghehe
时间:
2015-6-25 15:39
还是看不懂。。。
作者:
夯歌炜
时间:
2016-9-8 01:04
请教下 浏览器上的文本控件 需要点击 才能触发网页上的事件 用网页元素操作 不能触发网页事件 请问该如何触发网页事件
欢迎光临 TC官方合作论坛 (http://bbs.52tc.co/)
Powered by Discuz! X3.1