我正在尝试修改 bash 脚本以从大量文件中删除恶意代码。
社区将从中受益,所以这里是:
#!/bin/bash
grep -r -l 'var createDocumentFragm' /home/user/Desktop/infected_site/* > /home/user/Desktop/filelist.txt
for i in $(cat /home/user/Desktop/filelist.txt)
do
cp -f $i $i.bak
done
for i in $(cat /home/user/Desktop/filelist.txt)
do
$i | sed 's/createDocumentFragm.*//g' > $i.awk
awk '/<\/SCRIPT>/{p=1;print}/<\/script>/{p=0}!p'
这是脚本与此消息一起爆炸的地方:
+ for i in '$(cat /home/user/Desktop/filelist.txt)'
+ sed 's/createDocumentFragm.*//g'
+ /home/user/Desktop/infected_site/index.htm
我收到 2 个错误,脚本停止。
/home/user/Desktop/infected_site/index.htm: line 1: syntax error near unexpected token `<'
/home/user/Desktop/infected_site/index.htm: line 1: `<html><head><script>(function (){ '
我已经完成了前两个部分。
包含 createDocumentfragm 的文件已在文本文件中正确枚举。
textfile.txt 中的文件已被复制,在它们的原始位置添加了一个 .bak IE:infected_site/some_directory/infected_file.htm 和infected_file.htm.bak 有效地确保我们有备份。
我现在需要做的就是编写一个 AWK 命令,该命令将使用 filelist.txt 中的文件列表,使用整个恶意文本作为模式,然后将其从文件中删除。仅使用大写脚本作为起点,小写脚本过于通用,可能会删除合法文本
我怀疑这可能对我有帮助,但我不知道如何正确使用它。
http://backreference.org/2010/03/13/safely-escape-variables-in-awk/
一旦我弄清楚了这部分,并且在您确认文件没有被损坏后,您可以执行此操作来清除 bak 文件:
for i in $(cat /home/user/Desktop/filelist.txt)
do
rm -f $i.bak
done