使用JScript.encode进行网页的加密与解密

我们常常看到类似新浪上面的视频播放页面源文件是一堆乱码,实际上是经过JScript加密过的代码,这样可以防止普通用户轻易的找到视频源文件地址,从而盗链,下面把JScript加密解密的方法整理了一下:


申明:下面代码非本人原创,而是经过收集和整理的结果,由于原作者不祥,在此特说明。

JScript.encode实现加密解密的脚本代码如下:

<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>

上面代码的使用方法如下:
1、建一个.htm的文件,加入上面的代码。
2、再后面写上:

<form name="form">
<TEXTAREA NAME="code" ROWS="20" COLS="40" onfocus=this.select()>在这里写入你要加密或解密的内容。</TEXTAREA><BR>
<INPUT TYPE="button" value="/JScript.encode加密" onclick="this.form.code.value="/screncode(this.form.code.value,"'JS')">
<INPUT TYPE="button" value="/JScript.encode解密" onclick="this.form.code.value="/strdec(this.form.code.value)"">
</form>

3、保存该文件,用浏览器打开就可以进行加密和解密了。

下面有一个我做好的在线可以直接使用的页面,大家可以直接访问进行加密解密:
http://www.toplee.com/blog/wp-content/pages/jsencode.html

You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.
8 Responses
  1. Pingback: Anonymous
  2. ngs says:

    不能加密

  3. hxp says:

    这段代码不能解全,请问有什么更好的办法呢?

  4. hxp says:

    #@~^SQUAAA==@#@&P~,P,Pq6PgGYvkd1!:n.bm`Mn;!+/DcEmm//GDOmbNE#*bP:tnU@#@&P~~,P~IdaWUk+cDbY~J@!w@*@!aPCsbox{^+Y+M@*´íÎó²Ù×÷£¡@!za@*r@#@&P~~,P~IdwKxdnc2x[@#@&P~P,~,2U9P&0@#@&P,2lT+xD;;nkYR$;+MX/D.rxT`rwConE*@#@&P,r0,wCL’JE~Dtnx,2mon{F@#@&P,k6~xKYckkx;hDk1cwmo+*b~Y4+ P2lLn{F@#@&,~k6P2CT+@!q~Dtnx,2mon{F@#@&P,wmL+{kUYvwCL#@#@&~Pk+Y,.d’k+M\nD ^M+CYG4N+^OvJl[G94 D^KD[k+DJ#@#@&,~k6P.+$EndD`J1C//WMOmk9J*’EJ~O4+U@#@&~Pk;sxr/+sn1Y~e,WMWh,\x/4Wammm/nPKD[nMP4H~mm/+|r[PG2UZE@#@&~,+s/@#@&,P-n /tG2|mC/dKDO{k Y`M+$;+kYcJ1ldnkWDDmk9J#*@#@&P,/$VxJdn^+^Y,MP6DGh,\+Ud4W2{1Ck+~StD+,\U/4W2{1ldnkWDDxJL\+ d4Wa{1ld+dGMY’J,GD9+.~(XP^Ck+mk9~G2j;J@#@&P,+ [Pb0@#@&,P.dcWwUPk;VB^Gx ~2~f@#@&~,kWPMdRWW~Dt+U@#@&P~P,~,DnkwKx/RS.kD+~JÔÝÇÒûÓа¸Àýr@#@&~,PP,~D/wKUd+c+ N@#@&~~Vd+@#@&P,P~~,D/ 2mon/b”’+Z@#@&PP,P,~YKYCVM+^xM/RMnmKDN1G;xD@#@&P~P~~,YGYmswmonxM/R2CT+^W!UD@#@&,P,PP,k6~wmon@*DWOC^wlTnPDt+ ~2lT+{YGYCsalL+@#@&P,P~~,D/ C(/GV!OwCT+{wlT+@#@&P,P~P,kxT@#@&P,~P,PNK~AtbVPUWO~M/ +KWPmx[~vk@!.dcwCodbyn*@#@&PP,P,~k{kQF@#@&~~,PP,.+9k:,2.+k+M\nP^Ck+mk9ck*~-n /tG2|mC/Um:nvk*~\xk4Wa{^lk+[CD+`bb~7+xk4Gw|mm/nmGUD+UYvr#@#@&~~,PP~-xdtK2|mCk+ l:`bb’M/cJ7+Ud4Ww|^lk+xmhnJ*@#@&P~P~~,mC/mk9`rb{D/cE1ld+|r9Jb@#@&,PP,P,-+ /4Wa{^Ck+NmO+vk#{.d`r\xdtG2|mC/[lD+Eb@#@&P~~,P~\UktGa{1l/mKUYxO`b#x.k`J7nxktWam^lk+1WUYnUDJb@#@&~P,P~~M/RhG7+U+XO@#@&~,P,PP^WK2@#@&P~+ N~r6@#@&,~DkRm^Gd+@#@&,PEYsBAA==^#~@

    这段代码怎么解不全呢?

  5. huangfeifeu says:

    为什么只能解密,不能加密呢?这段程序代码有问题吗?

  6. Michael says:

    好像跟你浏览器或者系统上是否有一个控件有关系,具体的我也得研究研究:(

  7. kinghtonline says:

    我也是这觉得有点问题,有谁知道帮帮我,谢谢!

  8. 太复杂了,呵呵!

  9. minecraft says:

    Excellent post. Keep posting such kind of information on your page.
    Im really impressed by it.
    Hello there, You have done an incredible job.

    I’ll definitely digg it and in my view recommend to my friends.
    I’m sure they’ll be benefited from this website.

  10. Great post.

  11. WOW just what I was looking for. Came here by searching
    for minecraft free download 2018

  12. You really make it seem so easy with your presentation but I find this topic to be really
    something that I think I would never understand. It seems too
    complex and very broad for me. I am looking forward for your
    next post, I will try to get the hang of it!

  13. My spouse and I absolutely love your blog and find almost all of your post’s
    to be just what I’m looking for. Would you offer guest writers to write content for you personally?
    I wouldn’t mind publishing a post or elaborating on some of
    the subjects you write with regards to here. Again, awesome
    web log!

  14. I relish, result in I found just what I was looking for.
    You have ended my 4 day lengthy hunt! God Bless you man. Have a great day.
    Bye

  15. It’s appropriate time to make some plans for the future and it is time
    to be happy. I have learn this submit and if I may I want to counsel you some attention-grabbing things or
    tips. Maybe you can write next articles regarding this article.
    I wish to learn even more issues approximately it!

  16. I know this if off topic but I’m looking into starting my own blog
    and was wondering what all is needed to get set up? I’m assuming
    having a blog like yours would cost a pretty penny?
    I’m not very web smart so I’m not 100% positive. Any recommendations or advice would be greatly appreciated.
    Appreciate it

  17. Sling TV says:

    Ahaa, its nice conversation about this paragraph here at this web site, I have read all that, so now me also commenting at this place.

  18. Pingback: 2019
  19. Sling TV says:

    If you are going for finest contents like I do, only go to see this site all the time since it
    presents feature contents, thanks

  20. This is a topic which is near to my heart… Thank you!
    Where are your contact details though?

  21. Good way of telling, and fastidious piece of writing to obtain facts concerning my presentation subject,
    which i am going to present in school.

  22. Hi there! I know this is kind of off-topic but I had to ask.
    Does managing a well-established website such as yours take a
    massive amount work? I’m brand new to running a blog but I do write in my diary on a daily basis.

    I’d like to start a blog so I will be able to share my own experience and thoughts online.
    Please let me know if you have any suggestions or tips for
    brand new aspiring blog owners. Thankyou!

  23. Pingback: a2019-2020
  24. Pingback: facebook
  25. Pingback: facebook1
  26. Pingback: javsearch.mobi
  27. We’re a gaggle of volunteers and opening a new scheme in our
    community. Your website offered us with useful info to work on. You’ve performed an impressive task
    and our entire group will likely be thankful to you.

  28. Sports Betting Strategies – How to Start
    Sports Betting Successfully

    Betting on sports is recognized as one of the
    more interesting methods to gamble. Where else can be carried out that you can view your favorite
    sport this will let you opportunity to win some funds? Furthermore, the sense you will get whenever your favorite team wins is immeasurable in case you put your dollars in it.
    But much like other designs of gambling, you want a strategy to make your
    sports bet win, here are some guidelines to help you along.

    Before you even produce a bet, you at the very least have
    to find out the ins and outs about betting on your own favorite sport; what are probability of the teams, any kind of injuries you must know about,
    the morale of the team, what option is you betting in, etc.

    Information is a handy tool inside the smart bettor’s arsenal.
    Try getting betting tips off their successful bettors; this
    will be significant in case you’re new to the sport.
    And another thing that’s vitally important in sport betting is usually to know when you disappear
    have got won enough; learn how to gamble moderately.
    Knowing when you ought to quit when you are ahead is really a valuable quality which a good gambler has to have, as with that song by Kenny Rogers.

    Now whether you climb in to the winner’s circle or go to the losing end, all this is determined
    by what sort of strategy you’re going with and ways in which lucky you’re.
    So be than just a spectator and start placing your bets!

    Sport betting tips—> http://sports-betting.ml/

  29. It’s wonderful that you are getting thoughts from this post as
    well as from our dialogue made at this place.

  30. Asking questions are truly fastidious thing if you are not understanding something totally, however this post gives fastidious understanding yet.

Leave a Reply

Your email address will not be published. Required fields are marked *

*
To prove you're a person (not a spam script), type the security word shown in the picture. Click on the picture to hear an audio file of the word.
Anti-spam image