![如何利用Python执行PHP代码插图 如何利用Python执行PHP代码插图](https://blog.eswlnk.com/wp-content/uploads/wpcy/3ad1fd420156cdd43f52d29fbc22a8c1.jpg)
我在审核的时候,遇到了一个密码,我看的头昏脑涨,根本看不懂密码的原理,但我必须要编写一个密码和密码的程序。
如果是这样的话,那么就必须使用 python的 ubprocess库,它能很好地调用 php代码:
![如何利用Python执行PHP代码插图1 如何利用Python执行PHP代码插图1](https://static.eswlnk.com/2023/02/20230205210011155-1024x575.png-esw)
php代码
<?php
//$argv[1] 获取参数值
$string = $argv[1];
$operation = $argv[2];
function encrypt($string,$operation,$key='xyb8888'){
$key=md5($key);
$key_length=strlen($key);
$string=$operation=='D'?base64_decode($string):substr(md5($string.$key),0,8).$string;
$string_length=strlen($string);
$rndkey=$box=array();
$result='';
for($i=0;$i<=255;$i++){
$rndkey[$i]=ord($key[$i%$key_length]);
$box[$i]=$i;
}
for($j=$i=0;$i<256;$i++){
$j=($j+$box[$i]+$rndkey[$i])%256;
$tmp=$box[$i];
$box[$i]=$box[$j];
$box[$j]=$tmp;
}
for($a=$j=$i=0;$i<$string_length;$i++){
$a=($a+1)%256;
$j=($j+$box[$a])%256;
$tmp=$box[$a];
$box[$a]=$box[$j];
$box[$j]=$tmp;
$result.=chr(ord($string[$i])^($box[($box[$a]+$box[$j])%256]));
}
if($operation=='D'){
if(substr($result,0,8)==substr(md5(substr($result,8).$key),0,8)){
return substr($result,8);
}else{
return'';
}
}else{
return str_replace('=','',base64_encode($result));
}
}
$e_keyid = encrypt($string,$operation);
$e_keyid = str_replace('/','AAABBB',$e_keyid);
echo $e_keyid;
?>
python代码
import subprocess
#执行CMD命令
def run_cmd(cmd):
p = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE)
stdout, stderr = p.communicate()
if stdout:
stdout = stdout.rstrip()
if stderr:
stderr = stderr.rstrip()
return (stdout, stderr, p.returncode)
#加密解密函数
def encrypt(string,operation):
a,b,c = run_cmd('php D:/Desktop/Python/systemlogined-function.php ' + string + " " + operation)
return (a.decode('utf-8'))
print(encrypt('160794','E'))
PHP环境必须在本地安装和环境变量,否则必须将 php绝对路径添加到run_cmd(php)
之前。
📮评论