博主辛苦了,我要打赏银两给博主,犒劳犒劳站长。
【摘要】之前记录过一篇文章,也是关于 PHP 源代码加密和解密的方法,提供了比较完整的加密解密步骤,而本文将再次的给出一个经典的 PHP 源代码加密解密的实例。
之前写过的 PHP 源代码加密解密文章:
http://www.mafutian.net/287.html首先假设文件 1.php 里面的内容是:
echo "PHP Source code encoding";
而这个时候,我们不希望有人能直接看到源代码,然后下面给出加密函数:
function RandAbc($length = "")
{
// 返回随机字符串
$str = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
return str_shuffle($str);
}
$filename = '1.php'; // 要加密的文件
$T_k1 = RandAbc(); // 随机密匙1
$T_k2 = RandAbc(); // 随机密匙2
$vstr = file_get_contents($filename);
$v1 = base64_encode($vstr);
$c = strtr($v1, $T_k1, $T_k2); //根据密匙替换对应字符。
$c = $T_k1.$T_k2.$c;
$q1 = "O00O0O";
$q2 = "O0O000";
$q3 = "O0OO00";
$q4 = "OO0O00";
$q5 = "OO0000";
$q6 = "O00OO0";
$s = '$'.$q6.'=urldecode("n1zb/ma5\vt0i28-pxuqy*6lrkdg9_ehcswo4+f37j");$'.$q1.'=$'.$q6.'{3}.$'.$q6.'{6}.$'.$q6.'{33}.$'.$q6.'{30};$'.$q3.'=$'.$q6.'{33}.$'.$q6.'{10}.$'.$q6.'{24}.$'.$q6.'{10}.$'.$q6.'{24};$'.$q4.'=$'.$q3.'{0}.$'.$q6.'{18}.$'.$q6.'{3}.$'.$q3.'{0}.$'.$q3.'{1}.$'.$q6.'{24};$'.$q5.'=$'.$q6.'{7}.$'.$q6.'{13};$'.$q1.'.=$'.$q6.'{22}.$'.$q6.'{36}.$'.$q6.'{29}.$'.$q6.'{26}.$'.$q6.'{30}.$'.$q6.'{32}.$'.$q6.'{35}.$'.$q6.'{26}.$'.$q6.'{30};eval($'.$q1.'("'.base64_encode('$'.$q2.'="'.$c.'";eval(\'?>\'.$'.$q1.'($'.$q3.'($'.$q4.'($'.$q2.',$'.$q5.'*2),$'.$q4.'($'.$q2.',$'.$q5.',$'.$q5.'),$'.$q4.'($'.$q2.',0,$'.$q5.'))));').'"));';
$s = '<?php '."\n".$s."\n".' ?>';
// echo $s;
// 生成 加密后的PHP文件
$fpp1 = fopen('temp_'.$filename, 'w');
fwrite($fpp1, $s) or die('写文件错误');
以上只要输入需要加密的 php 文件,即 1.php ,然后就会生成一个加密后的文件 temp_1.php ,此时里面生成的内容是:
$O00OO0=urldecode("n1zb/ma5\vt0i28-pxuqy*6lrkdg9_ehcswo4+f37j");$O00O0O=$O00OO0{3}.$O00OO0{6}.$O00OO0{33}.$O00OO0{30};$O0OO00=$O00OO0{33}.$O00OO0{10}.$O00OO0{24}.$O00OO0{10}.$O00OO0{24};$OO0O00=$O0OO00{0}.$O00OO0{18}.$O00OO0{3}.$O0OO00{0}.$O0OO00{1}.$O00OO0{24};$OO0000=$O00OO0{7}.$O00OO0{13};$O00O0O.=$O00OO0{22}.$O00OO0{36}.$O00OO0{29}.$O00OO0{26}.$O00OO0{30}.$O00OO0{32}.$O00OO0{35}.$O00OO0{26}.$O00OO0{30};eval($O00O0O("JE8wTzAwMD0iQXNQT1FSTEVnd3hOcGtvWUhuaUlXY3F1TXZGZWhteXpTSlhHYVRCYmpsZFVWRHJ0ZktaQ3VNak5VbE9BUmlZZVBmdG1xYWJUckx6dkVvWHNjd1prQmRoRldTSEdLSnhnSXB5VkNuRFFqcDlpV3F1UnBVdGVRUkpKbTJjb1RRZFVCWHVSZzI5MUx3ZUpURmVvREZnUkRyNUtHMmxQR3dMYk5pPT0iO2V2YWwoJz8+Jy4kTzAwTzBPKCRPME9PMDAoJE9PME8wMCgkTzBPMDAwLCRPTzAwMDAqMiksJE9PME8wMCgkTzBPMDAwLCRPTzAwMDAsJE9PMDAwMCksJE9PME8wMCgkTzBPMDAwLDAsJE9PMDAwMCkpKSk7"));
很显然,看起来特别的高级、特别复杂,相信从来没有学过 PHP 或者是刚刚接触 PHP 的人一定会觉得这个是无法破解啦。看到加密函数中还包含了随机的秘钥,而且是两个随机秘钥:随机秘钥1,随机秘钥2,想当然的就以为这是无法破解的,在这里我要说 no,no,no,马上给出破解方法:
// $s 就是 PHP 源码,$O0O000 指的就是如上加密后的内容
$s = base64_decode(strtr(substr($O0O000,52*2),substr($O0O000,52,52),substr($O0O000,0,52)));
然后我们执行一下:
看看,以上是不是已经将密文进行解密啦,对于本文所引用的方法,还是只能用来糊弄一些非本行技术人员的人的,对于业内人士来说还是可以寻求解密办法的~~
版权归 马富天PHP博客 所有
本文链接地址:http://www.mafutian.net/324.html
转载请务必注明出处,小生将不胜感激,谢谢! 喜欢本文或觉得本文对您有帮助,请分享给您的朋友 ^_^
顶0
踩0
评论审核未开启 |