1f555eafc7c9f8944e2dcd209267f8753d152d82
Le diagnostic s'arrêtait sur « le port UDP ne rejette rien ». C'est le maximum qu'une sonde aveugle puisse dire : un serveur WireGuard ignore silencieusement tout paquet non authentifié, si bien qu'un port non redirigé, une clé inconnue du serveur et un serveur en parfaite santé produisent exactement la même absence de réponse. Le tunnel n'étant pas monté, les étapes suivantes étaient sautées et le rapport concluait « chaîne validée » sur une configuration qui n'avait aucune chance de négocier. WGSecure construit désormais un vrai message d'initiation (Noise_IKpsk2_25519_ ChaChaPoly_BLAKE2s) et interprète la réponse. Le serveur ne répond que si notre clé publique statique lui est connue et si sa propre clé est celle que nous croyons : une réponse prouve la configuration, et son déchiffrement dit quelle clé pré-partagée est en jeu. Aucun tunnel n'est monté, aucun privilège demandé, aucun état conservé. Quand le serveur reste muet, une seconde tentative part depuis le port du serveur. S'il répond alors, c'est qu'un équipement en chemin n'accepte le trafic que si le port source égale le port de destination — une règle courante sur FortiGate, dont l'objet Service porte un udp-portrange 51820:51820. Un client WireGuard émettant depuis un port aléatoire ne peut jamais la satisfaire, et rien nulle part ne le disait. Corrige aussi le verdict rendu quand le tunnel est inactif : « chaîne validée » laissait croire que tout avait été vérifié, alors que les étapes sautées sont précisément celles qui échouent. Le rapport les nomme désormais. La fenêtre d'administration revient à 720x600 et les encarts posés au-dessus des sous-onglets disparaissent, où ils répétaient ce que les sous-onglets annoncent déjà.
🛡️ WGSecure (WGS)
🚀 v0.5.0 · 🐍 · 🪟🐧 · 🔐 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
- WireGuard for Windows installé
🐍 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é
- 🚀 Lancer
python main.py --admin - 🛡️ Onglet WireGuard : renseigner l'adresse, le port et la clé publique du serveur
- 🔑 Onglet Clés : générer une paire de clés → copier la clé publique sur le serveur
- 🔐 Onglet MFA : activer le MFA, générer un secret, scanner le QR Code avec Bitwarden
- 🔒 Onglet Sécurité : définir un mot de passe pour l'accès admin
- ✅ Enregistrer → quitter → lancer
python main.pyen 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 :
- pkexec (polkit) — dialogue graphique GNOME/KDE, aucune configuration requise
- sudo -A avec programme askpass graphique (
ssh-askpass, etc.) - 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-quicksans 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 Johnny — JT-Tools
Version : — Septembre 2026
Releases
1
WGSecure 0.13.0
Latest
Languages
Python
92.5%
Makefile
5.1%
Inno Setup
2.4%