You shall not pass. Ага. - Репутация: 1513
- Webmoney BL: ?
| так, ребята. Проблема решена.
код PHP код: <?php
//gendalf_grey for webmasters.ru
$virus_text = 'в эти кавычки пишем вредоносный код';
$skip_files = array ('delvir.php');
$del = true;
$dir = getcwd().'/';
$num_infected = 0;
function dir_walk($callback, $dir, $types = null, $recursive = false, $baseDir = '') {
if ($dh = opendir($dir)) {
while (($file = readdir($dh))!== false) {
if ($file === '.' || $file === '..') {
continue;
}
if (is_file($dir . $file)) {
if (is_array($types)) {
if (!in_array(strtolower(pathinfo($dir . $file, PATHINFO_EXTENSION)), $types, true)) {
continue;
}
}
$callback($baseDir, $file);
}elseif($recursive && is_dir($dir . $file)) {
dir_walk($callback, $dir . $file . DIRECTORY_SEPARATOR, $types, $recursive, $baseDir . $file . DIRECTORY_SEPARATOR);
}
}
closedir($dh);
}
}
function del_virus ($fdir, $ffile)
{
$flag = false;
$filename = $fdir.$ffile;
echo $filename;
if (!in_array($ffile, $GLOBALS['skip_files'])){
$handle = fopen($filename, "r");
$fsize = filesize($filename);
if (!$fsize){
$contents = '';
}else{
$contents = fread($handle, $fsize);
}
fclose($handle);
if (strpos($contents, $GLOBALS['virus_text']) !== false) {
if ( $GLOBALS['del'] ) {
$contents = str_replace($GLOBALS['virus_text'], '', $contents);
$handle = fopen($filename, "wb");
fwrite($handle,$contents);
fclose($handle);
echo " - deleted";
}
echo " - infected";
$GLOBALS['num_infected']++;
}
}else{
echo " - skipped";
}
echo "<br/>";
};
dir_walk('del_virus', $dir, array('php','php5','html','htm','shtml'), true, $dir );
echo "Num infected = $num_infected <br/>";
?>
[свернуть] Всё это чудо сохраняем в файлик delvir.php и льём в корень сайта. Затем в браузере набираем [site.ru]/delvir.php После выполнения будет подробненький отчёт, а в самом низу - результаты. Суть работы скрипта: парсит все файлы на сервере на наличие определённого кода, и при условии совпадения - заменяет его пустой строкой. Тестировалось более чем на 15ти сайтах - работа идеальна. up. Ребята-модераторы, у вас дырка в сообщениях. Подробности в аську. Буду часов с 10 по МСК. Последний раз редактировалось Гендальф Серый; 25.02.2013 в 03:10. |
|