导航:首页 > 编程语言 > php解密教程

php解密教程

发布时间:2023-03-24 06:51:46

1. 如何把一个php文件解密

所谓的PHP文件加密,一般有两种方式,一是ZEND编译,二是BASE64等编码,理论上都不是加密,下面分别说说如何还原。

对于ZEND编译过的代码,用记事本打开是完全是乱码,除了前面的很小的头部,后面不是可见ASCII字符,有点像打开一个EXE文件的效果,是无法阅读的。这类处理的文件一般认为是无法还原的,网上有DEZEND工具,你可以下载来试试看,能还原早期ZEND版本编译后的代码。

对于使用BASE64等编码后的PHP文件,可以用记事本打开查看,所有字符都是可见ASCII字符,一般使用两种方法加大阅读难度:一是使用$ll111、$ooo000这样的变量,字母L的小写与1混在一起、字母O的小写与数字0混在一起,不容易分辨变量名称。二是使用BASE64编码对原始代码进行转换,最后使用eval进行处理。往往两种方式结合在一起。

第二种方式处理后的代码是很容易还原的,方法就是把eval换为exit,在CLI(命令提示符)下执行就会显示出eval那个语句对应的等效代码,替换原始语句即可。有时候还原一次后还是eval语句,那需要按照同样的方法反复处理。

2. 我是php新手,请问swoole怎么解密呢

恩,这是一款有扩展的加密,其实swoole解密很简单,要解密它,就先了解一下它是怎么工作的。
它的执行步骤是:①加密时获取PHP整个文件的代码 → ②对代码进行加密 → ③通过扩展对代码进行解密 → ④对解密代码进行opcode处理 → ⑤执行PHP代码。
所以解密就需要对他的扩展dll(windows下用)或so(Linux下用)文件分析。现在说说怎么解密它,解密方式有二种:
方法A:针对PHP执行的时候进行破解
方法B:针对PHP解密的时候进行破解
先说说方法A,“针对PHP执行的时候进行破解”,也就是在上面的第⑤个步骤才开始处理,但是此时,PHP代码是经过opcode处理过的,而且破解方法较烦琐,需要处理很多语法,所破解出来的代码,和文件的原代码也有所不一样(可能有10%的地方不同,不过这个不同,也有很多人喜欢,因为它会把原代码中复杂的语法破解成很多条简单的语法),既然是破解,就要100%一样,所以这个方法我个人认为并不是好方法。
所以用方法B:“针对PHP解密的时候进行破解”,也就是在上面的第③个步骤就进行处理,此时解密出来的和用户原代码完全一样,具体破解方法是不会公布的了,人家是一款商业软件。有兴趣的可以自己去学习分析,不过可以提一下,关键点在于从它的扩展文件(dll或so)分析出它的加密函数和加密密码,然后用这个对密文进行解密(解密前要排除掉前面的一些特征代码)。

3. PHP文件如何解密

你可以网上下载这款软件试试
黑刀Dezender
没有反应好象不对吧?
我用这个软件解密过杰奇小说的PHP源代码!
不过解密出来的源代码只能用来参考,不能直接用回去。
我在怀疑不是PHP代码的加密,你将</html>后面的代码复制到另一个记事本里另存为PHP,然后解一下密看看?如果还是不行,你要到网上找其他代码解密工具试试了!

4. php urldecode 解密

解密方法,把eval替换为exit,在控制台培宽让(DOS、WINDOS的命令提示符C:\>,LINUX的$)下配局执行,就会巧岩显示处理前的原始代码。

方法很简单,自己一试就知道。

5. php文件解密

PHP所有的加密都是纸老虎,把eval换为exit,然后在控制台(或者DOS下)运行一下就能看见那个eval语句解密后的代码,用来替换eval语句既可。例如你的程序中,第一个eval替换为exit后,执行输出的代码如下:
$OO0OO0000=$OOO000000{17}.$OOO000000{12}.$OOO000000{18}.$OOO000000{5}.$OOO000000{19};if(!0)$O000O0O00=$OO0OO0000($OOO0O0O00,'rb');$OO0OO000O=$OOO000000{17}.$OOO000000{20}.$OOO000000{5}.$OOO000000{9}.$OOO000000{16};$OO0OO00O0=$OOO000000{14}.$OOO000000{0}.$OOO000000{20}.$OOO000000{0}.$OOO000000{20};$OO0OO000O($O000O0O00,1253);$OO00O00O0=($OOO0000O0($OO0OO00O0($OO0OO000O($O000O0O00,380),'3MUQw4rlCWsbe+DthpLui5VnAfOSB9N6/=','+/')));eval($OO00O00O0);
用这一段替换源文件中的eval那一个语句,替换后的内容如下:
<?php // This file is protected by right law & provided under license. Copyright(C) 2009 www.i7a.cn, All rights reserved.
$OOO0O0O00=__FILE__;$OOO000000=urldecode('%74%68%36%73%62%65%68%71%6c%61%34%63%6f%5f%73%61%64%66%70%6e%72');$OO00O0000=9504;$OOO0000O0=$OOO000000{4}.$OOO000000{9}.$OOO000000{3}.$OOO000000{5};$OOO0000O0.=$OOO000000{2}.$OOO000000{10}.$OOO000000{13}.$OOO000000{16};$OOO0000O0.=$OOO0000O0{3}.$OOO000000{11}.$OOO000000{12}.$OOO0000O0{7}.$OOO000000{5};$O0O0000O0='OOO0000O0';$OO0OO0000=$OOO000000{17}.$OOO000000{12}.$OOO000000{18}.$OOO000000{5}.$OOO000000{19};if(!0)$O000O0O00=$OO0OO0000($OOO0O0O00,'rb');$OO0OO000O=$OOO000000{17}.$OOO000000{20}.$OOO000000{5}.$OOO000000{9}.$OOO000000{16};$OO0OO00O0=$OOO000000{14}.$OOO000000{0}.$OOO000000{20}.$OOO000000{0}.$OOO000000{20};$OO0OO000O($O000O0O00,1253);$OO00O00O0=($OOO0000O0($OO0OO00O0($OO0OO000O($O000O0O00,380),'3MUQw4rlCWsbe+DthpLui5VnAfOSB9N6/=','+/')));exit($OO00O00O0);return;?>

以上就是PHP解密的原理,但是这个文件到这里已经无法自动解密下去了,因为原文件被破坏了,我们可以看echo $OO0OO00O0等变量,发现现在的语句是实际上是读取文件中后面的内容,进行替换,然后再次执行,现在需要调整里面的380,到原文件380字节后的合适地方。

6. php代码加密怎么解密

$key="Thisissupposedtobeasecretkey!!!";
functionkeyED($txt,$encrypt_key)
{
$encrypt_key=md5($encrypt_key);
$ctr=0;
$tmp="";
for($i=0;$i<strlen($txt);$i++){
if($ctr==strlen($encrypt_key))$ctr=0;
$tmp.=substr($txt,$i,1)^substr($encrypt_key,$ctr,1);
$ctr++;
}
return$tmp;
}
functionencrypt($txt,$key)
{
srand((double)microtime()*1000000);
$encrypt_key=md5(rand(0,32000));
$ctr=0;
$tmp="";
for($i=0;$i<strlen($txt);$i++){
if($ctr==strlen($encrypt_key))$ctr=0;
$tmp.=substr($encrypt_key,$ctr,1).
(substr($txt,$i,1)^substr($encrypt_key,$ctr,1));
$ctr++;
}
returnkeyED($tmp,$key);
}
functiondecrypt($txt,$key)
{
$txt=keyED($txt,$key);
$tmp="";
for($i=0;$i<strlen($txt);$i++){
$md5=substr($txt,$i,1);
$i++;
$tmp.=(substr($txt,$i,1)^$md5);
}
return$tmp;
}
$string="HelloWorld!!!";
//encrypt$string,andstoreitin$enc_text
$enc_text=encrypt($string,$key);
//decrypttheencryptedtext$enc_text,andstoreitin$dec_text
$dec_text=decrypt($enc_text,$key);

//加密
functionstr2hex($s)
{
$r="";
$hexes=array("0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f");
for($i=0;$i<strlen($s);$i++)=""$r.=($hexes[(ord($s{$i})>>4)].$hexes[(ord($s{$i})&0xf)]);
return$r;
}

//解密
functionhex2str($s)
{
$r="";
for($i=0;$i<strlen($s);$i=""+="2)"{
$x1=ord($s{$i});
$x1=($x1>=48&&$x1<58)?$x1-48:$x1-97+10;
$x2=ord($s{$i+1});
$x2=($x2>=48&&$x2<58)?$x2-48:$x2-97+10;
$r.=chr((($x1<<4)&0xf0)|($x2&0x0f));
}
return$r;
}
echostr2hex("山东");
echo"
";
echohex2str("c9bdb6ab");
?>

7. 其他语言如何解密PHP多字符串的异或加密

利用“^”异或运算对字符串进行加密

思路:1.先创建字符串输入的Scanner;

2.通过char[] array = password.toCharArray();// 获取字符数组;

3.遍历字符数组,按目前理解要用到遍历:数组所有元素进行访问,比如你要输出数组里所有的信息时,就要用到

4.进行异或运算

按位做“异或”运算是:位值相同得1,不同得0

例如:

< 加密过程:>

原解释的二进制为 1 1 0 0 ----原文

设定的key的二进制为 0 1 1 0 ----密匙

两者做“异或”结果为 0 1 0 1 ----密文

< 解密过程:>

0 1 0 1----密文

0 1 1 0----密匙

两者“异或”就得到了原文 1 1 0 0 ----原文

详细代码:

package com.lixiyu;

import java.util.Scanner;

public class Example {

public static void main(String[] args){

Scanner sca=new Scanner(System.in);

System.out.println("请输入一个英文字符串或解密字符串");

String line=sca.nextLine();//获取用户输入信息

char[] array=line.toCharArray();//获取字符数组

for (int i=0;i<array.length;i++){//历遍字符数组

array[i]=(char) (array[i]^20000);//对数组每个元素进行异或运算

}

System.out.println("加密解密结果如下:");

System.out.println(new String(array));//输出密钥

}

}

异或运算:

1 ^ 1 = 0

1 ^ 0 = 1

0 ^ 1 = 1

0 ^ 0 = 0

字符'A' 的ASCII编码为65 : 00000000 01000001

取整数7 : 00000000 00000000 00000000 00000111

XOR运算后 : 00000000 00000000 00000000 01000110

简单加密算法代码如下 :

public class Test {
public static final int KEY = 7;
public static void main(String[] args) {
String str = "Hello World!";
StringBuffer str2 = new StringBuffer(); //存储加密后的字符串
StringBuffer str3 = new StringBuffer(); //存储解密后的字符串
//加密过程
for(int i=0;i<str.length();i++)
{
char c = (char)(str.charAt(i) ^ KEY);
str2.append(c);
}
//解密过程
for(int i=0;i<str2.length();i++)
{
char c = (char)(str2.charAt(i) ^ KEY);
str3.append(c);
}
System.out.println("原始 的字符串为:" + str);
System.out.println("加密后 的字符串为:" + str2);
System.out.println("解密后 的字符串为:" + str3);
}
}

输出:

原始 的字符串为:Hello World!

加密后 的字符串为:Obkkh'Phukc&

解密后 的字符串为:Hello World!

8. PHP解密 eval( base64_decode

这两个函数在php中是用得对php代码进行加密与解密码的base64_encode是加密,尔base64_decode是解密了,下面我们看两个简单实例。

base64_encode语法: string base64_decode(string data);
*/

$str='='; //定义字符串
echo base64_decode($str); //www.111cn.net一聚教程网 //输出解码后的内容/*

base64_encode语法: string base64_encode(string data);
*/

$str='www.111cn.net一聚教程网'; //定义字符串
echo base64_encode($str); // = //输出编码后的内容

看一下这个会不会对你有帮助。

9. PHP代码解密

两种加密手段,加密手段可谓很简册备单。解密技术也不复杂,只是有点头昏。

加密方法
1、混淆器加密。就是把各种变量弄得很相似,肉眼难以识别。如$abc,它统一弄成O0OOo0O这样的。所有的变量看起来都差不多。
2、base64加密。把变量混淆以后,再把代码的空格删掉,进行base64加密。用eval()函数运行。

解密技术:
1、把base64加密的,解密之。自己编一下,或者网上有很多在线解密的,很容易解开。把eval函数一层层剥开,去掉。该回车的就回车,有空格的加空格。
2、处理混淆的变量。放在word里面,通过查找和替换工具,逐一把混淆的变量改成含渣你觉得好识别的变量名。

如果代码不长,耐心点,一般都不难对付。至于长一点的代码,抱着永不放弃的理念,发扬愚公移山之精神,谈姿悄铁杆磨成绣花针也是指日可待。

10. PHP常用加密解密方法

作者/上善若水

1.md5(string $str,bool $flag = false);

$flag = false 默认返回32位的16进至数据散列值

$flag = true  返回原始流数据

2.sha1($string,$flag = false)

$flag = false 默认返回40位的16进至数据散列值

true  返回原始流数据

3.hash(string $algo,srting $str,bool $flag);

$algo : 算法名称,可通过hash_algos()函数获取所有hash加密的算法

如:md5,sha1等,采用md5,sha1加密所得结果和1,2两种方式结 果相同。

$flag = false 默认返回16进至的数据散列值,具体长度根据算法不同

而不同。

true  返回原始流数据。

4.crypt(string $str,$string $salt);

函数返回使用 DES、Blowfish 或 MD5 算法加密的字符串。

具体算法依赖于PHP检查之后支持的算法和$salt的格式和长度,当 然具体结果也和操作系统有关。比较结果采用 hash_equals($crypted,crypt($input,$salt));//且salt值相同

Password_verify($str,$crypted);

5.password_hash ( string $str, integer $algo [, array $options ] )

函数返回哈希加密后的密码字符串, password_hash() 是crypt()的 一个简单封装

$algo : 算法 PASSWORD_DEFAULT ,PASSWORD_BCRYPT

$options = [

“cost”=>10,//指明算法递归的层数,

“salt”=>“xxadasdsad”//加密盐值,即将被遗 弃,采用系统自动随机生成安全性更高

];

使用的算法、cost 和盐值作为哈希的一部分返回

Password_verify($str,$hashed);

6.base64_encode(string $str)

设计此种编码是为了使二进制数据可以通过非纯 8-bit 的传输层 传输,例如电子邮件的主体。base64_decode(string $encoded)

可以进行解码;

7.mcrypt_encrypt ( string $cipher , string $key , string $data ,

string $mode [, string $iv ] )

mcrypt_decrypt ( string $cipher , string $key , string $crypted ,

string $mode [, string $iv ] )

$ciper:加密算法,mcrypt_list_algorithms()可以获取该函数所有支持的算法

如MCRYPT_DES(“des”),MCRYPT_RIJNDAEL_128(“rijndael-128”);

$mode : 加密模式 ,mcrypt_list_modes()获取所有支持的加密模式,ecb,cbc

$key: 加密的秘钥,mcrypt_get_key_size ( string $cipher , string $mode )

获取指定的算法和模式所需的密钥长度。$key要满足这个长度,如果长 度无效会报出警告。

$iv : 加密的初始向量,可通过mcrypt_create_iv ( int $size [, int $source = MCRYPT_DEV_URANDOM ] ),

Iv的参数size:

通过mcrypt_get_iv_size ( string $cipher , string $mode )获取

Iv 的参数source:

初始向量数据来源。可选值有: MCRYPT_RAND (系统随机数生成 器), MCRYPT_DEV_RANDOM (从 /dev/random 文件读取数据) 和  MCRYPT_DEV_URANDOM (从 /dev/urandom 文件读取数据)。 在 Windows 平台,PHP 5.3.0 之前的版本中,仅支持 MCRYPT_RAND。

请注意,在 PHP 5.6.0 之前的版本中, 此参数的默认值 为 MCRYPT_DEV_RANDOM。

Note: 需要注意的是,如果没有更多可用的用来产生随机数据的信息, 那么 MCRYPT_DEV_RANDOM 可能进入阻塞状态。

$data : 要加密的字符串数据

阅读全文

与php解密教程相关的资料

热点内容
phpsocketepoll 浏览:725
小孩和熊的电影 浏览:241
python写网页界面的框架 浏览:6
当通过ssh远程连接弹性云服务器时 浏览:655
12306哪个app 浏览:680
免费网站电视剧电影全免费在线观看 浏览:737
如何快速清除app广告 浏览:716
单片机按键外部中断 浏览:560
单片机的usb供电 浏览:256
更改android分辨率 浏览:186
phpstaticfinal 浏览:695
成人伦理风月片电影 浏览:294
禁播爱情片 浏览:21
动漫电影免费版大全 浏览:14
java什么是this 浏览:811
拍摄指南by小说制造机txt下载 浏览:738
豆瓣pdf 浏览:723
春宫妖姬演员表 浏览:112
韩国情爱电影在线 浏览:812
程序员那么可爱顾墨吃醋 浏览:201