Password-Generator-Advanced 1.0.1__tar.gz → 1.0.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- password_generator_advanced-1.0.2/PKG-INFO +300 -0
- password_generator_advanced-1.0.2/README.md +286 -0
- {password_generator_advanced-1.0.1 → password_generator_advanced-1.0.2}/pyproject.toml +3 -2
- password_generator_advanced-1.0.2/src/password_generator_advanced/__init__.py +1 -0
- password_generator_advanced-1.0.1/PKG-INFO +0 -11
- password_generator_advanced-1.0.1/src/password_generator_advanced/__init__.py +0 -1
- {password_generator_advanced-1.0.1 → password_generator_advanced-1.0.2}/LICENSE +0 -0
- {password_generator_advanced-1.0.1 → password_generator_advanced-1.0.2}/src/password_generator_advanced/__main__.py +0 -0
- {password_generator_advanced-1.0.1 → password_generator_advanced-1.0.2}/src/password_generator_advanced/clipboard.py +0 -0
- {password_generator_advanced-1.0.1 → password_generator_advanced-1.0.2}/src/password_generator_advanced/generator.py +0 -0
- {password_generator_advanced-1.0.1 → password_generator_advanced-1.0.2}/src/password_generator_advanced/main.py +0 -0
- {password_generator_advanced-1.0.1 → password_generator_advanced-1.0.2}/src/password_generator_advanced/wordlist.py +0 -0
|
@@ -0,0 +1,300 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: Password-Generator-Advanced
|
|
3
|
+
Version: 1.0.2
|
|
4
|
+
Summary: Secure command-line password generator with strict cryptographic constraints. Interactive menu and CLI modes. Passphrase generation. Entropy evaluation. Cross-platform clipboard support.
|
|
5
|
+
License-File: LICENSE
|
|
6
|
+
Author: valorisa
|
|
7
|
+
Requires-Python: >=3.12,<4.0
|
|
8
|
+
Classifier: Programming Language :: Python :: 3
|
|
9
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
10
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
11
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
12
|
+
Description-Content-Type: text/markdown
|
|
13
|
+
|
|
14
|
+
# Password-Generator-Advanced
|
|
15
|
+
|
|
16
|
+
> 🇫🇷 Version française | 🇺🇸 [English version](README.en.md)
|
|
17
|
+
|
|
18
|
+

|
|
19
|
+

|
|
20
|
+

|
|
21
|
+
|
|
22
|
+
Générateur de mots de passe sécurisés en ligne de commande avec des contraintes cryptographiques strictes. Chaque mot de passe généré contient obligatoirement des lettres minuscules, majuscules, chiffres et caractères spéciaux, avec des minimums configurables.
|
|
23
|
+
|
|
24
|
+
---
|
|
25
|
+
|
|
26
|
+
## Installation Rapide
|
|
27
|
+
|
|
28
|
+
**Password-Generator-Advanced est disponible sur PyPI !** N'importe qui peut l'installer directement avec pip :
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
pip install Password-Generator-Advanced
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
Une fois installé, lancez simplement :
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
password-generator-advanced
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
Le package est compatible avec **Python 3.12+** et fonctionne sur Linux, macOS et Windows.
|
|
41
|
+
|
|
42
|
+
**Que fait cette commande ?**
|
|
43
|
+
- Télécharge automatiquement la dernière version stable depuis PyPI
|
|
44
|
+
- Installe le package dans votre environnement Python
|
|
45
|
+
- Rend la commande `password-generator-advanced` disponible globalement
|
|
46
|
+
|
|
47
|
+
**Mise à jour vers la dernière version :**
|
|
48
|
+
|
|
49
|
+
```bash
|
|
50
|
+
pip install --upgrade Password-Generator-Advanced
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
**Installation dans un environnement virtuel (recommandé) :**
|
|
54
|
+
|
|
55
|
+
```bash
|
|
56
|
+
# Créer un environnement virtuel
|
|
57
|
+
python -m venv venv
|
|
58
|
+
|
|
59
|
+
# Activer l'environnement
|
|
60
|
+
# Sur Linux/macOS :
|
|
61
|
+
source venv/bin/activate
|
|
62
|
+
# Sur Windows :
|
|
63
|
+
venv\Scripts\activate
|
|
64
|
+
|
|
65
|
+
# Installer le package
|
|
66
|
+
pip install Password-Generator-Advanced
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
### Alternative : Installation depuis les sources
|
|
70
|
+
|
|
71
|
+
Si vous souhaitez contribuer au projet ou utiliser la version de développement :
|
|
72
|
+
|
|
73
|
+
```bash
|
|
74
|
+
git clone https://github.com/valorisa/Password-Generator-Advanced.git
|
|
75
|
+
cd Password-Generator-Advanced
|
|
76
|
+
poetry install
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
**Prérequis pour l'installation depuis les sources :**
|
|
80
|
+
- Python 3.12 ou supérieur
|
|
81
|
+
- Poetry (gestionnaire de dépendances)
|
|
82
|
+
|
|
83
|
+
---
|
|
84
|
+
|
|
85
|
+
## Fonctionnalités
|
|
86
|
+
|
|
87
|
+
- Génération de mots de passe avec contraintes strictes (configurable)
|
|
88
|
+
- Génération de passphrases (style Diceware, 2048 mots, 11 bits d'entropie par mot)
|
|
89
|
+
- Évaluation de la force d'un mot de passe ou passphrase existant
|
|
90
|
+
- Copie dans le presse-papier (Windows, macOS, Linux)
|
|
91
|
+
- Mode interactif (menu) et mode CLI (arguments en ligne de commande)
|
|
92
|
+
|
|
93
|
+
---
|
|
94
|
+
|
|
95
|
+
## Contraintes par défaut
|
|
96
|
+
|
|
97
|
+
| Contrainte | Minimum garanti |
|
|
98
|
+
|------------|-----------------|
|
|
99
|
+
| Chiffres (0-9) | 9 |
|
|
100
|
+
| Caractères spéciaux (`!@#$%^&*`...) | 9 |
|
|
101
|
+
| Lettres minuscules (a-z) | 1 |
|
|
102
|
+
| Lettres majuscules (A-Z) | 1 |
|
|
103
|
+
| **Longueur minimale totale** | **20 caractères** |
|
|
104
|
+
|
|
105
|
+
Les contraintes de chiffres et caractères spéciaux sont paramétrables via `--min-digits` et `--min-special`.
|
|
106
|
+
|
|
107
|
+
Le module Python `secrets` est utilisé pour la génération (CSPRNG — Cryptographically Secure Pseudo-Random Number Generator).
|
|
108
|
+
|
|
109
|
+
---
|
|
110
|
+
|
|
111
|
+
## Utilisation
|
|
112
|
+
|
|
113
|
+
### Mode interactif
|
|
114
|
+
|
|
115
|
+
**Si vous avez installé via pip depuis PyPI :**
|
|
116
|
+
|
|
117
|
+
```bash
|
|
118
|
+
password-generator-advanced
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
**Si vous utilisez l'installation depuis les sources (avec Poetry) :**
|
|
122
|
+
|
|
123
|
+
```bash
|
|
124
|
+
python -m password_generator_advanced
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
*Note : Les deux commandes sont équivalentes et lancent le même programme.*
|
|
128
|
+
|
|
129
|
+
Le menu interactif s'affiche :
|
|
130
|
+
|
|
131
|
+
```
|
|
132
|
+
==================================================
|
|
133
|
+
GÉNÉRATEUR DE MOTS DE PASSE SÉCURISÉS
|
|
134
|
+
==================================================
|
|
135
|
+
|
|
136
|
+
Contraintes appliquées :
|
|
137
|
+
- Minimum 9 chiffres
|
|
138
|
+
- Minimum 9 caractères spéciaux
|
|
139
|
+
- Au moins 1 lettre minuscule
|
|
140
|
+
- Au moins 1 lettre majuscule
|
|
141
|
+
- Longueur minimale : 20 caractères
|
|
142
|
+
|
|
143
|
+
--------------------------------------------------
|
|
144
|
+
1 - Générer un mot de passe
|
|
145
|
+
2 - Générer plusieurs mots de passe
|
|
146
|
+
3 - Générer une passphrase
|
|
147
|
+
4 - Évaluer un mot de passe / passphrase
|
|
148
|
+
5 - Quitter
|
|
149
|
+
--------------------------------------------------
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
### Mode CLI
|
|
153
|
+
|
|
154
|
+
```bash
|
|
155
|
+
# Générer un mot de passe (longueur 30)
|
|
156
|
+
python -m password_generator_advanced --length 30
|
|
157
|
+
|
|
158
|
+
# Générer 5 mots de passe
|
|
159
|
+
python -m password_generator_advanced --length 25 --count 5
|
|
160
|
+
|
|
161
|
+
# Contraintes personnalisées
|
|
162
|
+
python -m password_generator_advanced --length 20 --min-digits 3 --min-special 5
|
|
163
|
+
|
|
164
|
+
# Générer une passphrase (6 mots par défaut)
|
|
165
|
+
python -m password_generator_advanced --passphrase
|
|
166
|
+
|
|
167
|
+
# Passphrase avec options
|
|
168
|
+
python -m password_generator_advanced --passphrase --words 8 --separator "."
|
|
169
|
+
|
|
170
|
+
# Évaluer un mot de passe existant
|
|
171
|
+
python -m password_generator_advanced --evaluate "mon-super-mot-de-passe!"
|
|
172
|
+
|
|
173
|
+
# Copier le résultat dans le presse-papier
|
|
174
|
+
python -m password_generator_advanced --length 25 --copy
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
### Options CLI complètes
|
|
178
|
+
|
|
179
|
+
| Option | Court | Description |
|
|
180
|
+
|--------|-------|-------------|
|
|
181
|
+
| `--length` | `-l` | Longueur du mot de passe |
|
|
182
|
+
| `--min-digits` | | Nombre minimum de chiffres (défaut: 9) |
|
|
183
|
+
| `--min-special` | | Nombre minimum de caractères spéciaux (défaut: 9) |
|
|
184
|
+
| `--count` | `-n` | Nombre de mots de passe à générer |
|
|
185
|
+
| `--passphrase` | `-p` | Générer une passphrase |
|
|
186
|
+
| `--words` | `-w` | Nombre de mots pour la passphrase (défaut: 6) |
|
|
187
|
+
| `--separator` | | Séparateur pour la passphrase (défaut: `-`) |
|
|
188
|
+
| `--evaluate` | `-e` | Évaluer l'entropie théorique d'un mot de passe |
|
|
189
|
+
| `--copy` | `-c` | Copier dans le presse-papier |
|
|
190
|
+
|
|
191
|
+
---
|
|
192
|
+
|
|
193
|
+
## Évaluation de mot de passe
|
|
194
|
+
|
|
195
|
+
L'outil peut évaluer l'entropie théorique maximale d'un mot de passe ou passphrase existant :
|
|
196
|
+
|
|
197
|
+
```
|
|
198
|
+
Entropie théorique maximale :
|
|
199
|
+
Longueur : 28 caractères
|
|
200
|
+
Entropie max. : 164.0 bits
|
|
201
|
+
Niveau : Très fort
|
|
202
|
+
Jeu de caractères: 58 symboles possibles
|
|
203
|
+
|
|
204
|
+
Catégories détectées :
|
|
205
|
+
Minuscules : ✓
|
|
206
|
+
Majuscules : ✗
|
|
207
|
+
Chiffres : ✗
|
|
208
|
+
Spéciaux : ✓
|
|
209
|
+
|
|
210
|
+
⚠ Ce calcul suppose un choix aléatoire par caractère.
|
|
211
|
+
Un mot de passe basé sur des mots du dictionnaire ou des
|
|
212
|
+
patterns prévisibles aura une entropie réelle inférieure.
|
|
213
|
+
```
|
|
214
|
+
|
|
215
|
+
Seuils (alignés sur les recommandations ANSSI) :
|
|
216
|
+
|
|
217
|
+
| Entropie | Niveau |
|
|
218
|
+
|----------|--------|
|
|
219
|
+
| < 48 bits | Très faible |
|
|
220
|
+
| 48-63 bits | Faible |
|
|
221
|
+
| 64-79 bits | Moyen |
|
|
222
|
+
| 80-127 bits | Fort |
|
|
223
|
+
| ≥ 128 bits | Très fort |
|
|
224
|
+
|
|
225
|
+
---
|
|
226
|
+
|
|
227
|
+
## Architecture du projet
|
|
228
|
+
|
|
229
|
+
```
|
|
230
|
+
Password-Generator-Advanced/
|
|
231
|
+
├── src/
|
|
232
|
+
│ └── password_generator_advanced/
|
|
233
|
+
│ ├── __init__.py # Version du package
|
|
234
|
+
│ ├── __main__.py # Point d'entrée python -m
|
|
235
|
+
│ ├── main.py # Menu interactif + CLI argparse
|
|
236
|
+
│ ├── generator.py # Algorithme de génération + évaluation
|
|
237
|
+
│ ├── wordlist.py # Liste de 2048 mots pour passphrases
|
|
238
|
+
│ └── clipboard.py # Copie presse-papier cross-platform
|
|
239
|
+
├── tests/
|
|
240
|
+
│ └── test_generator.py # 18 tests
|
|
241
|
+
├── pyproject.toml # Configuration Poetry
|
|
242
|
+
├── LICENSE # MIT
|
|
243
|
+
├── SECURITY.md
|
|
244
|
+
├── CONTRIBUTING.md
|
|
245
|
+
└── CODE_OF_CONDUCT.md
|
|
246
|
+
```
|
|
247
|
+
|
|
248
|
+
### Algorithme de génération (`generator.py`)
|
|
249
|
+
|
|
250
|
+
1. **Placement garanti** : N chiffres + N caractères spéciaux + 1 minuscule + 1 majuscule sont placés en premier
|
|
251
|
+
2. **Remplissage** : Les positions restantes sont remplies avec un mélange aléatoire de toutes les catégories
|
|
252
|
+
3. **Mélange final** : L'ensemble est mélangé via `secrets.SystemRandom().shuffle()` pour éliminer tout pattern positionnel prévisible
|
|
253
|
+
|
|
254
|
+
### Génération de passphrases
|
|
255
|
+
|
|
256
|
+
Sélection aléatoire de mots depuis une liste de 2048 mots (11 bits d'entropie par mot). Une passphrase de 6 mots offre ~66 bits d'entropie.
|
|
257
|
+
|
|
258
|
+
---
|
|
259
|
+
|
|
260
|
+
## Sécurité
|
|
261
|
+
|
|
262
|
+
- **Module `secrets`** : Utilise le générateur aléatoire cryptographiquement sécurisé du système d'exploitation (`/dev/urandom` sur Linux/macOS, `CryptGenRandom` sur Windows)
|
|
263
|
+
- **Aucune dépendance externe** : Uniquement la bibliothèque standard Python — pas de surface d'attaque tierce
|
|
264
|
+
- **Pas de stockage** : Les mots de passe générés ne sont jamais écrits sur disque ni envoyés sur le réseau
|
|
265
|
+
|
|
266
|
+
Pour signaler une vulnérabilité, consultez [SECURITY.md](SECURITY.md).
|
|
267
|
+
|
|
268
|
+
---
|
|
269
|
+
|
|
270
|
+
## Développement
|
|
271
|
+
|
|
272
|
+
```bash
|
|
273
|
+
# Lancer les tests
|
|
274
|
+
poetry run pytest tests/ -v
|
|
275
|
+
|
|
276
|
+
# Vérifier le style
|
|
277
|
+
poetry run ruff check .
|
|
278
|
+
|
|
279
|
+
# Corriger automatiquement
|
|
280
|
+
poetry run ruff check . --fix
|
|
281
|
+
```
|
|
282
|
+
|
|
283
|
+
---
|
|
284
|
+
|
|
285
|
+
## Contribution
|
|
286
|
+
|
|
287
|
+
Les contributions sont bienvenues. Consultez [CONTRIBUTING.md](CONTRIBUTING.md) pour le processus détaillé.
|
|
288
|
+
|
|
289
|
+
Ce projet respecte le [Contributor Covenant 2.1](CODE_OF_CONDUCT.md).
|
|
290
|
+
|
|
291
|
+
---
|
|
292
|
+
|
|
293
|
+
## Licence
|
|
294
|
+
|
|
295
|
+
[MIT](LICENSE) - Utilisation libre, commerciale et modification autorisées.
|
|
296
|
+
|
|
297
|
+
---
|
|
298
|
+
|
|
299
|
+
**Auteur** : [valorisa](https://github.com/valorisa)
|
|
300
|
+
|
|
@@ -0,0 +1,286 @@
|
|
|
1
|
+
# Password-Generator-Advanced
|
|
2
|
+
|
|
3
|
+
> 🇫🇷 Version française | 🇺🇸 [English version](README.en.md)
|
|
4
|
+
|
|
5
|
+

|
|
6
|
+

|
|
7
|
+

|
|
8
|
+
|
|
9
|
+
Générateur de mots de passe sécurisés en ligne de commande avec des contraintes cryptographiques strictes. Chaque mot de passe généré contient obligatoirement des lettres minuscules, majuscules, chiffres et caractères spéciaux, avec des minimums configurables.
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## Installation Rapide
|
|
14
|
+
|
|
15
|
+
**Password-Generator-Advanced est disponible sur PyPI !** N'importe qui peut l'installer directement avec pip :
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
pip install Password-Generator-Advanced
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
Une fois installé, lancez simplement :
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
password-generator-advanced
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
Le package est compatible avec **Python 3.12+** et fonctionne sur Linux, macOS et Windows.
|
|
28
|
+
|
|
29
|
+
**Que fait cette commande ?**
|
|
30
|
+
- Télécharge automatiquement la dernière version stable depuis PyPI
|
|
31
|
+
- Installe le package dans votre environnement Python
|
|
32
|
+
- Rend la commande `password-generator-advanced` disponible globalement
|
|
33
|
+
|
|
34
|
+
**Mise à jour vers la dernière version :**
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
pip install --upgrade Password-Generator-Advanced
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
**Installation dans un environnement virtuel (recommandé) :**
|
|
41
|
+
|
|
42
|
+
```bash
|
|
43
|
+
# Créer un environnement virtuel
|
|
44
|
+
python -m venv venv
|
|
45
|
+
|
|
46
|
+
# Activer l'environnement
|
|
47
|
+
# Sur Linux/macOS :
|
|
48
|
+
source venv/bin/activate
|
|
49
|
+
# Sur Windows :
|
|
50
|
+
venv\Scripts\activate
|
|
51
|
+
|
|
52
|
+
# Installer le package
|
|
53
|
+
pip install Password-Generator-Advanced
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
### Alternative : Installation depuis les sources
|
|
57
|
+
|
|
58
|
+
Si vous souhaitez contribuer au projet ou utiliser la version de développement :
|
|
59
|
+
|
|
60
|
+
```bash
|
|
61
|
+
git clone https://github.com/valorisa/Password-Generator-Advanced.git
|
|
62
|
+
cd Password-Generator-Advanced
|
|
63
|
+
poetry install
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
**Prérequis pour l'installation depuis les sources :**
|
|
67
|
+
- Python 3.12 ou supérieur
|
|
68
|
+
- Poetry (gestionnaire de dépendances)
|
|
69
|
+
|
|
70
|
+
---
|
|
71
|
+
|
|
72
|
+
## Fonctionnalités
|
|
73
|
+
|
|
74
|
+
- Génération de mots de passe avec contraintes strictes (configurable)
|
|
75
|
+
- Génération de passphrases (style Diceware, 2048 mots, 11 bits d'entropie par mot)
|
|
76
|
+
- Évaluation de la force d'un mot de passe ou passphrase existant
|
|
77
|
+
- Copie dans le presse-papier (Windows, macOS, Linux)
|
|
78
|
+
- Mode interactif (menu) et mode CLI (arguments en ligne de commande)
|
|
79
|
+
|
|
80
|
+
---
|
|
81
|
+
|
|
82
|
+
## Contraintes par défaut
|
|
83
|
+
|
|
84
|
+
| Contrainte | Minimum garanti |
|
|
85
|
+
|------------|-----------------|
|
|
86
|
+
| Chiffres (0-9) | 9 |
|
|
87
|
+
| Caractères spéciaux (`!@#$%^&*`...) | 9 |
|
|
88
|
+
| Lettres minuscules (a-z) | 1 |
|
|
89
|
+
| Lettres majuscules (A-Z) | 1 |
|
|
90
|
+
| **Longueur minimale totale** | **20 caractères** |
|
|
91
|
+
|
|
92
|
+
Les contraintes de chiffres et caractères spéciaux sont paramétrables via `--min-digits` et `--min-special`.
|
|
93
|
+
|
|
94
|
+
Le module Python `secrets` est utilisé pour la génération (CSPRNG — Cryptographically Secure Pseudo-Random Number Generator).
|
|
95
|
+
|
|
96
|
+
---
|
|
97
|
+
|
|
98
|
+
## Utilisation
|
|
99
|
+
|
|
100
|
+
### Mode interactif
|
|
101
|
+
|
|
102
|
+
**Si vous avez installé via pip depuis PyPI :**
|
|
103
|
+
|
|
104
|
+
```bash
|
|
105
|
+
password-generator-advanced
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
**Si vous utilisez l'installation depuis les sources (avec Poetry) :**
|
|
109
|
+
|
|
110
|
+
```bash
|
|
111
|
+
python -m password_generator_advanced
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
*Note : Les deux commandes sont équivalentes et lancent le même programme.*
|
|
115
|
+
|
|
116
|
+
Le menu interactif s'affiche :
|
|
117
|
+
|
|
118
|
+
```
|
|
119
|
+
==================================================
|
|
120
|
+
GÉNÉRATEUR DE MOTS DE PASSE SÉCURISÉS
|
|
121
|
+
==================================================
|
|
122
|
+
|
|
123
|
+
Contraintes appliquées :
|
|
124
|
+
- Minimum 9 chiffres
|
|
125
|
+
- Minimum 9 caractères spéciaux
|
|
126
|
+
- Au moins 1 lettre minuscule
|
|
127
|
+
- Au moins 1 lettre majuscule
|
|
128
|
+
- Longueur minimale : 20 caractères
|
|
129
|
+
|
|
130
|
+
--------------------------------------------------
|
|
131
|
+
1 - Générer un mot de passe
|
|
132
|
+
2 - Générer plusieurs mots de passe
|
|
133
|
+
3 - Générer une passphrase
|
|
134
|
+
4 - Évaluer un mot de passe / passphrase
|
|
135
|
+
5 - Quitter
|
|
136
|
+
--------------------------------------------------
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
### Mode CLI
|
|
140
|
+
|
|
141
|
+
```bash
|
|
142
|
+
# Générer un mot de passe (longueur 30)
|
|
143
|
+
python -m password_generator_advanced --length 30
|
|
144
|
+
|
|
145
|
+
# Générer 5 mots de passe
|
|
146
|
+
python -m password_generator_advanced --length 25 --count 5
|
|
147
|
+
|
|
148
|
+
# Contraintes personnalisées
|
|
149
|
+
python -m password_generator_advanced --length 20 --min-digits 3 --min-special 5
|
|
150
|
+
|
|
151
|
+
# Générer une passphrase (6 mots par défaut)
|
|
152
|
+
python -m password_generator_advanced --passphrase
|
|
153
|
+
|
|
154
|
+
# Passphrase avec options
|
|
155
|
+
python -m password_generator_advanced --passphrase --words 8 --separator "."
|
|
156
|
+
|
|
157
|
+
# Évaluer un mot de passe existant
|
|
158
|
+
python -m password_generator_advanced --evaluate "mon-super-mot-de-passe!"
|
|
159
|
+
|
|
160
|
+
# Copier le résultat dans le presse-papier
|
|
161
|
+
python -m password_generator_advanced --length 25 --copy
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
### Options CLI complètes
|
|
165
|
+
|
|
166
|
+
| Option | Court | Description |
|
|
167
|
+
|--------|-------|-------------|
|
|
168
|
+
| `--length` | `-l` | Longueur du mot de passe |
|
|
169
|
+
| `--min-digits` | | Nombre minimum de chiffres (défaut: 9) |
|
|
170
|
+
| `--min-special` | | Nombre minimum de caractères spéciaux (défaut: 9) |
|
|
171
|
+
| `--count` | `-n` | Nombre de mots de passe à générer |
|
|
172
|
+
| `--passphrase` | `-p` | Générer une passphrase |
|
|
173
|
+
| `--words` | `-w` | Nombre de mots pour la passphrase (défaut: 6) |
|
|
174
|
+
| `--separator` | | Séparateur pour la passphrase (défaut: `-`) |
|
|
175
|
+
| `--evaluate` | `-e` | Évaluer l'entropie théorique d'un mot de passe |
|
|
176
|
+
| `--copy` | `-c` | Copier dans le presse-papier |
|
|
177
|
+
|
|
178
|
+
---
|
|
179
|
+
|
|
180
|
+
## Évaluation de mot de passe
|
|
181
|
+
|
|
182
|
+
L'outil peut évaluer l'entropie théorique maximale d'un mot de passe ou passphrase existant :
|
|
183
|
+
|
|
184
|
+
```
|
|
185
|
+
Entropie théorique maximale :
|
|
186
|
+
Longueur : 28 caractères
|
|
187
|
+
Entropie max. : 164.0 bits
|
|
188
|
+
Niveau : Très fort
|
|
189
|
+
Jeu de caractères: 58 symboles possibles
|
|
190
|
+
|
|
191
|
+
Catégories détectées :
|
|
192
|
+
Minuscules : ✓
|
|
193
|
+
Majuscules : ✗
|
|
194
|
+
Chiffres : ✗
|
|
195
|
+
Spéciaux : ✓
|
|
196
|
+
|
|
197
|
+
⚠ Ce calcul suppose un choix aléatoire par caractère.
|
|
198
|
+
Un mot de passe basé sur des mots du dictionnaire ou des
|
|
199
|
+
patterns prévisibles aura une entropie réelle inférieure.
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
Seuils (alignés sur les recommandations ANSSI) :
|
|
203
|
+
|
|
204
|
+
| Entropie | Niveau |
|
|
205
|
+
|----------|--------|
|
|
206
|
+
| < 48 bits | Très faible |
|
|
207
|
+
| 48-63 bits | Faible |
|
|
208
|
+
| 64-79 bits | Moyen |
|
|
209
|
+
| 80-127 bits | Fort |
|
|
210
|
+
| ≥ 128 bits | Très fort |
|
|
211
|
+
|
|
212
|
+
---
|
|
213
|
+
|
|
214
|
+
## Architecture du projet
|
|
215
|
+
|
|
216
|
+
```
|
|
217
|
+
Password-Generator-Advanced/
|
|
218
|
+
├── src/
|
|
219
|
+
│ └── password_generator_advanced/
|
|
220
|
+
│ ├── __init__.py # Version du package
|
|
221
|
+
│ ├── __main__.py # Point d'entrée python -m
|
|
222
|
+
│ ├── main.py # Menu interactif + CLI argparse
|
|
223
|
+
│ ├── generator.py # Algorithme de génération + évaluation
|
|
224
|
+
│ ├── wordlist.py # Liste de 2048 mots pour passphrases
|
|
225
|
+
│ └── clipboard.py # Copie presse-papier cross-platform
|
|
226
|
+
├── tests/
|
|
227
|
+
│ └── test_generator.py # 18 tests
|
|
228
|
+
├── pyproject.toml # Configuration Poetry
|
|
229
|
+
├── LICENSE # MIT
|
|
230
|
+
├── SECURITY.md
|
|
231
|
+
├── CONTRIBUTING.md
|
|
232
|
+
└── CODE_OF_CONDUCT.md
|
|
233
|
+
```
|
|
234
|
+
|
|
235
|
+
### Algorithme de génération (`generator.py`)
|
|
236
|
+
|
|
237
|
+
1. **Placement garanti** : N chiffres + N caractères spéciaux + 1 minuscule + 1 majuscule sont placés en premier
|
|
238
|
+
2. **Remplissage** : Les positions restantes sont remplies avec un mélange aléatoire de toutes les catégories
|
|
239
|
+
3. **Mélange final** : L'ensemble est mélangé via `secrets.SystemRandom().shuffle()` pour éliminer tout pattern positionnel prévisible
|
|
240
|
+
|
|
241
|
+
### Génération de passphrases
|
|
242
|
+
|
|
243
|
+
Sélection aléatoire de mots depuis une liste de 2048 mots (11 bits d'entropie par mot). Une passphrase de 6 mots offre ~66 bits d'entropie.
|
|
244
|
+
|
|
245
|
+
---
|
|
246
|
+
|
|
247
|
+
## Sécurité
|
|
248
|
+
|
|
249
|
+
- **Module `secrets`** : Utilise le générateur aléatoire cryptographiquement sécurisé du système d'exploitation (`/dev/urandom` sur Linux/macOS, `CryptGenRandom` sur Windows)
|
|
250
|
+
- **Aucune dépendance externe** : Uniquement la bibliothèque standard Python — pas de surface d'attaque tierce
|
|
251
|
+
- **Pas de stockage** : Les mots de passe générés ne sont jamais écrits sur disque ni envoyés sur le réseau
|
|
252
|
+
|
|
253
|
+
Pour signaler une vulnérabilité, consultez [SECURITY.md](SECURITY.md).
|
|
254
|
+
|
|
255
|
+
---
|
|
256
|
+
|
|
257
|
+
## Développement
|
|
258
|
+
|
|
259
|
+
```bash
|
|
260
|
+
# Lancer les tests
|
|
261
|
+
poetry run pytest tests/ -v
|
|
262
|
+
|
|
263
|
+
# Vérifier le style
|
|
264
|
+
poetry run ruff check .
|
|
265
|
+
|
|
266
|
+
# Corriger automatiquement
|
|
267
|
+
poetry run ruff check . --fix
|
|
268
|
+
```
|
|
269
|
+
|
|
270
|
+
---
|
|
271
|
+
|
|
272
|
+
## Contribution
|
|
273
|
+
|
|
274
|
+
Les contributions sont bienvenues. Consultez [CONTRIBUTING.md](CONTRIBUTING.md) pour le processus détaillé.
|
|
275
|
+
|
|
276
|
+
Ce projet respecte le [Contributor Covenant 2.1](CODE_OF_CONDUCT.md).
|
|
277
|
+
|
|
278
|
+
---
|
|
279
|
+
|
|
280
|
+
## Licence
|
|
281
|
+
|
|
282
|
+
[MIT](LICENSE) - Utilisation libre, commerciale et modification autorisées.
|
|
283
|
+
|
|
284
|
+
---
|
|
285
|
+
|
|
286
|
+
**Auteur** : [valorisa](https://github.com/valorisa)
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
[tool.poetry]
|
|
2
2
|
name = "Password-Generator-Advanced"
|
|
3
|
-
version = "1.0.
|
|
4
|
-
description = "
|
|
3
|
+
version = "1.0.2"
|
|
4
|
+
description = "Secure command-line password generator with strict cryptographic constraints. Interactive menu and CLI modes. Passphrase generation. Entropy evaluation. Cross-platform clipboard support."
|
|
5
5
|
authors = ["valorisa"]
|
|
6
|
+
readme = "README.md"
|
|
6
7
|
packages = [{include = "password_generator_advanced", from = "src"}]
|
|
7
8
|
|
|
8
9
|
[tool.poetry.scripts]
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "1.0.2"
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
Metadata-Version: 2.4
|
|
2
|
-
Name: Password-Generator-Advanced
|
|
3
|
-
Version: 1.0.1
|
|
4
|
-
Summary: Générateur de mots de passe avec un menu interactif et obligation pour la création des mots de passe d'avoir des lettres minuscules, majuscules, chiffres, caractères spéciaux et un minimum de 9 chiffres et 9 caractères spéciaux.
|
|
5
|
-
License-File: LICENSE
|
|
6
|
-
Author: valorisa
|
|
7
|
-
Requires-Python: >=3.12,<4.0
|
|
8
|
-
Classifier: Programming Language :: Python :: 3
|
|
9
|
-
Classifier: Programming Language :: Python :: 3.12
|
|
10
|
-
Classifier: Programming Language :: Python :: 3.13
|
|
11
|
-
Classifier: Programming Language :: Python :: 3.14
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
__version__ = "1.0.1"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|