<% @Language="JavaScript" %>
<%
/*
*--------------- -----------------
* Function: traverse all files in a certain directory and encrypted .asp files
* Decrypt and write to the source file.
* Example: Single file decryption
* (DncodeFile(("")));
* Example: Decrypt all files in the directory.
* DncodeFolderFiles(("xml"))
* author:wanghr100 (Gray Bean Baby.net)
* update:2004-5-17 11:31
*--------------- -----------------
*/
function DncodeFile(sFilePath)
{
/*
*--------------- DncodeFile(sFilePath) -----------------
* DncodeFile(sFilePath)
* Function: Open the file sFilePath, Encode decryption, and rewrite the file.
* Parameters: sFilePath, string, file path.
* Return:sFilePath, file path.
* Example:(DncodeFile(("")));
* author:wanghr100 (Gray Bean Baby.net)
* update:2004-5-17 0:58
*--------------- DncodeFile(sFilePath) -----------------
*/
var ForReading = 1, ForWriting =2, ForAppending =8;
var fso = ("");
var f = (sFilePath,ForReading,true);
sFileText = ();
();
sDncodeText = strdec(sFileText)
var f = (sFilePath,ForWriting,true);
(sDncodeText);
();
//return sDncodeText;
return sFilePath;
}
function GetFilesPath(sFolderPath)
{
/*
*--------------- GetFilesPath(sFolderPath) -----------------
* GetFilesPath(sFolderPath)
* Function: Iterate through all files in the sFolderPath directory. Return to array and store file paths.
* Parameters: sFolderPath, string, directory absolute path.
* Example:(GetFilesPath(("xml")))
* update:2004-5-12 8:33
* author:wanghr100 (Gray Bean Baby.net)
*--------------- GetFilesPath(sFolderPath) -----------------
*/
var sFilePath = new Array();
var fso = ("");
var oFolder = (sFolderPath);
var oSubFolders = ;
var oFiles = ;
icount = ;
var enmFiles = new Enumerator(oFiles);
for(;!();())
{
sFilePath[] = ().Path
}
var enmFolders = new Enumerator(oSubFolders);
for(;!();())
{
/* Old The number forms multi-dimensional.*/
//sFilePath[]=GetFilesPath(().Path);
/* Add 2004-5-17 11:09 Only for one-dimensional arrays*/
sFilePath=(GetFilesPath(().Path));
}
return sFilePath;
}
function GetFileType(sFileName)
{
/*
*--------------- GetFileType(sFileName) -----------------
* GetFileType(sFileName)
* Function: Get the file type of sFileName through the suffix.
* Parameters: sFileName, string, file name.
* Example:(GetFileType(""))
* update:2004-5-13 8:33
* author:wanghr100 (Gray Bean Baby.net)
*--------------- GetFileType(sFileName) -----------------
*/
sFileName = String(sFileName);
return (".")[(".").length-1];
}
/* Start Decryption implementation: Li Huihuang Start*/
function screncode(s,l)
{enc=new ActiveXObject("");
return ("."+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 ((0) > 126) return char
if ((char) != -1) return ((char), 1)
return "?"
}
function decodeBase64(string)
{
var val = 0
val += (digits[(0,1).charCodeAt(0)] << 2)
val += (digits[(1,1).charCodeAt(0)] >> 4)
val += (digits[(1,1).charCodeAt(0)] & 0xf) << 12
val += ((digits[(2,1).charCodeAt(0)] >> 2) << 8)
val += ((digits[(2,1).charCodeAt(0)] & 0x3) << 22)
val += (digits[(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 = (marker, stringIndex)
if (scriptIndex != -1)
{
unEncodingString += (stringIndex, scriptIndex)
scriptIndex +=
state = STATE_READLEN
}
else
{
stringIndex = stringIndex==0 ? 0 : stringIndex
unEncodingString += (stringIndex, )
state = 0
}
break
case (STATE_READLEN) :
encodingLength = (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 = (scriptIndex, 1)
if (char == "@") state = STATE_UNESCAPE
else
{
if ((0) < 0xFF)
{
unEncodingString += (transformed[pick_encoding[unEncodingIndex%64]][(0)])
unEncodingIndex++
}
else
{
unEncodingString += char
}
scriptIndex++
unEncodinglength--
break
}
case STATE_UNESCAPE:
unEncodingString += unescape((++scriptIndex, 1))
scriptIndex++; unEncodinglength -=2
unEncodingIndex++
state = STATE_DECODE
break
}
}
re = new RegExp("(JScript|VBscript).encode", "gmi")
while(arr = (unEncodingString)) unEncodingString = + RegExp.$1 +
return unEncodingString
}
/* End Decryption implementation: Li Huihuang End*/
function DncodeFolderFiles(sFolderPath)
{
/*
*--------------- DncodeFolderFiles(sFolderPath) -----------------
* DncodeFolderFiles(sFolderPath)
* Function: traverse all files in the sFolderPath directory and encrypted .asp files
* Decrypt and write to the source file.
* Example:DncodeFolderFiles(("xml"));
* author:wanghr100 (Gray Bean Baby.net)
* update:2004-5-17 8:07
*--------------- DncodeFolderFiles(sFolderPath) -----------------
*/
var arrFiles = GetFilesPath(sFolderPath)
for(var i=0;i<;i++)
{
if(GetFileType(arrFiles[i])=="asp")
{
(DncodeFile(arrFiles[i]))
("OK.<br>")
}
}
}
//Get all files in the xml directory and decrypt.
DncodeFolderFiles(("list"))
//Acquire.Decrypt.
//(DncodeFile(("")))
%>