[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Прошу помощи с небольшим скриптом
mamon
Не пинайте меня, скажу сразу даже до уровня любителя не дотягиваю, но мне срочно нужна помощь. Уменя есть несколько сайтов на Joomla и Wordpress, которые взломали (увели фтп пароли), после взлома во всех файлах на сайте (index.php, index.html, default.php и т.д.) была прописана строка со ссылкой, я нашел на форуме по джумле скрипт который может удалять вредоносный код, но он это делает некоректно. Если вредоносный код прописался на новой строке то все удалиться нормально, а вот если прописался в строке где уже есть какой то код, то удаляется и вражеский код и родной, тоесть очищается строка полностью. После такой чистки сайт работает криво. И файлы с расширением штмл вообще не чистится, скрипт как будто пропускает их.
Вот сам скрипт:
<?php
//Virus removal script by OSA
//v1.1 31.10.2010


$virus_text = '<iframe width="0" height="0" frameborder="0" scrolling="no" src="http://click-clickc.com/index12"></iframe>';
$skip_files = array ('delvirus.php');
$del = false;
$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;

$file=file($filename);
foreach($file as $k=>$v)
if (!stristr($v,$GLOBALS['virus_text']))
$nfile[]=$v;
else
{
if (!$flag) {
$flag=true;
if (in_array($ffile, $GLOBALS['skip_files']))
echo " - skipped";
else
{
echo " - infected";
$GLOBALS['num_infected']++;
}
}
}

if ( $GLOBALS['del'] ) {
$file=fopen($filename,"w");
fwrite($file,implode($nfile,""));
fclose($file);
}
echo "<br/>";
};

dir_walk('del_virus', $dir, array('php','php5','html','htm','shtml'), true, $dir );

echo "Num infected = $num_infected <br/>";
?>

после отработки скрипт выдает вместе со статиской вот такие ошибки:
Warning: implode() [function.implode]: Invalid arguments passed in /home/u62325/мой домен/www/indexx.php on line 57
Помогите пожайлуста отладить скрипт, на форуме джумла помалкивают.
Вот ссылка на страницу обсуждения скрипта: _http://joomlaforum.ru/index.php/topic,132330.0.html



Спустя 1 час, 1 минута, 35 секунд (25.03.2011 - 18:23) Белый Тигр написал(а):
Чтоб не ждать долго проще потереть всё руками. Скачиваем всё себе на винт, проходимся поиском с параметром "Искать файлы с текстом" (ищем вхождения вредоносного кода) и трём. Так будет просто быстрее.
А вообще:
http://phpforum.ru/index.php?showtopic=17363
http://phpforum.ru/index.php?showtopic=28790

Спустя 1 час, 5 минут, 48 секунд (25.03.2011 - 19:29) mamon написал(а):
Спасибо наверное так и прийдется сделать если ни кто не поможет.

Спустя 21 час, 59 минут, 28 секунд (26.03.2011 - 17:28) Белый Тигр написал(а):
А врятли помогут. Здесь нужно покопаться хорошо в коде. Проблема ведь не только с Warning`ом функции implode, проблема ещё и в неверном удалении вируса если он размещён посередине кода.

Спустя 30 минут, 41 секунда (26.03.2011 - 17:59) inpost написал(а):
mamon
я не вижу explode
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.