ZIPパスワードのロックを解除する
Contents
[
Hide
Show
]パスワードを忘れた場合
パスワードを「部分的に」忘れてしまうのはよくあることです。 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 }