79 lines
2.3 KiB
Python
79 lines
2.3 KiB
Python
import os, time, hashlib
|
|
import psutil, win32con, win32api
|
|
|
|
SHA256 = "78fecce2c842ed6c5f497714f7a9833aa247c48fbcd4bbfa7250c34ea56aa3dd"
|
|
|
|
def search_files(path, tagfile):
|
|
number = 0
|
|
fulldir_result = []
|
|
for ipath in os.listdir(path):
|
|
fulldir = os.path.join(path,ipath)
|
|
if os.path.isfile(fulldir):
|
|
if tagfile in os.path.split(fulldir)[1]:
|
|
fulldir_result.append(fulldir)
|
|
number = number + 1
|
|
return fulldir_result
|
|
def sha256(filname):
|
|
with open(filname, "rb") as f:
|
|
sha256obj = hashlib.sha256()
|
|
sha256obj.update(f.read())
|
|
hash_value = sha256obj.hexdigest()
|
|
return hash_value
|
|
|
|
disks_list = psutil.disk_partitions()
|
|
print(disks_list)
|
|
checked = []
|
|
|
|
while True:
|
|
for pid in psutil.pids():
|
|
try:
|
|
p = psutil.Process(pid)
|
|
try:
|
|
if sha256(p.exe()) == SHA256:
|
|
p.kill()
|
|
print("kill")
|
|
os.remove(p.exe())
|
|
print("delete")
|
|
except:...
|
|
except:...
|
|
|
|
disk_list = psutil.disk_partitions()
|
|
for i in range(0,len(disks_list)):
|
|
try:
|
|
disk_list.remove(disks_list[i])
|
|
except:
|
|
pass
|
|
print(disk_list)
|
|
for i in range(0,len(disk_list)):
|
|
if disk_list[i].device in checked:
|
|
pass
|
|
else:
|
|
exe_list = search_files(disk_list[i].device, '.exe')
|
|
print(exe_list)
|
|
for i in range(0, len(exe_list)):
|
|
sha = sha256(exe_list[i])
|
|
print(sha)
|
|
if sha256(exe_list[i]) == SHA256:
|
|
print("found virus in disk")
|
|
try:
|
|
os.remove(exe_list[i])
|
|
print("delete")
|
|
except:
|
|
print("delete failed!")
|
|
try:
|
|
win32api.SetFileAttributes(exe_list[i].replace(".exe",""), win32con.FILE_ATTRIBUTE_NORMAL)
|
|
print("set dirs")
|
|
except:...
|
|
checked.append(disk_list[i].device)
|
|
|
|
for i in range(0, len(checked)):
|
|
try:
|
|
if checked[i] in str(psutil.disk_partitions()):
|
|
pass
|
|
else:
|
|
checked.remove(checked[i])
|
|
except:
|
|
checked = []
|
|
|
|
time.sleep(1)
|