ZIPパスワードのロックを解除する

パスワードを忘れた場合

パスワードを「部分的に」忘れてしまうのはよくあることです。 e.その中のいくつかの文字を覚えていても、他の文字は忘れてしまいます。 Aspose.ZIP API を使用すると、このような忘れかけたパスワードを使用してアーカイブのロックを解除できます。この記事では、AES で暗号化された zip アーカイブの復号化パスワードを推測する方法を示します。

パスワード テンプレートの識別

パスワードが「T0p$ecret」記号で始まり、その後に大文字の英字と 2 桁の数字が続くとします。したがって、次のようにテンプレートを記述することができます。

1string template = "T0p$ecret{0}{1}";

ここで、前者のプレースホルダは英大文字を表し、後者は 2 桁の数字を表します。

単一のパスワードを確認しています

この単純な復号コード

1 using (var a = new Archive("encrypted.zip", new ArchiveLoadOptions() {DecryptionPassword = password}))
2    a.ExtractToDirectory(".");

間違ったパスワードが指定された場合、 InvalidDataException が発生します。

アーカイブに対するブルート フォース攻撃

したがって、パスワードを 1 つずつ作成してテストします。成功した場合、プログラムは適切なパスワードをコンソールに出力します。

 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.