Файло-чистильщик
Что-то роботов в последнее время развелось... На днях несколько сайтов попортил какой-то робот-троян - видимо, утянул ftp-пароль, а потом записал в html и php файлы некий вредоносный javascript.
Написал простой и тупой чистильщик. Может кому-то пригодится что-то такое. Или на сниппеты разобрать :))
Код sitecleaner.py
Пример virinfo.txt
Написал простой и тупой чистильщик. Может кому-то пригодится что-то такое. Или на сниппеты разобрать :))
Код sitecleaner.py
#!/usr/bin/env python
from datetime import datetime
import os
import sys
import re
SCAN_EXTENSIONS = ('html', 'php', 'htm', )
SCRIPT_DIR = os.path.dirname(os.path.realpath(__file__))
LOG_FILE = SCRIPT_DIR + '/log.txt'
INFO_FILE = SCRIPT_DIR + '/virinfo.txt'
INFO_DELIMITER = '||=***=||'
def scan():
# get root dir
try:
rootdir = sys.argv[1]
except IndexError:
rootdir = os.getcwd()
logfile = SCRIPT_DIR + '/log.txt'
print '\nStart scanning:\n%s\n' % rootdir
# read pattern to clean
f = open(INFO_FILE, 'rb')
virinfo = f.read().split(INFO_DELIMITER)
f.close()
patterns = []
for p in virinfo:
patterns.append(p.strip())
print 'Patterns to remove:\n%s\n' % patterns
# walk and clean
files_list = []
print 'Files found:'
for root, sub_dirs, files in os.walk(rootdir):
for file in files:
if file.split('.')[-1].lower() in SCAN_EXTENSIONS:
filepath = os.path.join(root,file)
healed = cleanfile(filepath, patterns)
writelog(logfile, healed and 'HEALED' or 'CLEAN ', filepath)
print filepath
files_list.append(os.path.join(root,file))
def cleanfile(filepath, patterns):
f = open(filepath, 'rb')
old = f.read()
f.close()
new = old
for p in patterns:
new = new.replace(p, '')
if len(old) != len(new):
f = open(filepath, 'wb')
f.write(new)
f.close()
return True
return False
def writelog(logfile, result, filepath):
log = open(logfile, 'a')
log.write('%s %s %s\n' % (datetime.now().strftime('%Y-%m-%d %H:%M:%S'), result, filepath, ))
log.close()
if __name__ == '__main__':
scan()
Пример virinfo.txt
<!-- ad -->...<!-- /ad -->
||=***=||
<script>check_content()</script>
