Egy teljes értékű, ipari szintű vírusírtó motor fejlesztése összetett, alacsony szintű programozást (C/C++) és folyamatosan frissülő vírusadatbázist igényel. Grafikus felülettel (GUI) rendelkezik Python programozási nyelven írtam, amely képes kiválasztott mappákat átvizsgálni, és az ismert kártevőket azok fájl-aláírása (hash) alapján kiszűrni.
---------------
import tkinter as tk
from tkinter import filedialog, messagebox
import hashlib
import os
# Oktató jellegű vírusadatbázis (Fájl SHA-256 lenyomatok)
# Valódi vírusírtók sok millió aláírást tartalmaznak
VIIRUS_ADATBAZIS = {
"d16c5232d67a99bb108253a6ec0407137f8f8b85b28de5d2753a479d479133a8": "EICAR-Test-File (Veszélytelen tesztvírus)",
# Ide szúrhatsz be további ismert kártevő hash-eket
}
class VirusIrtoApp:
def __init__(self, root):
self.root = root
self.root.title("Python Antivirus - Alap verzió")
self.root.geometry("500x400")
self.root.config(bg="#f0f0f0")
# Cím
self.label = tk.Label(root, text="Grafikus Víruskereső", font=("Arial", 16), bg="#f0f0f0")
self.label.pack(pady=15)
# Gomb: Mappa kiválasztása
self.btn_browse = tk.Button(root, text="Mappa kiválasztása", font=("Arial", 12), command=self.kivalaszt_mappa, bg="#4CAF50", fg="white", padx=10, pady=5)
self.btn_browse.pack(pady=10)
# Kijelölt mappa megjelenítése
self.path_label = tk.Label(root, text="Nincs mappa kiválasztva", font=("Arial", 10), bg="#f0f0f0", wraplength=400)
self.path_label.pack(pady=5)
# Gomb: Vizsgálat indítása
self.btn_scan = tk.Button(root, text="Vizsgálat indítása", font=("Arial", 12), command=self.indit_vizsgalat, bg="#2196F3", fg="white", padx=10, pady=5, state=tk.DISABLED)
self.btn_scan.pack(pady=20)
# Eredmény kijelző doboz
self.log_text = tk.Text(root, height=10, width=55, state=tk.DISABLED, font=("Consolas", 9))
self.log_text.pack(pady=10)
self.kivalasztott_konyvtar = ""
def kivalaszt_mappa(self):
self.kivalasztott_konyvtar = filedialog.askdirectory()
if self.kivalasztott_konyvtar:
self.path_label.config(text=f"Kiválasztva: {self.kivalasztott_konyvtar}")
self.btn_scan.config(state=tk.NORMAL)
def log(self, uzenet):
self.log_text.config(state=tk.NORMAL)
self.log_text.insert(tk.END, uzenet + "\n")
self.log_text.see(tk.END)
self.log_text.config(state=tk.DISABLED)
def fajl_hash_szamitas(self, fajl_utvonal):
haszno = hashlib.sha256()
try:
with open(fajl_utvonal, "rb") as f:
while darab := f.read(8192):
haszno.update(darab)
return haszno.hexdigest()
except Exception:
return None
def indit_vizsgalat(self):
if not self.kivalasztott_konyvtar:
return
self.log_text.config(state=tk.NORMAL)
self.log_text.delete(1.0, tk.END)
self.log_text.config(state=tk.DISABLED)
self.log("Vizsgálat megkezdve: " + self.kivalasztott_konyvtar)
self.root.update()
talalat_szam = 0
# Mappa bejárása
for root, dirs, files in os.walk(self.kivalasztott_konyvtar):
for file in files:
fajl_utvonal = os.path.join(root, file)
self.log(f"Ellenőrzés: {file}")
self.root.update()
fajl_hash = self.fajl_hash_szamitas(fajl_utvonal)
if fajl_hash and fajl_hash in VIIRUS_ADATBAZIS:
talalat_szam += 1
self.log(f"[!] FENYEGETÉS TALÁLVA: {talalat_szam}")
self.log(f" Fájl: {fajl_utvonal}")
self.log(f" Vírus: {VIIRUS_ADATBAZIS[fajl_hash]}")
self.log("---- Vizsgálat véget ért ----")
messagebox.showinfo("Kész", f"A vizsgálat befejeződött. Talált fenyegetések száma: {talalat_szam}")
if __name__ == "__main__":
root = tk.Tk()
app = VirusIrtoApp(root)
root.mainloop()
----------------
Nincsenek megjegyzések:
Megjegyzés küldése