Saya mengunduh kode sumber ASP dari Internet dengan penuh minat. Ketika saya bersiap untuk belajar dan meneliti, ketika saya membuka file tersebut, saya melihat kode terenkripsi seperti buku di surga.
Saya menemukan metode dekripsi di Internet. Saya harus membuka file satu per satu, menyalin, menempel, mendekripsi, menyalin lagi, menempelkan lagi, dan menyimpan...
Bagaimana jika program ASP memiliki ratusan file???
Ini dia solusinya..
decode.asp
<% @Language="JavaScript" %>
<%
/*
*--------------decode.asp ---------------
* Fungsi: Melintasi semua file dalam direktori tertentu dan file .asp terenkripsi
* Dekripsi dan tulis ke file sumber.
* Contoh: dekripsi file tunggal
* Respon.Write(DncodeFile(Server.MapPath("conn.asp")));
* Contoh: Dekripsi semua file di direktori.
* DncodeFolderFiles(Server.MapPath("xml"))
* penulis:wanghr100(kacang abu-abu baby.net)
* pembaruan: 2004-5-17 11:31
*--------------decode.asp ---------------
*/
fungsi DncodeFile(sFilePath)
{
/*
*-------------- DncodeFile(sFilePath) -----------------
* DncodeFile(sFilePath)
* Fungsi : Membuka file sFilePath, Encode untuk mendekripsi, dan menulis ulang file.
* Parameter: sFilePath, string, jalur file.
* Kembali: sFilePath, jalur file.
* Contoh: Response.Write(DncodeFile(Server.MapPath("conn.asp")));
* penulis:wanghr100(kacang abu-abu baby.net)
* pembaruan: 2004-5-17 0:58
*-------------- DncodeFile(sFilePath) -----------------
*/
var ForReading = 1, ForWriting =2, ForAppending =8;
var fso = Server.CreateObject("Scripting.FileSystemObject");
var f = fso.OpenTextFile(sFilePath,ForReading,true);
sFileTeks = f.ReadAll();
f.Tutup();
sDncodeText = strdec(sFileTeks)
var f = fso.OpenTextFile(sFilePath,ForWriting,true);
f.Tulis(sDncodeText);
f.Tutup();
//kembalikan sDncodeText;
kembalikan sFilePath;
}
fungsi GetFilesPath(sFolderPath)
{
/*
*-------------- GetFilesPath(sFolderPath) --------------
* DapatkanFilesPath(sFolderPath)
* Fungsi: Melintasi semua file di direktori sFolderPath. Mengembalikan array.
* Parameter: sFolderPath, string, jalur absolut direktori.
* Contoh: Respon.Write(GetFilesPath(Server.MapPath("xml")))
* pembaruan: 2004-5-12 8:33
* penulis:wanghr100(kacang abu-abu baby.net)
*-------------- GetFilesPath(sFolderPath) --------------
*/
var sFilePath = Array baru();
var fso = Server.CreateObject("Scripting.FileSystemObject");
var oFolder = fso.GetFolder(sFolderPath);
var oSubFolder = oFolder.SubFolder;
var oFiles = oFolder.File;
icount = oFiles.Count;
var enmFiles = Enumerator baru(oFiles);
for(;!enmFiles.atEnd();enmFiles.moveNext())
{
sFilePath[sFilePath.length] = enmFiles.item().Path
}
var enmFolders = Enumerator baru(oSubFolder);
for(;!enmFolders.atEnd();enmFolders.moveNext())
{
/* Array lama bersifat multidimensi */
//sFilePath[sFilePath.length]=GetFilesPath(enmFolders.item().Path);
/* Tambahkan 17-5-2004 11:09 Hanya array satu dimensi*/
sFilePath=sFilePath.concat(GetFilesPath(enmFolders.item().Path));
}
kembalikan sFilePath;
}
fungsi GetFileType(sFileName)
{
/*
*---------------- GetFileType(sFileName) ------------------
* DapatkanJenis File(sFileName)
* Fungsi: Mendapatkan jenis file sFileName melalui akhiran.
* Parameter: sFileName, string, nama file.
* Contoh: Respon.Write(GetFileType("decode.asp"))
* pembaruan: 13-5-2004 8:33
* penulis:wanghr100(kacang abu-abu baby.net)
*---------------- GetFileType(sFileName) ------------------
*/
sFileName = String(sFileName);
return sFileName.split(".")[sFileName.split(".").length-1];
}
/* Mulai penerapan dekripsi: Li Huihuang Mulai*/
kode layar fungsi(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 = Array baru(
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 = Array baru(
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 berubah = Array baru()
untuk (var i=0; i<3; i++) ditransformasikan[i] = Array baru()
untuk (var i=31; i<=126; i++) untuk (var j=0; j<3; j++) ditransformasikan[j][rawData[(i-31) * 3 + j]] = (i== 31)?9:saya
var digit = Array baru()
untuk (var i=0; i<26; i++)
{
digit["A".charCodeAt(0)+i] = i
digit["a".charCodeAt(0)+i] = i+26
}
untuk (var i=0; i<10; i++) digit["0".charCodeAt(0)+i] = i+52
angka[0x2b] = 62
digit[0x2f] = 63
fungsi unescape(char)
{
var lolos = "#&!*$"
var lolos = "rn<>@"
if (char.charCodeAt(0) > 126) mengembalikan char
if (escapes.indexOf(char) != -1) kembali lolos.substr(escapes.indexOf(char), 1)
kembali "?"
}
fungsi decodeBase64(string)
{
varval=0
val += (digit[string.substr(0,1).charCodeAt(0)] << 2)
val += (digit[string.substr(1,1).charCodeAt(0)] >> 4)
val += (digit[string.substr(1,1).charCodeAt(0)] & 0xf) << 12
val += ((digit[string.substr(2,1).charCodeAt(0)] >> 2) << 8)
val += ((digit[string.substr(2,1).charCodeAt(0)] & 0x3) << 22)
val += (digit[string.substr(3,1).charCodeAt(0)] << 16)
kembali val
}
fungsi strdec(encodingString)
{
var penanda = "#@~^"
var stringIndeks = 0
var skripIndeks = -1
var unEncodingIndex = 0
var char = nol
var codingLength = unEncodinglength = 0
var negara bagian = STATE_COPY_INPUT
var unEncodingString = ""
var ulang, arr
sementara (negara bagian)
{
beralih (negara bagian)
{
kasus (STATE_COPY_INPUT):
scriptIndex = pengkodeanString.indexOf(penanda, stringIndex)
jika (indeks skrip!= -1)
{
unEncodingString += pengkodeanString.substring(stringIndex, scriptIndex)
scriptIndex += penanda.panjang
negara bagian = STATE_READLEN
}
kalau tidak
{
stringIndex = stringIndex==0 ?
unEncodingString += pengkodeanString.substr(stringIndex, pengkodeanString.panjang)
keadaan = 0
}
merusak
kasus (STATE_READLEN):
codingLength = pengkodeanString.substr(scriptIndex, 6)
unEncodinglength = decodeBase64(encodingLength)
scriptIndex += (6 + "==".panjang)
negara bagian = STATE_DECODE
merusak
kasus (STATE_DECODE):
if (!unencodinglength)
{
stringIndex = scriptIndex + " DQgAAA==^#~@".panjang
unEncodingIndex = 0
negara bagian = STATE_COPY_INPUT
merusak
}
char = pengkodeanString.substr(scriptIndex, 1)
jika (char == "@") status = STATE_UNESCAPE
kalau tidak
{
jika (char.charCodeAt(0) < 0xFF)
{
unEncodingString += String.fromCharCode(berubah[pick_encoding[unEncodingIndex%64]][char.charCodeAt(0)])
membatalkan EncodingIndex++
}
kalau tidak
{
unEncodingString += karakter
}
skripIndeks++
tidak mengkodekan panjang--
merusak
}
kasus STATE_UNESCAPE:
unEncodingString += unescape(encodingString.substr(++scriptIndex, 1))
scriptIndex++; panjang tidak dikodekan -=2
membatalkan EncodingIndex++
negara bagian = STATE_DECODE
merusak
}
}
re = RegExp baru("(JScript|VBscript).encode", "gmi")
while(arr = re.exec(unEncodingString)) unEncodingString = RegExp.leftContext + RegExp.$1 + RegExp.rightContext
kembalikan unEncodingString
}
/* Akhiri implementasi dekripsi: Li HuihuangEnd*/
fungsi DncodeFolderFiles(sFolderPath)
{
/*
*--------------DncodeFolderFiles(sFolderPath) --------------
* DncodeFolderFiles (sFolderPath)
* Fungsi: Melintasi semua file di direktori sFolderPath dan file .asp terenkripsi
* Dekripsi dan tulis ke file sumber.
* Contoh: DncodeFolderFiles(Server.MapPath("xml"));
* penulis:wanghr100(kacang abu-abu baby.net)
* pembaruan: 2004-5-17 8:07
*--------------DncodeFolderFiles(sFolderPath) --------------
*/
var arrFiles = GetFilesPath(sFolderPath)
for(var i=0;i<arrFiles.panjang;i++)
{
jika(GetFileType(arrFiles[i])=="asp")
{
Respon.Tulis(DncodeFile(arrFiles[i]))
Response.Write("OK.<br>")
}
}
}
//Dapatkan semua file di direktori xml dan dekripsi.
DncodeFolderFiles(Server.MapPath("xml"))
//Dapatkan t.asp.dekripsi.
Respon.Tulis(DncodeFile(Server.MapPath("t.asp")))
%>