Actualiser 7lna.py

This commit is contained in:
2026-03-05 10:28:08 +00:00
parent 081b855408
commit 9d12d8b259

19
7lna.py
View File

@@ -208,21 +208,17 @@ class Antivirus7LnA(ctk.CTk):
self.setup_console_tags(self.scan_console) self.setup_console_tags(self.scan_console)
self.scan_console.insert("end", f"{self.get_time_prefix()}[*] Moteur de détection V8 prêt...\n", "info") self.scan_console.insert("end", f"{self.get_time_prefix()}[*] Moteur de détection V8 prêt...\n", "info")
# ----- CORRECTION DU ROOTKIT (Mot de passe intégré) ----- # ----- CORRECTION DU ROOTKIT (Compatible X11 & Wayland) -----
def run_rootkit_scan(self): def run_rootkit_scan(self):
# Création d'une fenêtre pop-up pour demander le mot de passe sans dépendre du système
dialog = ctk.CTkToplevel(self) dialog = ctk.CTkToplevel(self)
dialog.title("Sécurité Administrateur") dialog.title("Sécurité Administrateur")
dialog.geometry("400x220") dialog.geometry("400x230")
dialog.attributes("-topmost", True)
dialog.grab_set() # Empêche de cliquer ailleurs
ctk.CTkLabel(dialog, text="⚠️ Privilèges Requis", font=ctk.CTkFont(size=20, weight="bold"), text_color="#F59E0B").pack(pady=(20, 5)) ctk.CTkLabel(dialog, text="⚠️ Privilèges Requis", font=ctk.CTkFont(size=20, weight="bold"), text_color="#F59E0B").pack(pady=(20, 5))
ctk.CTkLabel(dialog, text="L'analyse anti-rootkit nécessite les droits sudo.\nEntrez votre mot de passe session :", justify="center").pack(pady=5) ctk.CTkLabel(dialog, text="L'analyse anti-rootkit nécessite les droits sudo.\nEntrez votre mot de passe session :", justify="center").pack(pady=5)
pwd_entry = ctk.CTkEntry(dialog, show="*", width=250) pwd_entry = ctk.CTkEntry(dialog, show="*", width=250)
pwd_entry.pack(pady=10) pwd_entry.pack(pady=10)
pwd_entry.focus()
def on_submit(event=None): def on_submit(event=None):
pwd = pwd_entry.get() pwd = pwd_entry.get()
@@ -233,15 +229,19 @@ class Antivirus7LnA(ctk.CTk):
ctk.CTkButton(dialog, text="Lancer l'analyse", command=on_submit, fg_color="#DC2626", hover_color="#991B1B").pack(pady=10) ctk.CTkButton(dialog, text="Lancer l'analyse", command=on_submit, fg_color="#DC2626", hover_color="#991B1B").pack(pady=10)
dialog.bind("<Return>", on_submit) dialog.bind("<Return>", on_submit)
# Attendre que la fenêtre soit dessinée à l'écran (Universel pour Linux)
dialog.wait_visibility()
dialog.attributes("-topmost", True)
dialog.grab_set()
pwd_entry.focus_set()
def _exec_rootkit(self, pwd): def _exec_rootkit(self, pwd):
self.scan_console.insert("end", f"\n{self.get_time_prefix()}[*] Lancement de rkhunter (cela peut prendre du temps)...\n", "info") self.scan_console.insert("end", f"\n{self.get_time_prefix()}[*] Lancement de rkhunter (cela peut prendre du temps)...\n", "info")
self.scan_progress.start() self.scan_progress.start()
try: try:
# -S permet de passer le mot de passe via l'entrée standard
cmd = ['sudo', '-S', 'rkhunter', '-c', '--sk', '--report-warnings-only'] cmd = ['sudo', '-S', 'rkhunter', '-c', '--sk', '--report-warnings-only']
process = subprocess.Popen(cmd, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, text=True, bufsize=1) process = subprocess.Popen(cmd, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, text=True, bufsize=1)
# Envoi du mot de passe
process.stdin.write(pwd + '\n') process.stdin.write(pwd + '\n')
process.stdin.flush() process.stdin.flush()
@@ -421,7 +421,7 @@ class Antivirus7LnA(ctk.CTk):
messagebox.showinfo("Succès", "Fichier détruit.") messagebox.showinfo("Succès", "Fichier détruit.")
except: pass except: pass
# ----- CORRECTION PLANIFICATION (Sélecteurs d'Heure) ----- # ----- PLANIFICATION -----
def init_schedule_view(self): def init_schedule_view(self):
frame = ctk.CTkFrame(self, fg_color="transparent") frame = ctk.CTkFrame(self, fg_color="transparent")
self.views["schedule"] = frame self.views["schedule"] = frame
@@ -440,7 +440,6 @@ class Antivirus7LnA(ctk.CTk):
self.cron_h_var = ctk.StringVar(value="12") self.cron_h_var = ctk.StringVar(value="12")
self.cron_m_var = ctk.StringVar(value="00") self.cron_m_var = ctk.StringVar(value="00")
# Menus déroulants élégants pour le choix de l'heure
ctk.CTkComboBox(time_frame, values=[f"{i:02d}" for i in range(24)], variable=self.cron_h_var, width=70).pack(side="left", padx=5) ctk.CTkComboBox(time_frame, values=[f"{i:02d}" for i in range(24)], variable=self.cron_h_var, width=70).pack(side="left", padx=5)
ctk.CTkLabel(time_frame, text="h").pack(side="left") ctk.CTkLabel(time_frame, text="h").pack(side="left")
ctk.CTkComboBox(time_frame, values=["00", "15", "30", "45"], variable=self.cron_m_var, width=70).pack(side="left", padx=5) ctk.CTkComboBox(time_frame, values=["00", "15", "30", "45"], variable=self.cron_m_var, width=70).pack(side="left", padx=5)