tuxgyver 1ad1df361e feat: option clé pré-partagée et refonte des onglets du panneau admin
La présence d'une clé pré-partagée se devinait au fait que le champ soit
rempli. Un serveur qui n'en utilise pas — le cas par défaut de WireGuard —
déclenchait donc un avertissement à chaque diagnostic, et une clé oubliée dans
le champ finissait écrite dans la configuration alors que le serveur n'en
attendait aucune, ce qui casse le handshake aussi sûrement qu'une clé
manquante. Une case à cocher tranche désormais, et le diagnostic distingue les
quatre états au lieu d'un avertissement unique.

Le drapeau vaut None par défaut et non False : _merge() recopie le défaut dans
toute configuration antérieure, et False aurait désactivé la PSK d'un tunnel
qui fonctionnait.

Refonte des onglets, qui passaient de sept à cinq :

- WireGuard et Clés se chevauchaient — la clé publique du serveur se saisissait
  dans l'un pendant que l'assistant qui la produit vivait dans l'autre, et les
  quatre façons de sortir une configuration étaient réparties entre les deux.
  Fusionnés en sous-onglets Tunnel, Clés, Profils & fichiers.
- Les trois tests s'empilaient sur une page unique où le rapport de diagnostic
  se retrouvait comprimé. Chacun a son sous-onglet.
- MFA et Sécurité répondent à la même question et sont regroupés.
- La section des droits parlait de sudo et de setup-sudoers sous Windows, où
  rien de tout cela n'existe, et concluait « privilèges root » sur un rapport
  simplement vide. Elle vérifie maintenant l'élévation UAC et WireGuard.

Chaque onglet s'ouvre sur un encart expliquant ce qu'on y décide, et les
couleurs — vingt-quatre valeurs en dur, cinq bandeaux sans rapport de teinte,
des blocs de résultat au fond incohérent — passent par app/ui/theme.py.
2026-09-01 14:25:15 +02:00
2026-07-21 11:05:48 +02:00
2026-06-01 22:31:22 +02:00
2026-09-01 13:36:02 +02:00
2026-09-01 13:36:02 +02:00
2026-09-01 13:36:02 +02:00
2026-09-01 13:36:02 +02:00
2026-06-02 07:34:09 +02:00
2026-09-01 13:36:02 +02:00

🛡️ WGSecure (WGS)

🚀 v0.4.6 · 🐍 · 🪟🐧 · 🔐 MFA TOTP · 🛡️ WireGuard

WGSecure est une interface graphique multiplateforme (Windows & Linux) pour gérer une connexion WireGuard avec une surcouche MFA (authentification à deux facteurs TOTP).


Fonctionnalités

# Fonctionnalité Détail
🖥️ Interface systray Icône bouclier dans la barre de notification, connexion en un clic
👤 Mode User (défaut) Connexion / déconnexion WireGuard, statut RX/TX en temps réel
📊 Graphique bande passante Courbes RX/TX en direct sur les 30 dernières secondes
📋 Journal d'événements Horodatage de chaque connexion, déconnexion, erreur
🕘 Historique des sessions Durée, données transférées, serveur par session
⚙️ Mode Admin Configuration complète, protégé par mot de passe
🔑 Génération de clés Paire Curve25519 native (sans dépendance au binaire wg)
👤 Multi-profils Sauvegarde / bascule entre profils, import/export .conf
🛡️ Configuration WireGuard Serveur, port UDP, DNS, IP client, keepalive
🔐 MFA TOTP Compatible Bitwarden + QR Code
🔒 Kill Switch Bloque tout trafic hors tunnel via iptables (Linux)
🔍 Test DNS leak Vérifie que le DNS passe bien par le tunnel
🏓 Ping en temps réel Badge de latence dans l'interface principale
🔄 Auto-reconnexion Surveillance et reconnexion automatique si le tunnel tombe
📡 Test de connexion Vérification UDP du serveur avant établissement du tunnel
🪟🐧 Cross-platform Windows 10+ et Linux (wg-quick)

📋 Prérequis

🐧 Linux

sudo apt install wireguard-tools   # Debian/Ubuntu
sudo dnf install wireguard-tools   # Fedora

🪟 Windows

🐍 Python

Python >= 3.11

📦 Installation

git clone <repo>
cd WGSecure
pip install -r requirements.txt

🚀 Utilisation

Mode User (par défaut)

python main.py
# ou via Makefile :
make run

⚙️ Mode Administrateur (configuration)

python main.py --admin
# ou via Makefile :
make run-admin

Sans systray

python main.py --no-tray

🔧 Makefile

Commande Description
make install Installe les dépendances Python
make linux Compile un binaire Linux autonome (PyInstaller)
make windows Compile un binaire Windows via Wine
make release Binaire Linux renommé avec la version
make install-gnome Installe dans le menu GNOME (~/.local/)
make uninstall-gnome Désinstalle du menu GNOME
make reset-password Supprime le mot de passe administrateur
make run Lance l'application
make run-admin Lance en mode administrateur
make clean Supprime les artefacts de build

🗺️ Workflow recommandé

  1. 🚀 Lancer python main.py --admin
  2. 🛡️ Onglet WireGuard : renseigner l'adresse, le port et la clé publique du serveur
  3. 🔑 Onglet Clés : générer une paire de clés → copier la clé publique sur le serveur
  4. 🔐 Onglet MFA : activer le MFA, générer un secret, scanner le QR Code avec Bitwarden
  5. 🔒 Onglet Sécurité : définir un mot de passe pour l'accès admin
  6. Enregistrer → quitter → lancer python main.py en mode user

🐧 Élévation de privilèges Linux

wg-quick nécessite les droits root pour monter/démonter le tunnel.
WGSecure tente dans l'ordre :

  1. pkexec (polkit) — dialogue graphique GNOME/KDE, aucune configuration requise
  2. sudo -A avec programme askpass graphique (ssh-askpass, etc.)
  3. sudo -n — fonctionne si une règle NOPASSWD est en place

Supprimer la demande de mot de passe (optionnel)

Pour éviter toute invite à chaque connexion, créer une règle sudoers dédiée :

sudo visudo -f /etc/sudoers.d/wgsecure

Ajouter la ligne suivante (remplacer <utilisateur> par votre login) :

<utilisateur> ALL=(ALL) NOPASSWD: /usr/bin/wg-quick

⚠️ Cette règle accorde l'exécution de wg-quick sans mot de passe uniquement, et non un accès root général.

Réinitialiser le mot de passe admin oublié

make reset-password

🏗️ Architecture

WGSecure/
├── main.py                      # 🚀 Point d'entrée
├── requirements.txt
├── Makefile
├── app/
│   ├── __init__.py              # Version
│   ├── core/
│   │   ├── config.py            # 💾 Configuration JSON persistante + bcrypt
│   │   ├── wireguard.py         # 🛡️ Clés, tunnel, statut, kill switch, DNS leak
│   │   ├── history.py           # 🕘 Historique des sessions (sessions.json)
│   │   ├── log.py               # 📋 Journal d'événements (events.json)
│   │   └── mfa.py               # 🔐 TOTP / QR Code
│   ├── ui/
│   │   ├── icons.py             # 🎨 Icônes bouclier générées par QPainter
│   │   ├── main_window.py       # 👤 Fenêtre principale (mode user)
│   │   ├── admin_window.py      # ⚙️  Panneau admin (onglets, thème sombre)
│   │   ├── bw_graph.py          # 📊 Widget graphique bande passante
│   │   ├── history_dialog.py    # 🕘 Dialogue historique des sessions
│   │   ├── mfa_dialog.py        # 🔐 Dialogue de vérification MFA
│   │   └── systray.py           # 🖥️ Icône systray + menu contextuel
│   └── utils/
│       └── platform_utils.py    # 🔧 Détection OS, élévation de privilèges

🔒 Sécurité

Élément Protection
🔑 Mot de passe admin bcrypt (rounds=12) + sel intégré — migration transparente depuis SHA-256
🗝️ Clé privée WireGuard ~/.wgsecure/config.json (Linux) / %APPDATA%\WGSecure\ (Windows)
🔐 Secret MFA TOTP Stocké dans le fichier de configuration local
📄 Fichier .conf WireGuard Permissions 0600 (lecture propriétaire uniquement)
🔒 Kill Switch Chaîne iptables dédiée WGS_KILLSWITCH — isolée du pare-feu système

⚠️ Recommandation : chiffrez votre disque pour protéger le fichier de configuration.


👤 Auteur

Développé par JohnnyJT-Tools Version : v0.4.6 — Septembre 2026

S
Description
No description provided
Readme
148 MiB
2026-09-08 18:03:06 +00:00
Languages
Python 92.5%
Makefile 5.1%
Inno Setup 2.4%