Пароль для розблокування ZIP
Забули пароль
Часто забувати пароль «частково», тобто. д. запам’ятовувати деякі персонажі, забуваючи інших. Aspose.ZIP API дозволяє грати з такими напівзабутими паролями, щоб розблокувати архів. У цій статті показано вгадування пароля розшифровки zip-архіву, зашифрованого AES.
Ідентифікаційний шаблон пароля
Скажімо, ваш пароль починається з символів “T0p$ecret”, за якими йде велика англійська літера та дві цифри. Отже, ми можемо описати шаблон так:
1string template = "T0p$ecret{0}{1}";
де попередній заповнювач призначений для великої англійської літери, останній для двозначного числа.
Підтвердження єдиного пароля
Цей простий код розшифровки
1 using (var a = new Archive("encrypted.zip", new ArchiveLoadOptions() {DecryptionPassword = password}))
2 a.ExtractToDirectory(".");
викликає InvalidDataException, якщо було вказано неправильний пароль.
Атака грубою силою на архів
Тому складіть і перевірте паролі один за іншим. У разі успіху програма друкує відповідний пароль на консоль.
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 }