Ich habe den ASP-Quellcode mit großem Interesse aus dem Internet heruntergeladen, als ich die Datei öffnete und den verschlüsselten Code wie ein Buch im Himmel sah. Es war sehr deprimierend.
Ich habe die Entschlüsselungsmethode im Internet gefunden. Ich muss Dateien einzeln öffnen, kopieren, einfügen, entschlüsseln, erneut kopieren, erneut einfügen und speichern ...
Was ist, wenn ein ASP-Programm Hunderte von Dateien hat?
Hier kommt die Lösung:
decode.asp
<% @Language="JavaScript" %>
<%
/*
*--------------decode.asp ---------------
* Funktion: Durchsuchen Sie alle Dateien in einem bestimmten Verzeichnis und verschlüsselte ASP-Dateien
* Entschlüsseln und in die Quelldatei schreiben.
* Beispiel: Entschlüsselung einer einzelnen Datei
* Response.Write(DncodeFile(Server.MapPath("conn.asp")));
* Beispiel: Alle Dateien im Verzeichnis entschlüsseln.
* DncodeFolderFiles(Server.MapPath("xml"))
* Autor:wanghr100(grey bean baby.net)
* Aktualisierung: 17.05.2004 11:31
*--------------decode.asp ---------------
*/
function DncodeFile(sFilePath)
{
/*
*------------- DncodeFile(sFilePath) -----------------
* DncodeFile(sFilePath)
* Funktion: Öffnen Sie die Datei sFilePath, Encode zum Entschlüsseln und schreiben Sie die Datei neu.
* Parameter: sFilePath, String, Dateipfad.
* Rückgabe: sFilePath, der Pfad der Datei.
* Beispiel: Response.Write(DncodeFile(Server.MapPath("conn.asp")));
* Autor:wanghr100(grey bean baby.net)
* Aktualisierung: 17.05.2004 0:58
*------------- DncodeFile(sFilePath) -----------------
*/
var ForReading = 1, ForWriting =2, ForAppending =8;
var fso = Server.CreateObject("Scripting.FileSystemObject");
var f = fso.OpenTextFile(sFilePath,ForReading,true);
sFileText = f.ReadAll();
f.Close();
sDncodeText = strdec(sFileText)
var f = fso.OpenTextFile(sFilePath,ForWriting,true);
f.Write(sDncodeText);
f.Close();
//sDncodeText zurückgeben;
return sFilePath;
}
Funktion GetFilesPath(sFolderPath)
{
/*
*-------------- GetFilesPath(sFolderPath) --------------
* GetFilesPath(sFolderPath)
* Funktion: Durchsuchen Sie alle Dateien im sFolderPath-Verzeichnis. Geben Sie ein Array zurück.
* Parameter: sFolderPath, String, absoluter Verzeichnispfad.
* Beispiel: Response.Write(GetFilesPath(Server.MapPath("xml")))
* Aktualisierung: 12.5.2004 8:33
* Autor:wanghr100(grey bean baby.net)
*-------------- GetFilesPath(sFolderPath) --------------
*/
var sFilePath = new Array();
var fso = Server.CreateObject("Scripting.FileSystemObject");
var oFolder = fso.GetFolder(sFolderPath);
var oSubFolders = oFolder.SubFolders;
var oFiles = oFolder.Files;
icount = oFiles.Count;
var enmFiles = new Enumerator(oFiles);
for(;!enmFiles.atEnd();enmFiles.moveNext())
{
sFilePath[sFilePath.length] = enmFiles.item().Path
}
var enmFolders = new Enumerator(oSubFolders);
for(;!enmFolders.atEnd();enmFolders.moveNext())
{
/* Altes Array ist mehrdimensional */
//sFilePath[sFilePath.length]=GetFilesPath(enmFolders.item().Path);
/* Hinzufügen 2004-5-17 11:09 Nur eindimensionales Array*/
sFilePath=sFilePath.concat(GetFilesPath(enmFolders.item().Path));
}
return sFilePath;
}
function GetFileType(sFileName)
{
/*
*---------------- GetFileType(sFileName) -------------------
* GetFileType(sFileName)
* Funktion: Ermitteln Sie den Dateityp von sFileName über das Suffix.
* Parameter: sFileName, String, Dateiname.
* Beispiel: Response.Write(GetFileType("decode.asp"))
* Aktualisierung: 13.5.2004 8:33
* Autor:wanghr100(grey bean baby.net)
*---------------- GetFileType(sFileName) -------------------
*/
sFileName = String(sFileName);
return sFileName.split(".")[sFileName.split(".").length-1];
}
/* Entschlüsselungsimplementierung starten: Li Huihuang Start*/
Funktion 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 transformiert = neues Array()
for (var i=0; i<3; i++) transform[i] = new Array()
for (var i=31; i<=126; i++) for (var j=0; j<3; j++) transformiert[j][rawData[(i-31) * 3 + j]] = (i== 31)?9:i
var digits = new Array()
für (var i=0; i<26; i++)
{
digits["A".charCodeAt(0)+i] = i
digits["a".charCodeAt(0)+i] = i+26
}
für (var i=0; i<10; i++) digits["0".charCodeAt(0)+i] = i+52
Ziffern[0x2b] = 62
Ziffern[0x2f] = 63
Funktion unescape(char)
{
var escapes = "#&!*$"
var escaped = "rn<>@"
if (char.charCodeAt(0) > 126) return char
if (escapes.indexOf(char) != -1) return escaped.substr(escapes.indexOf(char), 1)
zurückkehren "?"
}
Funktion decodeBase64(string)
{
Varval=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)
Rückgabewert
}
Funktion strdec(encodingString)
{
var marker = "#@~^"
var stringIndex = 0
var scriptIndex = -1
var unEncodingIndex = 0
var char = null
var bindingLength = unEncodinglength = 0
var state = STATE_COPY_INPUT
var unEncodingString = ""
var re, arr
while(Zustand)
{
Schalter (Zustand)
{
Fall (STATE_COPY_INPUT):
scriptIndex = bindingString.indexOf(marker, stringIndex)
if (scriptIndex != -1)
{
unEncodingString += bindingString.substring(stringIndex, scriptIndex)
scriptIndex += marker.length
state = STATE_READLEN
}
anders
{
stringIndex = stringIndex==0 ? 0 : stringIndex
unEncodingString +=kodierungString.substr(stringIndex,kodierungString.länge)
Zustand = 0
}
brechen
Fall (STATE_READLEN):
EncodingLength = EncodingString.substr(scriptIndex, 6)
unEncodinglength = decodeBase64(encodingLength)
scriptIndex += (6 + "==".length)
state = STATE_DECODE
brechen
Fall (STATE_DECODE):
if (!unEncodinglength)
{
stringIndex = scriptIndex + " DQgAAA==^#~@".length
unEncodingIndex = 0
state = STATE_COPY_INPUT
brechen
}
char = EncodingString.substr(scriptIndex, 1)
if (char == "@") state = STATE_UNESCAPE
anders
{
if (char.charCodeAt(0) < 0xFF)
{
unEncodingString += String.fromCharCode(transformed[pick_encoding[unEncodingIndex%64]][char.charCodeAt(0)])
unEncodingIndex++
}
anders
{
unEncodingString += char
}
scriptIndex++
unEncodinglength--
brechen
}
Fall STATE_UNESCAPE:
unEncodingString += unescape(encodingString.substr(++scriptIndex, 1))
scriptIndex++; unEncodinglength -=2
unEncodingIndex++
state = STATE_DECODE
brechen
}
}
re = new RegExp("(JScript|VBscript).encode", "gmi")
while(arr = re.exec(unEncodingString)) unEncodingString = RegExp.leftContext + RegExp.$1 + RegExp.rightContext
Gibt unEncodingString zurück
}
/* Entschlüsselungsimplementierung beenden: Li HuihuangEnd*/
Funktion DncodeFolderFiles(sFolderPath)
{
/*
*--------------DncodeFolderFiles(sFolderPath) --------------
* DncodeFolderFiles(sFolderPath)
* Funktion: Durchsuchen Sie alle Dateien im sFolderPath-Verzeichnis und verschlüsselte .asp-Dateien
* Entschlüsseln und in die Quelldatei schreiben.
* Beispiel: DncodeFolderFiles(Server.MapPath("xml"));
* Autor:wanghr100(grey bean baby.net)
* Aktualisierung: 17.5.2004 8:07
*--------------DncodeFolderFiles(sFolderPath) --------------
*/
var arrFiles = GetFilesPath(sFolderPath)
for(var i=0;i<arrFiles.length;i++)
{
if(GetFileType(arrFiles[i])=="asp")
{
Response.Write(DncodeFile(arrFiles[i]))
Response.Write("OK.<br>")
}
}
}
//Alle Dateien im XML-Verzeichnis abrufen und entschlüsseln.
DncodeFolderFiles(Server.MapPath("xml"))
//T.asp.decryption abrufen.
Response.Write(DncodeFile(Server.MapPath("t.asp")))
%>