我的一个网站受到了一些恶意代码的感染。该代码只添加到所有PHP文件的第一行,如下所示:删除sed中的长字符串
<?php $ulhmjwklj = '#-#O#-#N# .......xqxe-1; ?> /*BEGIN LEGIT CODE HERE*/ <?php....
恶意代码是成千上万个字符长,有很多的特殊字符和空格,所以我试图创建一个脚本来删除它:而在第一线留下合法的代码
for i in $(find . -name \*.php); do
sed -i -E "s/<\?php\s$ulhmjwklj.*\?>//" $i;
echo $i;
done;
这sed
命令将正确地删除恶意代码,但随后在随后的所有线路将其删除所有<?php ... ?>
标签。所以,我想改变sed
命令只查找/替换在第一行:
for i in $(find . -name \*.php); do
sed -i -E "1s/<\?php\s$ulhmjwklj.*\?>//" $i;
done;
现在sed
命令只能在每个文件的第一行上运行,但同时也除去了附加任何合法的PHP代码到恶意代码后直接到第一行。
有人可以请解释我哪里错了吗?
固定在所有文件中的恶意代码的长度是多少?或者它是不同的文件? – anacron
另外,你总共有多少个PHP文件?他们都受到影响? – anacron
'。*'是贪婪的... – jm666