给客户弄WP模板的时候解密其中的加密代码

时间: 2011-04-01 / 分类: wordpress / 浏览次数: 2,549 views / 0个评论 发表评论

今天给客户弄WP模板的时候发现作者把页脚加密了

我还以为直接ECHO就可以出来了,结果却得到更乱的乱码

上网一查,如来是所谓N层加密的办法

然后我从网上找到了一些办法,最后只有这个通过了考验,解出我要的东西

附上代码

 

<?php
/**********************************************************************
*PHP eval gzinflate base64_decode str_rot13加密解密脚本 By:Neeao
*目前只写了针对四种组合的,其他组合的可参考注释自行修改:
*1.eval(gzinflate(str_rot13(base64_decode(
*2.eval(gzinflate(base64_decode(
*3.gzinflate(base64_decode(base64_decode(str_rot13(
*4.eval(gzinflate(base64_decode(str_rot13(
*Http://Neeao.com
*2009-09-28
***********************************************************************/

$filename=’coded.txt’;//要解密的文件
$handle = fopen($filename, “r”);
$contents = fread($handle, filesize ($filename));
$contents_arr=explode(‘NeeaoNeeao’,htmlspecialchars(decode($contents)));
echo “此代码被加密了”.$contents_arr[0].”层,内容如下:<br>\n”;
echo $contents_arr[1];

/*
解密主函数
$Str,要解密的文件内容
*/
function decode($str,$i=0)
{

$content=””;
//eval(gzinflate(str_rot13(base64_decode(
//先正则查找是否相关组合加密的,base64编码后的正则是:[A-Za-z0-9\/\+=]
if(preg_match(“/(eval\(gzinflate\(str_rot13\(base64_decode\(‘)([A-Za-z0-9\/\+=]*)’/”,$str,$x))
{
//替换掉没用的字符,获取加密后的密文
$content=str_replace(“eval(gzinflate(str_rot13(base64_decode(‘”,””,$x[0]);
$content=str_replace(“‘”,””,$content);
//变量i是用来判断加密层数的,初始值为0,解密一次,层数加一
$i++;
//采用相关组合解密
$content=gzinflate(str_rot13(base64_decode($content)));
//递归判断下是不是已经结束了,没结束继续重复解密
$content=decode($content,$i);
}
//eval(gzinflate(base64_decode(
elseif(preg_match(“/eval\(gzinflate\(base64_decode\(‘[A-Za-z0-9\/\+=]*’/”,$str,$y))
{

$content=str_replace(“eval(gzinflate(base64_decode(‘”,””,$y[0]);
$content=str_replace(“‘”,””,$content);
$i++;
$content=gzinflate(base64_decode($content));
$content=decode($content,$i);
}
//gzinflate(base64_decode(base64_decode(str_rot13(
elseif(preg_match(“/eval\(gzinflate\(base64_decode\(base64_decode\(str_rot13\(‘[A-Za-z0-9\/\+=]*’/”,$str,$z))
{
$content=str_replace(“eval(gzinflate(base64_decode(base64_decode(str_rot13(‘”,””,$z[0]);
$content=str_replace(“‘”,””,$content);
$i++;
$content=gzinflate(base64_decode(base64_decode(str_rot13(($content)))));
$content=decode($content,$i);
}
//eval(gzinflate(base64_decode(str_rot13(
elseif(preg_match(“/eval\(gzinflate\(base64_decode\(str_rot13\(‘[A-Za-z0-9\/\+=]*’/”,$str,$m))
{
$content=str_replace(“eval(gzinflate(base64_decode(str_rot13(‘”,””,$m[0]);
$content=str_replace(“‘”,””,$content);
$i++;
$content=gzinflate(base64_decode(str_rot13(($content))));
$content=decode($content,$i);
}
else
{
$content=$i.”NeeaoNeeao”.$str;
}
return $content;

}
?>

 

当然,也不是一帆风顺,中间某个步骤说是解了67层的时候,还是乱码,但是这个脚本却提示已经解出来了,我还以为这个脚本没用

结果我把他显示的结果再存入需要解密的文件那里,再解了几十层之后,我要的代码终于出来了,就几个简单的DIV加一些版权东东

让我大呼上当,还以为他加密了啥函数在里面呢

发表评论

你必须 登录后 才能留言!