# WGSecure (WGS) **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 dans la barre de notification, connexion en un clic | | **Mode User** (défaut) | Connexion / déconnexion WireGuard, statut en temps réel | | **Mode Admin** | Configuration complète (mot de passe protégé) | | **Génération de clés** | Paire clé privée / publique Curve25519 (format WireGuard) | | **Configuration WireGuard** | Serveur, port UDP, DNS, IP client, keepalive | | **MFA TOTP** | Surcouche d'authentification compatible Google Authenticator / Aegis | | **Test de connexion** | Vérification UDP du serveur avant connexion | | **Cross-platform** | Windows 10+ et Linux (wg-quick) | --- ## Prérequis ### Linux ```bash sudo apt install wireguard-tools # Debian/Ubuntu sudo dnf install wireguard-tools # Fedora ``` ### Windows - [WireGuard for Windows](https://www.wireguard.com/install/) installé ### Python ``` Python >= 3.11 ``` --- ## Installation ```bash git clone cd WGSecure pip install -r requirements.txt ``` --- ## Utilisation ### Mode User (par défaut) ```bash python main.py ``` ### Mode Administrateur (configuration) ```bash python main.py --admin ``` ### Sans systray ```bash python main.py --no-tray ``` --- ## Workflow recommandé 1. Lancer `python main.py --admin` 2. Onglet **WireGuard** : renseigner l'adresse et le port du serveur, la clé publique du serveur 3. Onglet **Clés** : générer une paire de clés client → copier la clé publique sur le serveur 4. Onglet **MFA** : activer le MFA, générer un secret, scanner le QR Code avec Aegis/Google Authenticator 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 --- ## Architecture ``` WGSecure/ ├── main.py # Point d'entrée ├── requirements.txt ├── app/ │ ├── __init__.py # Version │ ├── core/ │ │ ├── config.py # Configuration JSON persistante │ │ ├── wireguard.py # Clés, tunnel, statut │ │ └── mfa.py # TOTP / QR Code │ ├── ui/ │ │ ├── icons.py # Icônes générées par QPainter │ │ ├── main_window.py # Fenêtre principale (mode user) │ │ ├── admin_window.py # Panneau admin (5 onglets) │ │ ├── mfa_dialog.py # Dialog 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é - Le mot de passe administrateur est stocké sous forme de hash SHA-256 salé (salt aléatoire 16 octets) - La clé privée WireGuard est stockée localement dans `~/.wgsecure/config.json` (Linux) ou `%APPDATA%\WGSecure\config.json` (Windows) - Le secret MFA TOTP est stocké dans le même fichier de configuration - Le fichier de config WireGuard généré est protégé avec les permissions `0600` > **Recommandation** : chiffrez votre disque pour protéger le fichier de configuration. --- ## Auteur Développé par **Johnny** — JT-Tools Version : **0.1.0** — Juin 2026