[PHP] 纯文本查看 复制代码
<?php
//此程序不支持 PHP7
error_reporting(0);
session_start();
ini_set("display_errors", 0);
////////////////////////////////////////////////////
$dbhost = 'localhost'; //服务器
$dbuser = 'a141315166'; //数据库用户名
$dbpass = 'rwSrBe2rTk8JrRsA'; //数据库密码
$msgkey = '12345'; //通信密钥,必须和模块里面的解密数据使用的密钥一样
////////////////////////////////////////////////////
if(substr($_POST['DATA'],0,7)=='GETRAND'){//获取验证码
$_SESSION[rand_temp]=get_rand();
exit(strtoupper(strToHex(rc4($_SESSION[rand_temp],$msgkey))));
}
$temp = str_decode($_POST['DATA'],$msgkey,$_SESSION[rand_temp]);//解密数据
$temp = explode('|+|',$temp);//拆开原始数据
if(count($temp)<4){
exit('Error');
}
//////////////////PHP7支持mysql_ 要用mysqli////////////////////
$con = mysql_connect($dbhost, $dbuser, $dbpass);
if (!$con){
//echo str_encode(mysql_error(),$msgkey,$rand);
echo str_encode("-2",$msgkey,$rand); //"-1" ; 连接数据库失败 返回-2
exit;
}
mysql_select_db($temp[2],$con);
mysql_query("set names gbk");//这里自己设置数据库的编码 UTF-8,GB2312,gbk 设置gbk可以解决大部分中文编码问题
//////////////////PHP7支持mysql_ 要用mysqli////////////////////
$rand = $temp[0]*1020/2;//处理客户端效验码
if($temp[1]=='SQLU'){//返回执行sql语句结果 如果sql语法有问题 执行错误 返回-1
if($temp[2]!=''){
mysql_select_db($temp[2],$con);
}
$result = mysql_query($temp[3]) or die('-1 ');
while($row = mysql_fetch_row($result))
{
foreach ($row as $a){
$txt .= $a.'|';
}
$txt .= '<br>';
}
echo str_encode($txt,$msgkey,$rand);
sql_close();
exit;
}
if($temp[1]=='EVAL'){//执行代码
eval($temp[2]);
}
function rc4($data,$pwd)
{
$key[] ="";
$box[] ="";
$pwd_length = strlen($pwd);
$data_length = strlen($data);
for ($i = 0; $i < 256; $i++)
{
//$key[$i] = ord($pwd[$i % $pwd_length]); 不支持PHP7
$key[$i] = @ord ($pwd[($pwd_length==0?0:($i % $pwd_length))]);
$box[$i] = $i;
}
for ($j = $i = 0; $i < 256; $i++)
{
$j = ($j + $box[$i] + $key[$i]) % 256;
$tmp = $box[$i];
$box[$i] = $box[$j];
$box[$j] = $tmp;
}
for ($a = $j = $i = 0; $i < $data_length; $i++)
{
$a = ($a + 1) % 256;
$j = ($j + $box[$a]) % 256;
$tmp = $box[$a];
$box[$a] = $box[$j];
$box[$j] = $tmp;
$k = $box[(($box[$a] + $box[$j]) % 256)];
$cipher .= chr(ord($data[$i]) ^ $k);
}
return $cipher;
}
function HexTostr($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;
}
function strToHex($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;
}
function str_decode($str,$key,$key_rand){//解密函数
//return (string)rc4(HexTostr((string)rc4(HexTostr($str),(string)$key_rand)),$key); //两次解密 先固定后动态
return (string)rc4(HexTostr($str),(string)$key);//只一次固定密码解密
}
function str_encode($str,$key,$key_rand){//加密函数
//$key_temp = strToHex(rc4($str,(string)$key_rand));/这里是第一次动态密码加密
//$key_temp = strtoupper(strToHex(rc4($key_temp,$key))); //这里是第二次固定密码加密
$key_temp = strtoupper(strToHex(rc4($str,$key))); //只一次固定密码加密 上面两行是进行2次加密解决 需要易语言代码处获取服务器动态秘钥
return $key_temp;
}
function sql_close(){
mysql_close();
$_SESSION[rand_temp]=get_rand();
return true;
}
function get_rand(){
for($i=0; $i<6; $i++){
$rands.= dechex(rand(0,9));
}
return $rands;
}
?>