返回列表 回复 发帖

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>
复制代码

                     我是一个呼吸着现在的空气而生活在过去的人
               这样的注定孤独,孤独的身处闹市却犹如置身于荒漠
                                     我已习惯了孤独,爱上孤独
                                 他让我看清了自我,还原了自我
                             让我再静静的沉思中得到快乐和满足
                                   再孤独的世界里我一遍又一遍
                                   不厌其烦的改写着自己的过去
                                             延伸到现在与未来
                                       然而那只是泡沫般的美梦
                                 产生的时刻又伴随着破灭的到来
                         在灰飞烟灭的瞬间我看到的是过程的美丽
                                      而不是结果的悲哀。。。
返回列表