给客户弄WP模板的时候解密其中的加密代码
今天给客户弄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加一些版权东东
让我大呼上当,还以为他加密了啥函数在里面呢