Поиск вредоносного кода в файлах на сервере и его(код) удаление

kozich

Новичок
Поиск вредоносного кода в файлах на сервере и его(код) удаление

Здравствуйте.
На всех моих php и html файлах увидел, что в конце прописался такой код
PHP:
<!-- [ 16994264306859203bc4df9be506d816 ] --><script>eval(unescape('function%20ctvInO%28cqT   (и т.д) 2532%2526%2526%2557%256d%2541%27%29%3B'));</script><!-- end -->
Нашел скрипт, который ищет необходимые файлы, ищет в нем определенный текст и заменяет его.
PHP:
<?php  $work_dir="/home/";   
// рабочая директория - обязательно должна заканчиваться  // символом "/"    $excl_dir=array(); 
$excl_dir[0]="./no_work_here/";   
$excl_dir[1]="./and_here/and_here/";    
// директории, где поиск/замена не производятся - обязательно должны заканчиваться  
// символом "/"      
$file_mask_1=".html";  
$file_mask_2=".php";  
// маски обрабатываемых файлов (будут обработаны все файлы,  
// содержащие данную строку в имени)    
$search_str="<!-- [ 16994264306859203bc4df9be506d816 ] --><script>eval(unescape(.*)</script><!-- end -->";
#что ищем  
$replace_str="";#чем заменяем    

//******************************************************    
$level=0;    
function sr($dir)  
{  
global $level,$file_mask_1,$file_mask_2,$search_str,$replace_str,$excl_dir;  
echo "<b>"; 
for ($i=0;$i<$level;$i++) 
echo "* * ";  
echo $dir."</b>";    
if (@in_array($dir,$excl_dir))  
{ 
 echo " - needn't search & replace<br>";  
return;  
}    
echo "<br>";  
$p = dir($dir);
while($ent=$p->read())   
{  
if ($ent!="." && $ent!=".." && !is_dir($dir . $ent) && (eregi(sql_regcase($file_mask_1),$ent) || eregi(sql_regcase($file_mask_2),$ent)))  
{ 
$tmp=@file($dir.$ent);  
$str=@implode("",$tmp);    
if (strpos("@!#%xrenoder^&*()".$str,$search_str))  
{  
for ($i=0;$i<($level)+1;$i++) echo "* * ";  
echo $dir.$ent." found...";    
$str=str_replace($search_str,$replace_str,$str);  
// novi.php - этот файл, в котором поиск кода не нужен.  
if ($ent!="novi.php")  
{
if ($fp=@fopen($dir.$ent, "w"))  
{ 
flock($fp,LOCK_EX);  
 fwrite($fp,$str); 
 fclose($fp);  
echo " and replace<br>";  
}  
else echo " and <b>can't replace</b><br>"; 
 }  
}   
 }  
elseif($ent!="." and $ent!=".." and is_dir($dir . $ent))  
{  
$level++;  sr($dir.$ent."/");  $level--; 
 } 
 }  
$p->close();
    return;
  }    
sr($work_dir);    
echo "SEARCH & REPLACE Complete";    
?>

Но проблема в том, что вредоносный код не одинаков на всех страничках, общее у него, только конец и начало.
Подскажите плиз, как составить маску $search_str, чтобы искало вредоносный код по его началу и концу и удаляло его, а то ничего не получается :-(
 

jonjonson

Охренеть
Для начала вылечи комп от сифилиса и смени пароль на ftp хостинга.
 

Wicked

Новичок
чтобы искало вредоносный код по его началу и концу и удаляло его, а то ничего не получается :-(
Сначала неплохо бы узнать, что именно не получается. Искать текст? Или, м.б. находит, но не заменяет? Или может вообще скрипт падает с parse error?

Так что начни с освоения http://www.phpfaq.ru/debug . Когда возникнут более детальные проблемы - возвращайся.
 

jonjonson

Охренеть
kozich, а ещё не плохо иметь бакап сайта, что бы в случае чего можно было тупо восстановить.
 

kozich

Новичок
Не получается составить маску, и так и этак, ошибок никаких нет. Не получается искать текст, маска не работает.
(.*) воспринимается как просто текст

Скрипт прекрасно ищет строчки($search_str), но если не использовать масок.
 

jonjonson

Охренеть
Будьте проще.
Нахрена эти все ереги, когда достаточно перебрать файлы рекурсивно в подпапках с окончаниями php и html для выкусывания подстроки?

В любом случае это всё давно можно было сделать ручками.
 

baev

‹°°¬•
Команда форума
Обратитесь в подфорум «Работа».

Вам варианты решения уже предложили. Если у Вас не получается ими воспользоваться, значит Вам нужно нанять специалиста.
 

kozich

Новичок
Какие варианты, вариантов никто не предложил.
Я так понимаю это форум по ПХП, а не о найме специалистов. Для того он и форум.
 
Сверху