解密ASP源代码
下载ASP源代码后常遇加密代码,手动逐个文件解密繁琐费时。现提供复制代码的解决方案,只需简单操作即可快速批量完成解密,大幅提升效率,省时省力。
从网上兴致冲冲地下载了ASP源代码,准备学习研究的时候,一打开文件,天书般的加密代码,让人很郁闷吧 :( 网上倒是找到了解密的方法,但得一个文件挨一个文件地打开、复制、粘贴、解密、再复制、再粘贴、再保存……如果一个ASP程序有几百个文件,那画面简直不敢想。
解决办法来了——
复制代码
<% @Language="Ja vaScript" %>
<%
/*
*--------------- decode.asp -----------------
* 功能:遍历某个目录下的所有文件,对加密过的.asp文件
* 进行解密,并写入源文件中.
* 实例:单个文件解密
* Response.Write(DncodeFile(Server.MapPath("conn.asp")));
* 实例:目录下所有文件解密.
* DncodeFolderFiles(Server.MapPath("xml"))
* author:wanghr100
* update:2004-5-17 11:31
*--------------- decode.asp -----------------
*/
function DncodeFile(sFilePath)
{
/*
*--------------- DncodeFile(sFilePath) -----------------
* DncodeFile(sFilePath)
* 功能:打开文件sFilePath,Encode解密,重写该文件.
* 参数:sFilePath,字符串,文件的路径.
* 返回:sFilePath,文件的路径.
* 实例:Response.Write(DncodeFile(Server.MapPath("conn.asp")));
* author:wanghr100
* update: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);
sFileText = f.ReadAll();
f.Close();
sDncodeText = strdec(sFileText)
var f = fso.OpenTextFile(sFilePath,ForWriting,true);
f.Write(sDncodeText);
f.Close();
//return sDncodeText;
return sFilePath;
}
function GetFilesPath(sFolderPath)
{
/*
*--------------- GetFilesPath(sFolderPath) -----------------
* GetFilesPath(sFolderPath)
* 功能:遍历sFolderPath目录下的所有文件.返回数组.存储文件路径.
* 参数:sFolderPath,字符串,目录绝对路径.
* 实例:Response.Write(GetFilesPath(Server.MapPath("xml")))
* update:2004-5-12 8:33
* author:wanghr100
*--------------- 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())
{
/* Old 数组成了多维. */
//sFilePath[sFilePath.length]=GetFilesPath(enmFolders.item().Path);
/* Add 2004-5-17 11:09 只为一维数组 */
sFilePath=sFilePath.concat(GetFilesPath(enmFolders.item().Path));
}
return sFilePath;
}
function GetFileType(sFileName)
{
/*
*--------------- GetFileType(sFileName) -----------------
* GetFileType(sFileName)
* 功能:通过后缀,取得sFileName的文件类型.
* 参数:sFileName,字符串,文件名.
* 实例:Response.Write(GetFileType("decode.asp"))
* update:2004-5-13 8:33
* author:wanghr100
*--------------- GetFileType(sFileName) -----------------
*/
sFileName = String(sFileName);
return sFileName.split(".")[sFileName.split(".").length-1];
}
/* Start 解密实现:李辉煌 Start*/
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
}
/* End 解密实现:李辉煌 End*/
function DncodeFolderFiles(sFolderPath)
{
/*
*--------------- DncodeFolderFiles(sFolderPath) -----------------
* DncodeFolderFiles(sFolderPath)
* 功能:遍历sFolderPath目录下的所有文件,对加密过的.asp文件
* 进行解密,并写入源文件中.
* 实例:DncodeFolderFiles(Server.MapPath("xml"));
* author:wanghr100
* update:2004-5-17 8:07
*--------------- DncodeFolderFiles(sFolderPath) -----------------
*/
var arrFiles = GetFilesPath(sFolderPath)
for(var i=0;i")
}
}
}
//取得xml目录下的所有文件.解密.
DncodeFolderFiles(Server.MapPath("list"))
//取得t.asp.解密.
//Response.Write(DncodeFile(Server.MapPath("t.asp")))
%>
IntelliJ IDEA 是 JetBrains 推出的专业集成开发环境,重点服务于 Java、Kotlin 与 JVM 项目开发。软件集成代码补全、静态检查、重构、调试、测试、版本控制及构建工具,并可借助插件扩展语言和框架支持。
JetBrains PyCharm 是面向 Python 开发者的集成开发环境,提供智能补全、代码检查、重构、调试、测试、版本控制及虚拟环境管理功能。Mac 版兼容 Intel 与 Apple 芯片,核心功能可免费使用。
JetBrains WebStorm 是面向 JavaScript、TypeScript 和现代 Web 技术的专业集成开发环境,可智能理解项目结构,提供代码补全、重构、错误检查、运行调试、测试及 Git 工具。
JetBrains IntelliJ IDEA 是以 Java、Kotlin 和 JVM 项目为核心的专业集成开发环境,提供智能补全、代码检查、安全重构、调试、测试、版本控制及构建工具集成。统一发行版的核心功能可免费用于商业和非商业项目,
PhpStorm 是 JetBrains 面向 PHP 与现代 Web 开发打造的专业集成开发环境,提供代码补全、静态检查、重构、调试、测试、数据库、版本控制及前端语言支持。Windows 用户可直接下载安装程序,
PyCharm 是 JetBrains 推出的 Python 集成开发环境,提供智能代码补全、错误检查、重构、调试、测试、Git、终端及 Jupyter Notebook 支持。统一版安装后可体验 30 天 Pro 功能,













