TC官方合作论坛

 找回密码
 立即注册
查看: 10311|回复: 23

[其他] 纯TC代码实现js代码的执行

  [复制链接]
发表于 2013-5-15 20:22:01 | 显示全部楼层 |阅读模式

马上加入TC

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
注意,要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文件
  1. /*
  2. * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message
  3. * Digest Algorithm, as defined in RFC 1321.
  4. * Version 2.2 Copyright (C) Paul Johnston 1999 - 2009
  5. * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
  6. * Distributed under the BSD License
  7. * See http://pajhome.org.uk/crypt/md5 for more info.
  8. */
  9. var hexcase=0;
  10. function hex_md5(a){
  11.     return rstr2hex(rstr_md5(str2rstr_utf8(a)))
  12. }
  13. function hex_hmac_md5(a,b){
  14.     return rstr2hex(rstr_hmac_md5(str2rstr_utf8(a),str2rstr_utf8(b)))
  15. }
  16. function md5_vm_test(){
  17.     return hex_md5("abc").toLowerCase()=="900150983cd24fb0d6963f7d28e17f72"
  18. }
  19. function rstr_md5(a){
  20.     return binl2rstr(binl_md5(rstr2binl(a),a.length*8))
  21. }
  22. function rstr_hmac_md5(c,f){
  23.     var e=rstr2binl(c);
  24.     if(e.length>16){
  25.         e=binl_md5(e,c.length*8)
  26.     }
  27.     var a=Array(16),d=Array(16);
  28.     for(var b=0;
  29.     b<16;
  30.     b++){
  31.         a[b]=e[b]^909522486;
  32.         d[b]=e[b]^1549556828
  33.     }
  34.     var g=binl_md5(a.concat(rstr2binl(f)),512+f.length*8);
  35.     return binl2rstr(binl_md5(d.concat(g),512+128))
  36. }
  37. function rstr2hex(c){
  38.     try{
  39.         hexcase
  40.     }
  41.     catch(g){
  42.         hexcase=0
  43.     }
  44.     var f=hexcase?"0123456789ABCDEF":"0123456789abcdef";
  45.     var b="";
  46.     var a;
  47.     for(var d=0;
  48.     d<c.length;
  49.     d++){
  50.         a=c.charCodeAt(d);
  51.         b+=f.charAt((a>>>4)&15)+f.charAt(a&15)
  52.     }
  53.     return b
  54. }
  55. function str2rstr_utf8(c){
  56.     var b="";
  57.     var d=-1;
  58.     var a,e;
  59.     while(++d<c.length){
  60.         a=c.charCodeAt(d);
  61.         e=d+1<c.length?c.charCodeAt(d+1):0;
  62.         if(55296<=a&&a<=56319&&56320<=e&&e<=57343){
  63.             a=65536+((a&1023)<<10)+(e&1023);
  64.             d++
  65.         }
  66.         if(a<=127){
  67.             b+=String.fromCharCode(a)
  68.         }
  69.         else{
  70.             if(a<=2047){
  71.                 b+=String.fromCharCode(192|((a>>>6)&31),128|(a&63))
  72.             }
  73.             else{
  74.                 if(a<=65535){
  75.                     b+=String.fromCharCode(224|((a>>>12)&15),128|((a>>>6)&63),128|(a&63))
  76.                 }
  77.                 else{
  78.                     if(a<=2097151){
  79.                         b+=String.fromCharCode(240|((a>>>18)&7),128|((a>>>12)&63),128|((a>>>6)&63),128|(a&63))
  80.                     }
  81.                     
  82.                 }
  83.                
  84.             }
  85.             
  86.         }
  87.         
  88.     }
  89.     return b
  90. }
  91. function rstr2binl(b){
  92.     var a=Array(b.length>>2);
  93.     for(var c=0;
  94.     c<a.length;
  95.     c++){
  96.         a[c]=0
  97.     }
  98.     for(var c=0;
  99.     c<b.length*8;
  100.     c+=8){
  101.         a[c>>5]|=(b.charCodeAt(c/8)&255)<<(c%32)
  102.     }
  103.     return a
  104. }
  105. function binl2rstr(b){
  106.     var a="";
  107.     for(var c=0;
  108.     c<b.length*32;
  109.     c+=8){
  110.         a+=String.fromCharCode((b[c>>5]>>>(c%32))&255)
  111.     }
  112.     return a
  113. }
  114. function binl_md5(p,k){
  115.     p[k>>5]|=128<<((k)%32);
  116.     p[(((k+64)>>>9)<<4)+14]=k;
  117.     var o=1732584193;
  118.     var n=-271733879;
  119.     var m=-1732584194;
  120.     var l=271733878;
  121.     for(var g=0;
  122.     g<p.length;
  123.     g+=16){
  124.         var j=o;
  125.         var h=n;
  126.         var f=m;
  127.         var e=l;
  128.         o=md5_ff(o,n,m,l,p[g+0],7,-680876936);
  129.         l=md5_ff(l,o,n,m,p[g+1],12,-389564586);
  130.         m=md5_ff(m,l,o,n,p[g+2],17,606105819);
  131.         n=md5_ff(n,m,l,o,p[g+3],22,-1044525330);
  132.         o=md5_ff(o,n,m,l,p[g+4],7,-176418897);
  133.         l=md5_ff(l,o,n,m,p[g+5],12,1200080426);
  134.         m=md5_ff(m,l,o,n,p[g+6],17,-1473231341);
  135.         n=md5_ff(n,m,l,o,p[g+7],22,-45705983);
  136.         o=md5_ff(o,n,m,l,p[g+8],7,1770035416);
  137.         l=md5_ff(l,o,n,m,p[g+9],12,-1958414417);
  138.         m=md5_ff(m,l,o,n,p[g+10],17,-42063);
  139.         n=md5_ff(n,m,l,o,p[g+11],22,-1990404162);
  140.         o=md5_ff(o,n,m,l,p[g+12],7,1804603682);
  141.         l=md5_ff(l,o,n,m,p[g+13],12,-40341101);
  142.         m=md5_ff(m,l,o,n,p[g+14],17,-1502002290);
  143.         n=md5_ff(n,m,l,o,p[g+15],22,1236535329);
  144.         o=md5_gg(o,n,m,l,p[g+1],5,-165796510);
  145.         l=md5_gg(l,o,n,m,p[g+6],9,-1069501632);
  146.         m=md5_gg(m,l,o,n,p[g+11],14,643717713);
  147.         n=md5_gg(n,m,l,o,p[g+0],20,-373897302);
  148.         o=md5_gg(o,n,m,l,p[g+5],5,-701558691);
  149.         l=md5_gg(l,o,n,m,p[g+10],9,38016083);
  150.         m=md5_gg(m,l,o,n,p[g+15],14,-660478335);
  151.         n=md5_gg(n,m,l,o,p[g+4],20,-405537848);
  152.         o=md5_gg(o,n,m,l,p[g+9],5,568446438);
  153.         l=md5_gg(l,o,n,m,p[g+14],9,-1019803690);
  154.         m=md5_gg(m,l,o,n,p[g+3],14,-187363961);
  155.         n=md5_gg(n,m,l,o,p[g+8],20,1163531501);
  156.         o=md5_gg(o,n,m,l,p[g+13],5,-1444681467);
  157.         l=md5_gg(l,o,n,m,p[g+2],9,-51403784);
  158.         m=md5_gg(m,l,o,n,p[g+7],14,1735328473);
  159.         n=md5_gg(n,m,l,o,p[g+12],20,-1926607734);
  160.         o=md5_hh(o,n,m,l,p[g+5],4,-378558);
  161.         l=md5_hh(l,o,n,m,p[g+8],11,-2022574463);
  162.         m=md5_hh(m,l,o,n,p[g+11],16,1839030562);
  163.         n=md5_hh(n,m,l,o,p[g+14],23,-35309556);
  164.         o=md5_hh(o,n,m,l,p[g+1],4,-1530992060);
  165.         l=md5_hh(l,o,n,m,p[g+4],11,1272893353);
  166.         m=md5_hh(m,l,o,n,p[g+7],16,-155497632);
  167.         n=md5_hh(n,m,l,o,p[g+10],23,-1094730640);
  168.         o=md5_hh(o,n,m,l,p[g+13],4,681279174);
  169.         l=md5_hh(l,o,n,m,p[g+0],11,-358537222);
  170.         m=md5_hh(m,l,o,n,p[g+3],16,-722521979);
  171.         n=md5_hh(n,m,l,o,p[g+6],23,76029189);
  172.         o=md5_hh(o,n,m,l,p[g+9],4,-640364487);
  173.         l=md5_hh(l,o,n,m,p[g+12],11,-421815835);
  174.         m=md5_hh(m,l,o,n,p[g+15],16,530742520);
  175.         n=md5_hh(n,m,l,o,p[g+2],23,-995338651);
  176.         o=md5_ii(o,n,m,l,p[g+0],6,-198630844);
  177.         l=md5_ii(l,o,n,m,p[g+7],10,1126891415);
  178.         m=md5_ii(m,l,o,n,p[g+14],15,-1416354905);
  179.         n=md5_ii(n,m,l,o,p[g+5],21,-57434055);
  180.         o=md5_ii(o,n,m,l,p[g+12],6,1700485571);
  181.         l=md5_ii(l,o,n,m,p[g+3],10,-1894986606);
  182.         m=md5_ii(m,l,o,n,p[g+10],15,-1051523);
  183.         n=md5_ii(n,m,l,o,p[g+1],21,-2054922799);
  184.         o=md5_ii(o,n,m,l,p[g+8],6,1873313359);
  185.         l=md5_ii(l,o,n,m,p[g+15],10,-30611744);
  186.         m=md5_ii(m,l,o,n,p[g+6],15,-1560198380);
  187.         n=md5_ii(n,m,l,o,p[g+13],21,1309151649);
  188.         o=md5_ii(o,n,m,l,p[g+4],6,-145523070);
  189.         l=md5_ii(l,o,n,m,p[g+11],10,-1120210379);
  190.         m=md5_ii(m,l,o,n,p[g+2],15,718787259);
  191.         n=md5_ii(n,m,l,o,p[g+9],21,-343485551);
  192.         o=safe_add(o,j);
  193.         n=safe_add(n,h);
  194.         m=safe_add(m,f);
  195.         l=safe_add(l,e)
  196.     }
  197.     return Array(o,n,m,l)
  198. }
  199. function md5_cmn(h,e,d,c,g,f){
  200.     return safe_add(bit_rol(safe_add(safe_add(e,h),safe_add(c,f)),g),d)
  201. }
  202. function md5_ff(g,f,k,j,e,i,h){
  203.     return md5_cmn((f&k)|((~f)&j),g,f,e,i,h)
  204. }
  205. function md5_gg(g,f,k,j,e,i,h){
  206.     return md5_cmn((f&j)|(k&(~j)),g,f,e,i,h)
  207. }
  208. function md5_hh(g,f,k,j,e,i,h){
  209.     return md5_cmn(f^k^j,g,f,e,i,h)
  210. }
  211. function md5_ii(g,f,k,j,e,i,h){
  212.     return md5_cmn(k^(f|(~j)),g,f,e,i,h)
  213. }
  214. function safe_add(a,d){
  215.     var c=(a&65535)+(d&65535);
  216.     var b=(a>>16)+(d>>16)+(c>>16);
  217.     return(b<<16)|(c&65535)
  218. }
  219. function bit_rol(a,b){
  220.     return(a<<b)|(a>>>(32-b))
  221. };
复制代码
                接下面就是最关键的代码了,没有这一段代码,一切js的代码函数都是渣渣,为什么呢,因为TC不认识他妈是谁
   下面见证关键的问题:
  1. //执行js代码
  2. //scriptcode: js源码,功能函数
  3. //callfun:要执行的函数  例如 md5("adfsdfsdf");//记得一定要加;号
  4. //Script:暂时只支持js,vbs执行的时候会出现问题,暂时不知道为什么
  5. function runScriptCode(scriptcode,callfun,Script="JavaScript")
  6.     ScriptContorl=com("MSScriptControl.ScriptControl")
  7.     ScriptContorl.AllowUI=true
  8.     ScriptContorl.Language=Script
  9.     ret=ScriptContorl.Eval(scriptcode&callfun)
  10.     ojb=null
  11.     debug.print(ret)
  12.     return ret
  13. endfunction
复制代码

  1.     md5=file.readfileex("rc:md5.txt")
  2.     参数="ffdfsd"
  3.     callfunction= "hex_md5(""&参数&"");"
  4.     ret =  winhttp.runScriptCode(md5,callfunction)
复制代码
上面的代码很简单
     第一行,就是最上面的MD5加密代码已经写好了,写在一个文件里面方便读取
     第二行,定义参数
     第三行,把要执行的函数以及参数写到源码的最后,为什么的,我也不知道为什么,反正调用函数放在最后面比较灵活 会直接执行最后一个函数,
     第四行,就是调用我们的js源码执行
有什么不懂的可以到天使插件群:227896889 来问我 后面我会陆续开源一些我已经封装好的一些系统组件的源码


关于有些同学跟贴说js代码要全部加载 ,这个是必须的你没有源码 组件无法解析你的JS功能函数
   可以通过网页获取源码API 远程获取或者复制到本地的文本里面加载



回复

使用道具 举报

发表于 2013-5-15 20:29:13 | 显示全部楼层
.....................
回复 支持 反对

使用道具 举报

发表于 2013-5-15 20:33:57 | 显示全部楼层
全没看懂。。。。。。。。的路过!!!!!!!看懂的举手!
回复 支持 反对

使用道具 举报

发表于 2013-5-15 20:34:00 | 显示全部楼层
支持 收藏
回复 支持 反对

使用道具 举报

发表于 2013-5-15 20:59:50 | 显示全部楼层
这个很精悍!!!!!!!!!!!!!
回复 支持 反对

使用道具 举报

发表于 2013-5-15 21:01:29 | 显示全部楼层
这个必须支持的。。
回复 支持 反对

使用道具 举报

发表于 2013-5-15 22:10:05 | 显示全部楼层
我只懂阿拉伯语。。。。这个语言看不懂
回复 支持 反对

使用道具 举报

发表于 2013-5-15 22:54:11 | 显示全部楼层
edddd
回复 支持 反对

使用道具 举报

发表于 2013-5-15 23:44:25 | 显示全部楼层
膜拜一下!看不懂!
回复 支持 反对

使用道具 举报

发表于 2013-5-15 23:49:31 | 显示全部楼层

TC各种强大。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条

关闭

小黑屋|TC官方合作论坛 (苏ICP备18045623号)

GMT+8, 2024-5-13 21:50 , Processed in 0.042428 second(s), 24 queries .

Powered by 海安简单软件服务部

© 2008-2019 版权所有 保留所有权利

快速回复 返回顶部 返回列表