您所在的位置: 程序员家园 -> 家园博客 ->
 
在哪里摔倒
就在哪里自己爬起来

用户登录

查  找

最新评论

最新留言

常用网站

网易邮箱 GMAIL  

百度搜索 MSDN

霏凡软件 BT精品

影视帝国 射 手 网

电驴下载 全 库 网

友情连接

茄菲的窝 冰冰博客

枫叶飘零 玫  瑰

ACEN 云 豹 子

统  计



Encode的解密代码
狼子 发表于 2007-9-24 20:07:00 阅读全文 | 回复(0) | 引用通告 | 编辑

使用escape、unescape、encodeURI、decodeURI编码解码见这里:user1/9/archives/2007/4205.html

Encrypt HTML Pro解码见这里:user1/9/archives/2007/4216.html

Encrypt HTML Pro解码见这里:user1/9/archives/2007/4216.html

下面是Encode的解密代码,存成htm文件就可以用了

<html>
<HEAD><title>Encoder</title>
<script language=javascript>
<!--
function screncode(s,l)
{enc=new ActiveXObject("scripting.Encoder");
return enc.EncodescriptFile("."+l,s,0,l+"cript");
}


 var STATE_COPY_INPUT  = 100
 var STATE_READLEN  = 101
 var STATE_DECODE  = 102
 var STATE_UNESCAPE  = 103

 var pick_encoding = new Array(
  1, 2, 0, 1, 2, 0, 2, 0, 0, 2, 0, 2, 1, 0, 2, 0,
  1, 0, 2, 0, 1, 1, 2, 0, 0, 2, 1, 0, 2, 0, 0, 2,
  1, 1, 0, 2, 0, 2, 0, 1, 0, 1, 1, 2, 0, 1, 0, 2,
  1, 0, 2, 0, 1, 1, 2, 0, 0, 1, 1, 2, 0, 1, 0, 2
 )

 var rawData = new Array(
  0x64,0x37,0x69, 0x50,0x7E,0x2C, 0x22,0x5A,0x65, 0x4A,0x45,0x72,
  0x61,0x3A,0x5B, 0x5E,0x79,0x66, 0x5D,0x59,0x75, 0x5B,0x27,0x4C,
  0x42,0x76,0x45, 0x60,0x63,0x76, 0x23,0x62,0x2A, 0x65,0x4D,0x43,
  0x5F,0x51,0x33, 0x7E,0x53,0x42, 0x4F,0x52,0x20, 0x52,0x20,0x63,
  0x7A,0x26,0x4A, 0x21,0x54,0x5A, 0x46,0x71,0x38, 0x20,0x2B,0x79,
  0x26,0x66,0x32, 0x63,0x2A,0x57, 0x2A,0x58,0x6C, 0x76,0x7F,0x2B,
  0x47,0x7B,0x46, 0x25,0x30,0x52, 0x2C,0x31,0x4F, 0x29,0x6C,0x3D,
  0x69,0x49,0x70, 0x3F,0x3F,0x3F, 0x27,0x78,0x7B, 0x3F,0x3F,0x3F,
  0x67,0x5F,0x51, 0x3F,0x3F,0x3F, 0x62,0x29,0x7A, 0x41,0x24,0x7E,
  0x5A,0x2F,0x3B, 0x66,0x39,0x47, 0x32,0x33,0x41, 0x73,0x6F,0x77,
  0x4D,0x21,0x56, 0x43,0x75,0x5F, 0x71,0x28,0x26, 0x39,0x42,0x78,
  0x7C,0x46,0x6E, 0x53,0x4A,0x64, 0x48,0x5C,0x74, 0x31,0x48,0x67,
  0x72,0x36,0x7D, 0x6E,0x4B,0x68, 0x70,0x7D,0x35, 0x49,0x5D,0x22,
  0x3F,0x6A,0x55, 0x4B,0x50,0x3A, 0x6A,0x69,0x60, 0x2E,0x23,0x6A,
  0x7F,0x09,0x71, 0x28,0x70,0x6F, 0x35,0x65,0x49, 0x7D,0x74,0x5C,
  0x24,0x2C,0x5D, 0x2D,0x77,0x27, 0x54,0x44,0x59, 0x37,0x3F,0x25,
  0x7B,0x6D,0x7C, 0x3D,0x7C,0x23, 0x6C,0x43,0x6D, 0x34,0x38,0x28,
  0x6D,0x5E,0x31, 0x4E,0x5B,0x39, 0x2B,0x6E,0x7F, 0x30,0x57,0x36,
  0x6F,0x4C,0x54, 0x74,0x34,0x34, 0x6B,0x72,0x62, 0x4C,0x25,0x4E,
  0x33,0x56,0x30, 0x56,0x73,0x5E, 0x3A,0x68,0x73, 0x78,0x55,0x09,
  0x57,0x47,0x4B, 0x77,0x32,0x61, 0x3B,0x35,0x24, 0x44,0x2E,0x4D,
  0x2F,0x64,0x6B, 0x59,0x4F,0x44, 0x45,0x3B,0x21, 0x5C,0x2D,0x37,
  0x68,0x41,0x53, 0x36,0x61,0x58, 0x58,0x7A,0x48, 0x79,0x22,0x2E,
  0x09,0x60,0x50, 0x75,0x6B,0x2D, 0x38,0x4E,0x29, 0x55,0x3D,0x3F
 )

 var transformed = new Array()
 for (var i=0; i<3; i++) transformed[i] = new Array()
 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
 
 var digits = new Array()
 for (var i=0; i<26; i++)
 {
  digits["A".charCodeAt(0)+i] = i
  digits["a".charCodeAt(0)+i] = i+26
 }
 for (var i=0; i<10; i++) digits["0".charCodeAt(0)+i] = i+52
 digits[0x2b] = 62
 digits[0x2f] = 63

 function unescape(char)
 {
  var escapes = "#&!*$"
  var escaped = "\r\n<>@"

  if (char.charCodeAt(0) > 126) return char
  if (escapes.indexOf(char) != -1) return escaped.substr(escapes.indexOf(char), 1)
  return "?"
 }
 
 function decodeBase64(string)
 {
  var val = 0
  val +=  (digits[string.substr(0,1).charCodeAt(0)] << 2)
  val +=  (digits[string.substr(1,1).charCodeAt(0)] >> 4)
  val +=  (digits[string.substr(1,1).charCodeAt(0)] & 0xf) << 12
  val += ((digits[string.substr(2,1).charCodeAt(0)] >> 2) << 8)
  val += ((digits[string.substr(2,1).charCodeAt(0)] & 0x3) << 22)
  val +=  (digits[string.substr(3,1).charCodeAt(0)] << 16)
  return val
 }

 function strdec(encodingString)
 {
  
  var marker = "#@~^"
  var stringIndex = 0
  var scriptIndex = -1
  var unEncodingIndex = 0
  var char = null
  var encodingLength = unEncodinglength = 0
  var state = STATE_COPY_INPUT
  var unEncodingString = ""
  var re, arr
  
  while(state)
  {
   switch (state)
   {
    case (STATE_COPY_INPUT) :
     scriptIndex = encodingString.indexOf(marker, stringIndex)
     if (scriptIndex != -1)
     {
      unEncodingString += encodingString.substring(stringIndex, scriptIndex)
      scriptIndex += marker.length
      state = STATE_READLEN
     }
     else
     {
      stringIndex = stringIndex==0 ? 0 : stringIndex
      unEncodingString += encodingString.substr(stringIndex, encodingString.length)
      state = 0
     }
     break
    
    case (STATE_READLEN) :
     encodingLength = encodingString.substr(scriptIndex, 6)
     unEncodinglength = decodeBase64(encodingLength)
     scriptIndex += (6 + "==".length)
     state = STATE_DECODE
     break
     
    case (STATE_DECODE) :
     if (!unEncodinglength)
     {
      stringIndex = scriptIndex + "DQgAAA==^#~@".length
      unEncodingIndex = 0
      state = STATE_COPY_INPUT
      break
     }
     char = encodingString.substr(scriptIndex, 1)
     if (char == "@") state = STATE_UNESCAPE
     else
     {
      if (char.charCodeAt(0) < 0xFF)
      {
       unEncodingString += String.fromCharCode(transformed[pick_encoding[unEncodingIndex%64]][char.charCodeAt(0)])
       unEncodingIndex++
      }
      else
      {
       unEncodingString += char
      }      
      scriptIndex++
      unEncodinglength--
      break
     }
     
    case STATE_UNESCAPE:
     unEncodingString += unescape(encodingString.substr(++scriptIndex, 1))
     scriptIndex++; unEncodinglength -=2
     unEncodingIndex++
     state = STATE_DECODE
     break
   }
  }
  
  re  = new RegExp("(Jscript|VBscript).encode", "gmi")
  while(arr = re.exec(unEncodingString)) unEncodingString = RegExp.leftContext + RegExp.$1 + RegExp.rightContext
  return unEncodingString
 }
 
//-->
</script>

</HEAD>

<BODY>
<form method=post>
<textarea name=codeinput rows=10 cols=55></textarea>
<input name="button" type=button onclick=this.form.codeinput.value="/strdec(this.form.codeinput.value)" value=Encode解密>
</form>
</BODY></html>

发表评论:

    昵称:
    密码:
    主页:
    标题:
Powered by Oblog.