This commit is contained in:
2026-06-01 22:35:37 +02:00
parent 0d2646a9ad
commit f061da654d
+66 -46
View File
@@ -1,43 +1,51 @@
# WGSecure (WGS) # 🛡️ WGSecure (WGS)
![Version](https://img.shields.io/badge/version-0.1.0-blue?style=flat-square)
![Python](https://img.shields.io/badge/Python-3.11+-3776ab?style=flat-square&logo=python&logoColor=white)
![PyQt6](https://img.shields.io/badge/PyQt6-6.4+-41cd52?style=flat-square&logo=qt&logoColor=white)
![Linux](https://img.shields.io/badge/Linux-compatible-fcc624?style=flat-square&logo=linux&logoColor=black)
![Windows](https://img.shields.io/badge/Windows-10%2B-0078d4?style=flat-square&logo=windows&logoColor=white)
![MFA](https://img.shields.io/badge/MFA-TOTP-e74c3c?style=flat-square)
![WireGuard](https://img.shields.io/badge/WireGuard-VPN-88171a?style=flat-square)
**WGSecure** est une interface graphique multiplateforme (Windows & Linux) pour gérer une connexion WireGuard avec une surcouche MFA (authentification à deux facteurs TOTP). **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és
| Fonctionnalité | Détail | | # | Fonctionnalité | Détail |
|---|---| |---|---|---|
| **Interface systray** | Icône dans la barre de notification, connexion en un clic | | 🖥️ | **Interface systray** | Icône bouclier dans la barre de notification, connexion en un clic |
| **Mode User** (défaut) | Connexion / déconnexion WireGuard, statut en temps réel | | 👤 | **Mode User** (défaut) | Connexion / déconnexion WireGuard, statut RX/TX en temps réel |
| **Mode Admin** | Configuration complète (mot de passe protégé) | | ⚙️ | **Mode Admin** | Configuration complète, protégé par mot de passe |
| **Génération de clés** | Paire clé privée / publique Curve25519 (format WireGuard) | | 🔑 | **Génération de clés** | Paire Curve25519 native (sans dépendance au binaire `wg`) |
| **Configuration WireGuard** | Serveur, port UDP, DNS, IP client, keepalive | | 🛡️ | **Configuration WireGuard** | Serveur, port UDP, DNS, IP client, keepalive |
| **MFA TOTP** | Surcouche d'authentification compatible Google Authenticator / Aegis | | 🔐 | **MFA TOTP** | Compatible Google Authenticator / Aegis + QR Code |
| **Test de connexion** | Vérification UDP du serveur avant connexion | | 📡 | **Test de connexion** | Vérification UDP du serveur avant établissement du tunnel |
| **Cross-platform** | Windows 10+ et Linux (wg-quick) | | 🪟🐧 | **Cross-platform** | Windows 10+ et Linux (wg-quick) |
--- ---
## Prérequis ## 📋 Prérequis
### Linux ### 🐧 Linux
```bash ```bash
sudo apt install wireguard-tools # Debian/Ubuntu sudo apt install wireguard-tools # Debian/Ubuntu
sudo dnf install wireguard-tools # Fedora sudo dnf install wireguard-tools # Fedora
``` ```
### Windows ### 🪟 Windows
- [WireGuard for Windows](https://www.wireguard.com/install/) installé - [WireGuard for Windows](https://www.wireguard.com/install/) installé
### Python ### 🐍 Python
``` ```
Python >= 3.11 Python >= 3.11
``` ```
--- ---
## Installation ## 📦 Installation
```bash ```bash
git clone <repo> git clone <repo>
@@ -47,14 +55,14 @@ pip install -r requirements.txt
--- ---
## Utilisation ## 🚀 Utilisation
### Mode User (par défaut) ### Mode User (par défaut)
```bash ```bash
python main.py python main.py
``` ```
### Mode Administrateur (configuration) ### ⚙️ Mode Administrateur (configuration)
```bash ```bash
python main.py --admin python main.py --admin
``` ```
@@ -66,53 +74,65 @@ python main.py --no-tray
--- ---
## Workflow recommandé ## 🗺️ Workflow recommandé
1. Lancer `python main.py --admin` 1. 🚀 Lancer `python main.py --admin`
2. Onglet **WireGuard** : renseigner l'adresse et le port du serveur, la clé publique du serveur 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 client → copier la clé publique sur le 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 Aegis/Google Authenticator 4. 🔐 Onglet **MFA** : activer le MFA, générer un secret, scanner le QR Code
5. Onglet **Sécurité** : définir un mot de passe pour l'accès admin 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 6. **Enregistrer** → quitter → lancer `python main.py` en mode user
--- ---
## Architecture ## 🏗️ Architecture
``` ```
WGSecure/ WGSecure/
├── main.py # Point d'entrée ├── main.py # 🚀 Point d'entrée
├── requirements.txt ├── requirements.txt
├── app/ ├── app/
│ ├── __init__.py # Version │ ├── __init__.py # Version
│ ├── core/ │ ├── core/
│ │ ├── config.py # Configuration JSON persistante │ │ ├── config.py # 💾 Configuration JSON persistante
│ │ ├── wireguard.py # Clés, tunnel, statut │ │ ├── wireguard.py # 🛡️ Clés, tunnel, statut
│ │ └── mfa.py # TOTP / QR Code │ │ └── mfa.py # 🔐 TOTP / QR Code
│ ├── ui/ │ ├── ui/
│ │ ├── icons.py # Icônes générées par QPainter │ │ ├── icons.py # 🎨 Icônes bouclier générées par QPainter
│ │ ├── main_window.py # Fenêtre principale (mode user) │ │ ├── main_window.py # 👤 Fenêtre principale (mode user)
│ │ ├── admin_window.py # Panneau admin (5 onglets) │ │ ├── admin_window.py # ⚙️ Panneau admin (6 onglets, thème sombre)
│ │ ├── mfa_dialog.py # Dialog de vérification MFA │ │ ├── mfa_dialog.py # 🔐 Dialog de vérification MFA
│ │ └── systray.py # Icône systray + menu contextuel │ │ └── systray.py # 🖥️ Icône systray + menu contextuel
│ └── utils/ │ └── utils/
│ └── platform_utils.py # Détection OS, élévation de privilèges │ └── platform_utils.py # 🔧 Détection OS, élévation de privilèges
``` ```
--- ---
## Sécurité ## 🔒 Sécurité
- Le mot de passe administrateur est stocké sous forme de hash SHA-256 salé (salt aléatoire 16 octets) | Élément | Protection |
- 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 | 🔑 Mot de passe admin | Hash SHA-256 + salt aléatoire 16 octets |
- Le fichier de config WireGuard généré est protégé avec les permissions `0600` | 🗝️ 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) |
> **Recommandation** : chiffrez votre disque pour protéger le fichier de configuration. > ⚠️ **Recommandation** : chiffrez votre disque pour protéger le fichier de configuration.
--- ---
## Auteur ## 🖼️ Interface
Développé par **Johnny** — JT-Tools | Fenêtre principale | Panneau Admin |
Version : **0.1.0** — Juin 2026 |---|---|
| Statut connexion en temps réel | 6 onglets thème sombre |
| Bouton connexion / déconnexion | WireGuard · Clés · MFA · Test · Sécurité · À propos |
| Icône systray bouclier colorée | Bandeau coloré par onglet |
---
## 👤 Auteur
Développé par **Johnny** — [JT-Tools](https://github.com/JT-Tools)
Version : ![v0.1.0](https://img.shields.io/badge/v0.1.0-juin%202026-2980b9?style=flat-square) — Juin 2026