first commit
This commit is contained in:
@@ -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 <repo>
|
||||
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
|
||||
Reference in New Issue
Block a user