commit ab5ba103fe0696ba58d62d646efc174ffff5f46e Author: Johnny Date: Mon Jun 1 22:30:40 2026 +0200 first commit diff --git a/README.md b/README.md new file mode 100644 index 0000000..8a99c46 --- /dev/null +++ b/README.md @@ -0,0 +1,118 @@ +# 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