ZIP-Passwort entsperren
Passwort vergessen
Es kommt häufig vor, dass das Passwort „teilweise“ vergessen wird, d. e. Erinnere dich an einige Charaktere, während du andere vergisst. Mit der Aspose.ZIP-API können Sie mit solchen halb vergessenen Passwörtern spielen, um das Archiv zu entsperren. In diesem Artikel erfahren Sie, wie Sie das Entschlüsselungspasswort des AES-verschlüsselten Zip-Archivs erraten.
Identifizierende Passwortvorlage
Nehmen wir an, Ihr Passwort beginnt mit den Symbolen „T0p$ecret“, gefolgt von einem englischen Großbuchstaben und zwei Ziffern. Wir können eine Vorlage also wie folgt beschreiben:
1string template = "T0p$ecret{0}{1}";
Dabei steht der erste Platzhalter für einen englischen Großbuchstaben, der zweite für eine zweistellige Zahl.
Einzelpasswort überprüfen
Dieser einfache Entschlüsselungscode
1 using (var a = new Archive("encrypted.zip", new ArchiveLoadOptions() {DecryptionPassword = password}))
2 a.ExtractToDirectory(".");
löst eine InvalidDataException aus, wenn ein falsches Passwort angegeben wurde.
Brute-Force-Angriff auf das Archiv
Verfassen und testen Sie also nacheinander Passwörter. Bei Erfolg gibt das Programm das richtige Passwort auf der Konsole aus.
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 }