From 9d12d8b259b6cb8c2d74037c314e1be550c16059 Mon Sep 17 00:00:00 2001 From: 7ka1 <7ka1@noreply.localhost> Date: Thu, 5 Mar 2026 10:28:08 +0000 Subject: [PATCH] Actualiser 7lna.py --- 7lna.py | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/7lna.py b/7lna.py index 1b4a2de..10a4733 100644 --- a/7lna.py +++ b/7lna.py @@ -208,21 +208,17 @@ class Antivirus7LnA(ctk.CTk): 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") - # ----- CORRECTION DU ROOTKIT (Mot de passe intégré) ----- + # ----- CORRECTION DU ROOTKIT (Compatible X11 & Wayland) ----- 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.title("Sécurité Administrateur") - dialog.geometry("400x220") - dialog.attributes("-topmost", True) - dialog.grab_set() # Empêche de cliquer ailleurs + dialog.geometry("400x230") 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) pwd_entry = ctk.CTkEntry(dialog, show="*", width=250) pwd_entry.pack(pady=10) - pwd_entry.focus() def on_submit(event=None): 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) dialog.bind("", 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): 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() try: - # -S permet de passer le mot de passe via l'entrée standard 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) - # Envoi du mot de passe process.stdin.write(pwd + '\n') process.stdin.flush() @@ -421,7 +421,7 @@ class Antivirus7LnA(ctk.CTk): messagebox.showinfo("Succès", "Fichier détruit.") except: pass - # ----- CORRECTION PLANIFICATION (Sélecteurs d'Heure) ----- + # ----- PLANIFICATION ----- def init_schedule_view(self): frame = ctk.CTkFrame(self, fg_color="transparent") self.views["schedule"] = frame @@ -440,7 +440,6 @@ class Antivirus7LnA(ctk.CTk): self.cron_h_var = ctk.StringVar(value="12") 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.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)