Board logo

标题: ECODE加密方法 [打印本页]

作者: cnangel    时间: 2004-5-14 12:37     标题: ECODE加密方法

作者:边缘Monarchy
http://lbmonarchy.533.net/jm.htm
Encode,实际是一种不完全的Unicode 文本(见过Unicode 吗?汉字全是%uxxxx的),当表示英文或数字时,它与普通文本并无区别。但在表示各种控制符、特殊符号、扩展ASCII 字符(如汉字)甚至空格时,它就把它们全变成了%xx%xx的形式。

解密ENCODE有很多方法,我所提供的是一个网页的解密代码,代码如下
  1. <html>
  2. <head>
  3. <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
  4. <title>网页解密</title>
  5. <style>
  6. td,select,input{font-size:10.5pt; color:#000000; height:16pt}
  7. textarea{font-size:14; color:#000000}
  8. a:link {text-decoration:none; color:#555555}
  9. a:hover {text-decoration:underline; color:#555555; background-color:ffff00}
  10. a:visited {text-decoration:none; color:#555555}
  11. </style>
  12. </head>
  13. <BODY>
  14. <script language="javascript">
  15. <!--
  16. function screncode(s,l)
  17. {enc=new ActiveXObject("Scripting.Encoder");
  18. return enc.EncodeScriptFile("."+l,s,0,l+"cript");
  19. }
  20. var STATE_COPY_INPUT  = 100
  21. var STATE_READLEN  = 101
  22. var STATE_DECODE  = 102
  23. var STATE_UNESCAPE  = 103
  24. var pick_encoding = new Array(
  25.   1, 2, 0, 1, 2, 0, 2, 0, 0, 2, 0, 2, 1, 0, 2, 0,
  26.   1, 0, 2, 0, 1, 1, 2, 0, 0, 2, 1, 0, 2, 0, 0, 2,
  27.   1, 1, 0, 2, 0, 2, 0, 1, 0, 1, 1, 2, 0, 1, 0, 2,
  28.   1, 0, 2, 0, 1, 1, 2, 0, 0, 1, 1, 2, 0, 1, 0, 2
  29. )
  30. var rawData = new Array(
  31.   0x64,0x37,0x69, 0x50,0x7E,0x2C, 0x22,0x5A,0x65, 0x4A,0x45,0x72,
  32.   0x61,0x3A,0x5B, 0x5E,0x79,0x66, 0x5D,0x59,0x75, 0x5B,0x27,0x4C,
  33.   0x42,0x76,0x45, 0x60,0x63,0x76, 0x23,0x62,0x2A, 0x65,0x4D,0x43,
  34.   0x5F,0x51,0x33, 0x7E,0x53,0x42, 0x4F,0x52,0x20, 0x52,0x20,0x63,
  35.   0x7A,0x26,0x4A, 0x21,0x54,0x5A, 0x46,0x71,0x38, 0x20,0x2B,0x79,
  36.   0x26,0x66,0x32, 0x63,0x2A,0x57, 0x2A,0x58,0x6C, 0x76,0x7F,0x2B,
  37.   0x47,0x7B,0x46, 0x25,0x30,0x52, 0x2C,0x31,0x4F, 0x29,0x6C,0x3D,
  38.   0x69,0x49,0x70, 0x3F,0x3F,0x3F, 0x27,0x78,0x7B, 0x3F,0x3F,0x3F,
  39.   0x67,0x5F,0x51, 0x3F,0x3F,0x3F, 0x62,0x29,0x7A, 0x41,0x24,0x7E,
  40.   0x5A,0x2F,0x3B, 0x66,0x39,0x47, 0x32,0x33,0x41, 0x73,0x6F,0x77,
  41.   0x4D,0x21,0x56, 0x43,0x75,0x5F, 0x71,0x28,0x26, 0x39,0x42,0x78,
  42.   0x7C,0x46,0x6E, 0x53,0x4A,0x64, 0x48,0x5C,0x74, 0x31,0x48,0x67,
  43.   0x72,0x36,0x7D, 0x6E,0x4B,0x68, 0x70,0x7D,0x35, 0x49,0x5D,0x22,
  44.   0x3F,0x6A,0x55, 0x4B,0x50,0x3A, 0x6A,0x69,0x60, 0x2E,0x23,0x6A,
  45.   0x7F,0x09,0x71, 0x28,0x70,0x6F, 0x35,0x65,0x49, 0x7D,0x74,0x5C,
  46.   0x24,0x2C,0x5D, 0x2D,0x77,0x27, 0x54,0x44,0x59, 0x37,0x3F,0x25,
  47.   0x7B,0x6D,0x7C, 0x3D,0x7C,0x23, 0x6C,0x43,0x6D, 0x34,0x38,0x28,
  48.   0x6D,0x5E,0x31, 0x4E,0x5B,0x39, 0x2B,0x6E,0x7F, 0x30,0x57,0x36,
  49.   0x6F,0x4C,0x54, 0x74,0x34,0x34, 0x6B,0x72,0x62, 0x4C,0x25,0x4E,
  50.   0x33,0x56,0x30, 0x56,0x73,0x5E, 0x3A,0x68,0x73, 0x78,0x55,0x09,
  51.   0x57,0x47,0x4B, 0x77,0x32,0x61, 0x3B,0x35,0x24, 0x44,0x2E,0x4D,
  52.   0x2F,0x64,0x6B, 0x59,0x4F,0x44, 0x45,0x3B,0x21, 0x5C,0x2D,0x37,
  53.   0x68,0x41,0x53, 0x36,0x61,0x58, 0x58,0x7A,0x48, 0x79,0x22,0x2E,
  54.   0x09,0x60,0x50, 0x75,0x6B,0x2D, 0x38,0x4E,0x29, 0x55,0x3D,0x3F
  55. )
  56. var transformed = new Array()
  57. for (var i=0; i<3; i++) transformed[i] = new Array()
  58. for (var i=31; i<=126; i++) for (var j=0; j<3; j++) transformed[j][rawData[(i-31) * 3 + j]] = (i==31) ? 9 : i
  59. var digits = new Array()
  60. for (var i=0; i<26; i++)
  61. {
  62.   digits["A".charCodeAt(0)+i] = i
  63.   digits["a".charCodeAt(0)+i] = i+26
  64. }
  65. for (var i=0; i<10; i++) digits["0".charCodeAt(0)+i] = i+52
  66. digits[0x2b] = 62
  67. digits[0x2f] = 63
  68. function unescape(char)
  69. {
  70.   var escapes = "#&!*$"
  71.   var escaped = "\r\n<>@"
  72.   if (char.charCodeAt(0) > 126) return char
  73.   if (escapes.indexOf(char) != -1) return escaped.substr(escapes.indexOf(char), 1)
  74.   return "?"
  75. }
  76. function decodeBase64(string)
  77. {
  78.   var val = 0
  79.   val +=  (digits[string.substr(0,1).charCodeAt(0)] << 2)
  80.   val +=  (digits[string.substr(1,1).charCodeAt(0)] >> 4)
  81.   val +=  (digits[string.substr(1,1).charCodeAt(0)] & 0xf) << 12
  82.   val += ((digits[string.substr(2,1).charCodeAt(0)] >> 2) << 8)
  83.   val += ((digits[string.substr(2,1).charCodeAt(0)] & 0x3) << 22)
  84.   val +=  (digits[string.substr(3,1).charCodeAt(0)] << 16)
  85.   return val
  86. }
  87. function strdec(encodingString)
  88. {
  89.   
  90.   var marker = "#@~^"
  91.   var stringIndex = 0
  92.   var scriptIndex = -1
  93.   var unEncodingIndex = 0
  94.   var char = null
  95.   var encodingLength = unEncodinglength = 0
  96.   var state = STATE_COPY_INPUT
  97.   var unEncodingString = ""
  98.   var re, arr
  99.   
  100.   while(state)
  101.   {
  102.    switch (state)
  103.    {
  104.     case (STATE_COPY_INPUT) :
  105.      scriptIndex = encodingString.indexOf(marker, stringIndex)
  106.      if (scriptIndex != -1)
  107.      {
  108.       unEncodingString += encodingString.substring(stringIndex, scriptIndex)
  109.       scriptIndex += marker.length
  110.       state = STATE_READLEN
  111.      }
  112.      else
  113.      {
  114.       stringIndex = stringIndex==0 ? 0 : stringIndex
  115.       unEncodingString += encodingString.substr(stringIndex, encodingString.length)
  116.       state = 0
  117.      }
  118.      break
  119.    
  120.     case (STATE_READLEN) :
  121.      encodingLength = encodingString.substr(scriptIndex, 6)
  122.      unEncodinglength = decodeBase64(encodingLength)
  123.      scriptIndex += (6 + "==".length)
  124.      state = STATE_DECODE
  125.      break
  126.      
  127.     case (STATE_DECODE) :
  128.      if (!unEncodinglength)
  129.      {
  130.       stringIndex = scriptIndex + "DQgAAA==^#~@".length
  131.       unEncodingIndex = 0
  132.       state = STATE_COPY_INPUT
  133.       break
  134.      }
  135.      char = encodingString.substr(scriptIndex, 1)
  136.      if (char == "@") state = STATE_UNESCAPE
  137.      else
  138.      {
  139.       if (char.charCodeAt(0) < 0xFF)
  140.       {
  141.        unEncodingString += String.fromCharCode(transformed[pick_encoding[unEncodingIndex%64]][char.charCodeAt(0)])
  142.        unEncodingIndex++
  143.       }
  144.       else
  145.       {
  146.        unEncodingString += char
  147.       }      
  148.       scriptIndex++
  149.       unEncodinglength--
  150.       break
  151.      }
  152.      
  153.     case STATE_UNESCAPE:
  154.      unEncodingString += unescape(encodingString.substr(++scriptIndex, 1))
  155.      scriptIndex++; unEncodinglength -=2
  156.      unEncodingIndex++
  157.      state = STATE_DECODE
  158.      break
  159.    }
  160.   }
  161.   
  162.   re  = new RegExp("(JScript|VBscript).encode", "gmi")
  163.   while(arr = re.exec(unEncodingString)) unEncodingString = RegExp.leftContext + RegExp.$1 + RegExp.rightContext
  164.   return unEncodingString
  165. }
  166. //-->
  167. </script>
  168. <form name=qq>
  169. <p align="center"><b><font face="华文中宋" color="#0000FF" size="6">ENCODE加
  170. 密 解 密</font></b></p>
  171. <p>
  172. <br>
  173. 请输入要加密或解密的文本:</p>
  174. <div align=center>
  175. <table><tr align=center><td colspan=2>
  176. <textarea name=codeinput cols=100 rows="15"></textarea>
  177. </td></tr>
  178. <tr align=center><td>
  179. <input type="button" value="Encode加密" onclick="this.form.codeinput.value=screncode(this.form.codeinput.value,'JS')">
  180. </td><td>
  181. <p align="center">
  182. <input type="button" value="Encode解密" onclick="this.form.codeinput.value=strdec(this.form.codeinput.value)"> <br>
  183. </p>
  184. </td>
  185. </form></form></form></tr></table>
  186. </form>
  187. <p style="width:100%;padding:0 40px;text-align:left">说明:</p>
  188. <p style="width:100%;padding:0 40px;text-align:left">加密时应只加密脚本部分,不加密脚本标记<script language="javascript">,</p>
  189. <p style="width:100%;padding:0 40px;text-align:left">并且加密后脚本标记应改为:<script language="JScript.Encode"></p>
  190. <div align=center><br>
  191. <table width=95%><tr><td align=left>
  192. 网页解密&reg; 1.00
  193. </td></tr></table>
  194. </div><br><p>
  195. </div>
  196. </BODY>
  197. </HTML>
复制代码





欢迎光临 星星博客 (http://commerce.huhoo.net/) Powered by Discuz! 7.0.0