Déverrouiller le mot de passe ZIP
Mot de passe oublié
Il est courant d’oublier le mot de passe “en partie”, c’est-à-dire. e. mémoriser certains personnages en en oubliant d’autres. L’API Aspose.ZIP vous permet de jouer avec de tels mots de passe à moitié oubliés pour déverrouiller l’archive. Cet article montre comment deviner le mot de passe de déchiffrement de l’archive zip cryptée par AES.
Modèle de mot de passe d’identification
Disons que votre mot de passe commence par les symboles « T0p$ecret » suivis d’une lettre majuscule anglaise et de deux chiffres. Ainsi, nous pouvons décrire un modèle comme ceci :
1string template = "T0p$ecret{0}{1}";
où l’ancien espace réservé est pour la lettre majuscule anglaise, le second est pour un nombre à deux chiffres.
Vérification d’un mot de passe unique
Ce simple code de décryptage
1 using (var a = new Archive("encrypted.zip", new ArchiveLoadOptions() {DecryptionPassword = password}))
2 a.ExtractToDirectory(".");
génère une InvalidDataException si un mauvais mot de passe a été fourni.
Attaque par force brute sur les archives
Alors composez et testez les mots de passe un par un. En cas de succès, le programme imprime le mot de passe approprié sur la console.
1 string template = "T0p$ecret{0}{1}";
2 for (char c = 'A'; c < 'Z'; c++)
3 {
4 bool correct = false;
5 for (int i = 10; i < 99; i++)
6 {
7 string password = string.Format(template, c, i);
8 try
9 {
10 using (Archive a = new Archive("encrypted.zip", new ArchiveLoadOptions() {DecryptionPassword = password}))
11 a.ExtractToDirectory(".");
12 correct = true;
13 }
14 catch (System.IO.InvalidDataException e)
15 {
16 correct = false;
17 }
18
19 if (correct)
20 {
21 Console.WriteLine($"Proper password: {password}");
22 break;
23 }
24 }
25
26 if (correct)
27 break;
28 }