<?php
// какую строку искать
$virus_text = 'WPTemplatesOptions';
// название файла, это название файла скрипта, чтобы он сам себя не удалил
$skip_files = array ('delvir.php');
// если false то скрипт просто ищит
// но не удаляет $virus_text из файла,
// если true соответственно удаляет и перезаписывает файл
$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 " - <span style='color:red'>infected</span>";
$GLOBALS['num_infected']++;
}
}else{
echo " - skipped";
}
echo "<br/>";
}
dir_walk('del_virus', $dir, array('php'), true, $dir );
echo "Num infected = $num_infected <br/>";
?>