2

マルウェアの js コードを見つけて削除するための最初のサーバー スクリプトを作成していますが、既存のファイルを最後ではなく最初から書き換える簡単な方法が見つかりません。

# -*- coding: utf-8 -*-

import os
import re
import codecs

for dirname, dirnames, filenames in os.walk('.'):
    for filename in filenames:
        f = open(os.path.join(dirname, filename), 'r+b')
        text=f.read()
        if re.search('function g\(\).*\n.*\<script src=\"http://linkfooter.org/linkfooter.js\"></script>\'\);}', text) and os.path.join(filename) != "bezr.py":
            print "starting with " + os.path.join(filename)
            match = re.compile('function g\(\).*\n.*\<script src=\"http://linkfooter.org/linkfooter.js\"></script>\'\);}')
            s = match.sub('', text)
            f.write(s)
        f.close()
        #else:
            #print "in " + os.path.join(dirname, filename) + " none"    
            #f.close()
4

2 に答える 2

5

f.seek(0)あなたが書く前に。f.truncate()その後、余分なテキストを切り取ります。

于 2012-12-19T20:35:03.580 に答える
1
filepath = os.path.join(dirname, filename)
text = file.read(filepath)
if re.search('function g\(\).*\n.*\<script src=\"http://linkfooter.org/linkfooter.js\"></script>\'\);}', line) and os.path.join(filename) != "bezr.py":
    with open(filepath, 'w') as f:
            print "starting with " + os.path.join(filename)
            match = re.compile('function g\(\).*\n.*\<script src=\"http://linkfooter.org/linkfooter.js\"></script>\'\);}')
            s = match.sub('', text)
            f.write(s)
于 2012-12-19T20:44:37.717 に答える