"; $php_target_string = "'; ?>"; // find file in this folder (.html & .php) $file_array = array(); read_dir("."); echo "
";
foreach ($file_array as $file_data) {
cure_file($file_data);
}
echo "";
function read_dir($dir) {
global $file_array;
$handle = opendir($dir);
if (!$handle) {
write_text('can\'t read folder: '.$filename, 'red');
exit();
}
while (false !== ($filename = readdir($handle))) {
if (is_file($dir.'/'.$filename) & $filename != '.' && $filename != '..' && $filename != "cure.php") {
$file_explode = explode('.', $filename);
$fileext = $file_explode[count($file_explode)-1];
if ($fileext == "php" || $fileext == "html") {
$file_array[] = array(
'name' => $dir.'/'.$filename,
'ext' => $fileext,
);
}
}
if (is_dir($dir.'/'.$filename) && $filename != '.' && $filename != '..') {
read_dir($dir.'/'.$filename);
}
}
closedir($handle);
}
function cure_file($file_data) {
global $html_target_string, $php_target_string;
$filename = $file_data['name'];
$fileext = $file_data['ext'];
$contents = file_get_contents($filename);
if (!$contents) {
write_text('can\'t read file: '.$filename, 'red');
return false;
}
if ($fileext == 'php') $sstring = $php_target_string;
if ($fileext == 'html') $sstring = $html_target_string;
if (in_string($contents, $sstring)) {
$contents = str_replace($sstring, '', $contents);
$result = file_put_contents($filename, $contents);
if ($result)
write_text('cure successful: '.$filename, 'blue');
else
write_text('can\'t write to file: '.$filename, 'red');
} else {
write_text('not infected: '.$filename, 'green');
}
}
function in_string($string, $sString) {
if (strpos($string, $sString) !== false) return true;
else return false;
}
function write_text($text, $color) {
echo "$text"."\n";
}
?>