Decoder.asp
上传用户:sking1122
上传日期:2020-09-24
资源大小:1005k
文件大小:10k
源码类别:

手机WAP编程

开发平台:

ASP/ASPX

  1. <%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
  2. <!--#include file="../admin_sb.asp"-->
  3. <%
  4. '*********** ASPSecurity 插件 脚本解密***********
  5. ' Copyright 2006
  6. ' Create:2006-4-15
  7. ' Update:2006-7-29
  8. '************************************************
  9. If request("path")<>"" Then
  10. CheckFile(request("path"))
  11. temp = DecodeFile(request("path"))
  12. End If
  13. If request("EncodeStr")<>"" Then
  14. xxx = request("EncodeStr")
  15. temp = strdec(xxx)
  16. End If
  17. Function DecodeFile(sFilePath)
  18. Set tStream = Server.CreateObject("ADODB.Stream")
  19. tStream.type = 2
  20. tStream.mode = 3
  21. tStream.open
  22. tStream.Position=0
  23. tStream.LoadFromFile sFilePath
  24. tStream.charset = "GB2312"
  25. filetxt = replace(tStream.ReadText(), Chr(0), "")
  26. tStream.close()
  27. Set tStream = Nothing
  28. Decodetxt = strdec(filetxt)
  29. DecodeFile = Decodetxt
  30. End Function
  31. Sub CheckFile(path)
  32. Set tStream = Server.CreateObject("ADODB.Stream")
  33. tStream.type = 2
  34. tStream.mode = 3
  35. tStream.open
  36. tStream.Position=0
  37. tStream.LoadFromFile path
  38. tStream.charset = "GB2312"
  39. filetxt = replace(tStream.ReadText(), Chr(0), "")
  40. tStream.close()
  41. Set tStream = Nothing
  42. Set regEx = New RegExp
  43. regEx.IgnoreCase = True
  44. regEx.Global = True
  45. regEx.Pattern = "s*LANGUAGEs*=s*[""]?s*(vbscript|jscript|javascript).encodeb"
  46. If regEx.Test(filetxt) = False Then
  47. response.Write("<scri"&"pt>alert('该文件并没有被加密,不要乱来!');</scr"&"ipt>")
  48. response.End()
  49. End If
  50. Set regEx = Nothing
  51. End Sub
  52. %>
  53. <script language="javascript" runat="server">
  54. /* Start 解密实现:李辉煌 Start*/
  55. function screncode(s,l)
  56. {enc=new ActiveXObject("Scripting.Encoder");
  57. return enc.EncodeScriptFile("."+l,s,0,l+"cript");
  58. }
  59.     var STATE_COPY_INPUT        = 100
  60.     var STATE_READLEN       = 101
  61.     var STATE_DECODE        = 102
  62.     var STATE_UNESCAPE      = 103
  63.     var pick_encoding = new Array(
  64.         1, 2, 0, 1, 2, 0, 2, 0, 0, 2, 0, 2, 1, 0, 2, 0,
  65.         1, 0, 2, 0, 1, 1, 2, 0, 0, 2, 1, 0, 2, 0, 0, 2,
  66.         1, 1, 0, 2, 0, 2, 0, 1, 0, 1, 1, 2, 0, 1, 0, 2,
  67.         1, 0, 2, 0, 1, 1, 2, 0, 0, 1, 1, 2, 0, 1, 0, 2
  68.     )
  69.     var rawData = new Array(
  70.         0x64,0x37,0x69, 0x50,0x7E,0x2C, 0x22,0x5A,0x65, 0x4A,0x45,0x72,
  71.         0x61,0x3A,0x5B, 0x5E,0x79,0x66, 0x5D,0x59,0x75, 0x5B,0x27,0x4C,
  72.         0x42,0x76,0x45, 0x60,0x63,0x76, 0x23,0x62,0x2A, 0x65,0x4D,0x43,
  73.         0x5F,0x51,0x33, 0x7E,0x53,0x42, 0x4F,0x52,0x20, 0x52,0x20,0x63,
  74.         0x7A,0x26,0x4A, 0x21,0x54,0x5A, 0x46,0x71,0x38, 0x20,0x2B,0x79,
  75.         0x26,0x66,0x32, 0x63,0x2A,0x57, 0x2A,0x58,0x6C, 0x76,0x7F,0x2B,
  76.         0x47,0x7B,0x46, 0x25,0x30,0x52, 0x2C,0x31,0x4F, 0x29,0x6C,0x3D,
  77.         0x69,0x49,0x70, 0x3F,0x3F,0x3F, 0x27,0x78,0x7B, 0x3F,0x3F,0x3F,
  78.         0x67,0x5F,0x51, 0x3F,0x3F,0x3F, 0x62,0x29,0x7A, 0x41,0x24,0x7E,
  79.         0x5A,0x2F,0x3B, 0x66,0x39,0x47, 0x32,0x33,0x41, 0x73,0x6F,0x77,
  80.         0x4D,0x21,0x56, 0x43,0x75,0x5F, 0x71,0x28,0x26, 0x39,0x42,0x78,
  81.         0x7C,0x46,0x6E, 0x53,0x4A,0x64, 0x48,0x5C,0x74, 0x31,0x48,0x67,
  82.         0x72,0x36,0x7D, 0x6E,0x4B,0x68, 0x70,0x7D,0x35, 0x49,0x5D,0x22,
  83.         0x3F,0x6A,0x55, 0x4B,0x50,0x3A, 0x6A,0x69,0x60, 0x2E,0x23,0x6A,
  84.         0x7F,0x09,0x71, 0x28,0x70,0x6F, 0x35,0x65,0x49, 0x7D,0x74,0x5C,
  85.         0x24,0x2C,0x5D, 0x2D,0x77,0x27, 0x54,0x44,0x59, 0x37,0x3F,0x25,
  86.         0x7B,0x6D,0x7C, 0x3D,0x7C,0x23, 0x6C,0x43,0x6D, 0x34,0x38,0x28,
  87.         0x6D,0x5E,0x31, 0x4E,0x5B,0x39, 0x2B,0x6E,0x7F, 0x30,0x57,0x36,
  88.         0x6F,0x4C,0x54, 0x74,0x34,0x34, 0x6B,0x72,0x62, 0x4C,0x25,0x4E,
  89.         0x33,0x56,0x30, 0x56,0x73,0x5E, 0x3A,0x68,0x73, 0x78,0x55,0x09,
  90.         0x57,0x47,0x4B, 0x77,0x32,0x61, 0x3B,0x35,0x24, 0x44,0x2E,0x4D,
  91.         0x2F,0x64,0x6B, 0x59,0x4F,0x44, 0x45,0x3B,0x21, 0x5C,0x2D,0x37,
  92.         0x68,0x41,0x53, 0x36,0x61,0x58, 0x58,0x7A,0x48, 0x79,0x22,0x2E,
  93.         0x09,0x60,0x50, 0x75,0x6B,0x2D, 0x38,0x4E,0x29, 0x55,0x3D,0x3F
  94.     )
  95.     var transformed = new Array()
  96.     for (var i=0; i<3; i++) transformed[i] = new Array()
  97.     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
  98.     
  99.     var digits = new Array()
  100.     for (var i=0; i<26; i++)
  101.     {
  102.         digits["A".charCodeAt(0)+i] = i
  103.         digits["a".charCodeAt(0)+i] = i+26
  104.     }
  105.     for (var i=0; i<10; i++)    digits["0".charCodeAt(0)+i] = i+52
  106.     digits[0x2b] = 62
  107.     digits[0x2f] = 63
  108.     function unescape(char)
  109.     {
  110.         var escapes = "#&!*$"
  111.         var escaped = "rn<>@"
  112.         if (char.charCodeAt(0) > 126)   return char
  113.         if (escapes.indexOf(char) != -1)    return escaped.substr(escapes.indexOf(char), 1)
  114.         return "?"
  115.     }
  116.     
  117.     function decodeBase64(string)
  118.     {
  119.         var val = 0
  120.         val +=  (digits[string.substr(0,1).charCodeAt(0)] << 2)
  121.         val +=  (digits[string.substr(1,1).charCodeAt(0)] >> 4)
  122.         val +=  (digits[string.substr(1,1).charCodeAt(0)] & 0xf) << 12
  123.         val += ((digits[string.substr(2,1).charCodeAt(0)] >> 2) << 8)
  124.         val += ((digits[string.substr(2,1).charCodeAt(0)] & 0x3) << 22)
  125.         val +=  (digits[string.substr(3,1).charCodeAt(0)] << 16)
  126.         return val
  127.     }
  128.     function strdec(encodingString)
  129.     {
  130.         
  131.         var marker = "#@~^"
  132.         var stringIndex = 0
  133.         var scriptIndex = -1
  134.         var unEncodingIndex = 0
  135.         var char = null
  136.         var encodingLength = unEncodinglength = 0
  137.         var state = STATE_COPY_INPUT
  138.         var unEncodingString = ""
  139.         var re, arr
  140.         
  141.         while(state)
  142.         {
  143.             switch (state)
  144.             {
  145.                 case (STATE_COPY_INPUT) :
  146.                     scriptIndex = encodingString.indexOf(marker, stringIndex)
  147.                     if (scriptIndex != -1)
  148.                     {
  149.                         unEncodingString += encodingString.substring(stringIndex, scriptIndex)
  150.                         scriptIndex += marker.length
  151.                         state = STATE_READLEN
  152.                     }
  153.                     else
  154.                     {
  155.                         stringIndex = stringIndex==0 ? 0 : stringIndex
  156.                         unEncodingString += encodingString.substr(stringIndex, encodingString.length)
  157.                         state = 0
  158.                     }
  159.                     break
  160.                 
  161.                 case (STATE_READLEN)    :
  162.                     encodingLength = encodingString.substr(scriptIndex, 6)
  163.                     unEncodinglength = decodeBase64(encodingLength)
  164.                     scriptIndex += (6 + "==".length)
  165.                     state = STATE_DECODE
  166.                     break
  167.                     
  168.                 case (STATE_DECODE) :
  169.                     if (!unEncodinglength)
  170.                     {
  171.                         stringIndex = scriptIndex + "DQgAAA==^#~@".length
  172.                         unEncodingIndex = 0
  173.                         state = STATE_COPY_INPUT
  174.                         break
  175.                     }
  176.                     char = encodingString.substr(scriptIndex, 1)
  177.                     if (char == "@")    state = STATE_UNESCAPE
  178.                     else
  179.                     {
  180.                         if (char.charCodeAt(0) < 0xFF)
  181.                         {
  182.                             unEncodingString += String.fromCharCode(transformed[pick_encoding[unEncodingIndex%64]][char.charCodeAt(0)])
  183.                             unEncodingIndex++
  184.                         }
  185.                         else
  186.                         {
  187.                             unEncodingString += char
  188.                         }                       
  189.                         scriptIndex++
  190.                         unEncodinglength--
  191.                         break
  192.                     }
  193.                     
  194.                 case STATE_UNESCAPE:
  195.                     unEncodingString += unescape(encodingString.substr(++scriptIndex, 1))
  196.                     scriptIndex++;  unEncodinglength -=2
  197.                     unEncodingIndex++
  198.                     state = STATE_DECODE
  199.                     break
  200.             }
  201.         }
  202.         
  203.         re  = new RegExp("(JScript|VBscript).encode", "gmi")
  204.         while(arr = re.exec(unEncodingString))  unEncodingString = RegExp.leftContext + RegExp.$1 + RegExp.rightContext
  205.         return unEncodingString
  206.     }
  207. </script>
  208. <html>
  209. <head>
  210. <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
  211. <link rel="stylesheet" rev="stylesheet" href="../inc/control.css" type="text/css" media="all" />
  212. <style type="text/css">
  213. <!--
  214. body,td,th {
  215. font-size: 12px;
  216. }
  217. -->
  218. </style>
  219. <title>雷客图ASP站长安全助手脚本解密插件</title></head>
  220. <body class="ContentBody">
  221. <div class="MainDiv">
  222. <table width="100%" border="0" cellpadding="0" cellspacing="0" class="CContent">
  223.   <tr>
  224.     <th class="CTitle">雷客图ASP站长安全助手 脚本解密插件
  225.   </tr>
  226.   <tr>
  227.     <td class="CPanel">
  228.         <div id="updateInfo" style="background:ffffe1;border:1px solid #89441f;padding:4px;display:none"></div>
  229. <table width="100%" border="0" cellpadding="0" cellspacing="0">
  230.  <tr>
  231.  <td valign="top" style="padding:5px;width:140px"><img src="../images/Icon/ControlPanel.png" width="128" height="128"/></td>
  232.  <td valign="top">  <div align="left" style="padding:5px;line-height:170%;clear:both;font-size:12px">
  233.      <form name="form1" method="post" action="" onSubmit="form1.submit.disabled=true;">
  234.   <table width="80%"  border="0" align="center">
  235.   <tr>
  236.     <td><div align="center"><strong>.Encode脚本解密 for ASPSecurity </strong></div></td>
  237.   </tr>
  238.   <tr>
  239.     <td> &nbsp;&nbsp;&nbsp;&nbsp;
  240.       <div align="center">本页面用于解密windows脚本编码器加密的代码,核心代码来自网络。注:有时效果不是很好,可试试网上的exe版本</div></td>
  241.   </tr>
  242.   <tr>
  243.     <td>
  244.       <div align="center">
  245.         <textarea name="EncodeStr" cols="100" rows="20" id="EncodeStr"><%=server.HTMLEncode(temp)%></textarea>
  246.       </div></td>
  247.   </tr>
  248.   <tr>
  249.     <td><div align="center">
  250.       <input type="submit" name="submit" value="解密">
  251.       &nbsp;&nbsp;
  252.       <input type="reset" name="Submit2" value="清空">
  253.     </div></td>
  254.   </tr>
  255. </table>
  256. </form>
  257. <br/>  
  258.  <a href="#" onClick="javascript:history.go(-1);">返回插件首页</a></div>       
  259.  </tr>
  260. </table>
  261. </td></tr></table>
  262. </div>
  263. </body>
  264. </html>