Пароль для розблокування 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    }

Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.