<% @Language="JavaScript" %>
<%
/*
*--------------decodificar.asp ---------------
* Función: recorrer todos los archivos en un determinado directorio y archivos .asp cifrados
* Descifrar y escribir en el archivo fuente.
* Ejemplo: descifrado de un solo archivo
* Response.Write(DncodeFile(Server.MapPath("conn.asp")));
* Ejemplo: Descifre todos los archivos del directorio.
* DncodeFolderFiles(Servidor.MapPath("xml"))
* autor:wanghr100 (gris frijol baby.net)
* actualización: 2004-5-17 11:31
*--------------decodificar.asp ---------------
*/
función DncodeFile(sFilePath)
{
/*
*-------------- DncodeFile(sFilePath) -----------------
* DncodeFile(sFilePath)
* Función: abra el archivo sFilePath, codifique para descifrarlo y vuelva a escribir el archivo.
* Parámetros: sFilePath, cadena, ruta del archivo.
* Retorno: sFilePath, la ruta del archivo.
* Ejemplo: Response.Write(DncodeFile(Server.MapPath("conn.asp")));
* autor:wanghr100 (gris frijol baby.net)
* actualización: 2004-5-17 0:58
*-------------- DncodeFile(sFilePath) -----------------
*/
var Para leer = 1, Para escribir = 2, Para agregar = 8;
var fso = Server.CreateObject("Scripting.FileSystemObject");
var f = fso.OpenTextFile(sFilePath,ForReading,true);
sFileText = f.ReadAll();
f.Cerrar();
sDncodeText = strdec(sFileText)
var f = fso.OpenTextFile(sFilePath,ForWriting,true);
f.Escribir(sDncodeText);
f.Cerrar();
//devuelve sDncodeText;
devolver sFilePath;
}
función GetFilesPath(sFolderPath)
{
/*
*-------------- GetFilesPath(sFolderPath) --------------
* GetFilesPath(sFolderPath)
* Función: recorre todos los archivos en el directorio sFolderPath. Devuelve una matriz y almacena la ruta del archivo.
* Parámetros: sFolderPath, cadena, ruta absoluta del directorio.
* Ejemplo: Response.Write(GetFilesPath(Server.MapPath("xml")))
* actualización: 2004-5-12 8:33
* autor:wanghr100 (gris frijol baby.net)
*-------------- GetFilesPath(sFolderPath) --------------
*/
var sFilePath = nueva matriz();
var fso = Server.CreateObject("Scripting.FileSystemObject");
var oFolder = fso.GetFolder(sFolderPath);
var oSubFolders = oFolder.SubFolders;
var oFiles = oFolder.Files;
icount = oFiles.Count;
var enmFiles = nuevo enumerador(oFiles);
for(;!enmFiles.atEnd();enmFiles.moveNext())
{
sFilePath[sFilePath.length] = enmFiles.item().Path
}
var enmFolders = nuevo enumerador(oSubFolders);
for(;!enmFolders.atEnd();enmFolders.moveNext())
{
/* La matriz antigua es multidimensional */
//sFilePath[sFilePath.length]=GetFilesPath(enmFolders.item().Path);
/* Añadir 2004-5-17 11:09 Sólo matriz unidimensional*/
sFilePath=sFilePath.concat(GetFilesPath(enmFolders.item().Path));
}
devolver sFilePath;
}
función GetFileType(sFileName)
{
/*
*---------------- GetFileType(sFileName) ------------------
* GetFileType(sNombreDeArchivo)
* Función: Obtenga el tipo de archivo sFileName a través del sufijo.
* Parámetros: sFileName, cadena, nombre de archivo.
* Ejemplo: Respuesta.Write(GetFileType("decode.asp"))
* actualización: 2004-5-13 8:33
* autor:wanghr100 (gris frijol baby.net)
*---------------- GetFileType(sFileName) ------------------
*/
sFileName = String(sFileName);
return sFileName.split(".")[sFileName.split(".").length-1];
}
/* Iniciar implementación de descifrado: Li Huihuang Inicio*/
código de pantalla de función(s,l)
{enc=nuevo ActiveXObject("Scripting.Encoder");
return enc.EncodeScriptFile("."+l,s,0,l+"cript");
}
varESTADO_COPY_INPUT = 100
varESTADO_READLEN = 101
varESTADO_DECODE = 102
var STATE_UNESCAPE = 103
var pick_encoding = nueva matriz (
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 = nueva matriz (
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 transformada = nueva matriz()
para (var i=0; i<3; i++) transformado[i] = new Array()
for (var i=31; i<=126; i++) for (var j=0; j<3; j++) transformado[j][rawData[(i-31) * 3 + j]] = (i== 31)?9:yo
var dígitos = nueva matriz()
para (var i=0; i<26; i++)
{
dígitos["A".charCodeAt(0)+i] = i
dígitos["a".charCodeAt(0)+i] = i+26
}
para (var i=0; i<10; i++) dígitos["0".charCodeAt(0)+i] = i+52
dígitos[0x2b] = 62
dígitos[0x2f] = 63
función unescape(char)
{
var escapa = "#&!*$"
var escapó = "rn<>@"
si (char.charCodeAt(0) > 126) devuelve carácter
si (escapes.indexOf(char)! = -1) devuelve escaped.substr(escapes.indexOf(char), 1)
devolver "?"
}
función decodificarBase64 (cadena)
{
varval=0
val += (dígitos[string.substr(0,1).charCodeAt(0)] << 2)
val += (dígitos[cadena.substr(1,1).charCodeAt(0)] >> 4)
val += (dígitos[string.substr(1,1).charCodeAt(0)] & 0xf) << 12
val += ((dígitos[cadena.substr(2,1).charCodeAt(0)] >> 2) << 8)
val += ((dígitos[string.substr(2,1).charCodeAt(0)] & 0x3) << 22)
val += (dígitos[string.substr(3,1).charCodeAt(0)] << 16)
valor de retorno
}
función strdec(cadenacodificación)
{
marcador var = "#@~^"
var índice de cadena = 0
var scriptIndex = -1
var unEncodingIndex = 0
var char = nulo
var codificaciónLongitud = unEncodinglength = 0
estado var = STATE_COPY_INPUT
var unEncodingString = ""
var re, arr
mientras (estado)
{
interruptor (estado)
{
caso (STATE_COPY_INPUT):
scriptIndex = codificaciónString.indexOf(marcador, stringIndex)
si (scriptIndex! = -1)
{
unEncodingString += codificaciónString.substring(stringIndex, scriptIndex)
scriptIndex += marcador.longitud
estado = STATE_READLEN
}
demás
{
índice de cadena = índice de cadena == 0 ?
unEncodingString += codificaciónString.substr(stringIndex, codificaciónString.length)
estado = 0
}
romper
caso (STATE_READLEN):
codificaciónLongitud = codificaciónString.substr(scriptIndex, 6)
unEncodinglength = decodeBase64(codificaciónLongitud)
scriptIndex += (6 + "==".longitud)
estado = STATE_DECODE
romper
caso (STATE_DECODE):
si (!unEncodinglength)
{
stringIndex = scriptIndex + " DQgAAA==^#~@".longitud
índice sin codificación = 0
estado = STATE_COPY_INPUT
romper
}
char = codificaciónString.substr(scriptIndex, 1)
si (char == "@") estado = STATE_UNESCAPE
demás
{
si (char.charCodeAt(0) < 0xFF)
{
unEncodingString += String.fromCharCode(transformado[pick_encoding[unEncodingIndex%64]][char.charCodeAt(0)])
unEncodingIndex++
}
demás
{
unEncodingString += carácter
}
scriptIndex++
longitud sin codificación--
romper
}
caso STATE_UNESCAPE:
unEncodingString += unescape(encodingString.substr(++scriptIndex, 1))
scriptIndex++; longitud sin codificación -=2
unEncodingIndex++
estado = STATE_DECODE
romper
}
}
re = nueva RegExp("(JScript|VBscript).encode", "gmi")
while(arr = re.exec(unEncodingString)) unEncodingString = RegExp.leftContext + RegExp.$1 + RegExp.rightContext
devolver unEncodingString
}
/* Finalizar la implementación del descifrado: Li HuihuangEnd*/
función DncodeFolderFiles(sFolderPath)
{
/*
*--------------DncodeFolderFiles(sFolderPath) --------------
* DncodeFolderFiles(sFolderPath)
* Función: recorrer todos los archivos en el directorio sFolderPath y los archivos .asp cifrados
* Descifrar y escribir en el archivo fuente.
* Ejemplo: DncodeFolderFiles(Server.MapPath("xml"));
* autor:wanghr100 (gris frijol baby.net)
* actualización: 2004-5-17 8:07
*--------------DncodeFolderFiles(sFolderPath) --------------
*/
var arrFiles = GetFilesPath(sFolderPath)
para(var i=0;i<arrFiles.length;i++)
{
if(GetFileType(arrFiles[i])=="asp")
{
Respuesta.Escribir(DncodeFile(arrFiles[i]))
Respuesta.Escribir("OK.<br>")
}
}
}
//Obtener todos los archivos en el directorio xml y descifrarlos.
DncodeFolderFiles(Servidor.MapPath("xml"))
//Obtener t.asp.decryption.
//Respuesta.Write(DncodeFile(Server.MapPath("t.asp")))
%>