우편번호 잠금해제
Contents
[
Hide
Show
]비밀번호를 잊어버렸습니다
비밀번호를 “부분적으로” 잊어버리는 것이 일반적입니다. 이자형. 다른 문자는 잊어버리고 일부 문자만 기억하십시오. Aspose.ZIP API를 사용하면 반쯤 잊어버린 비밀번호로 아카이브 잠금을 해제할 수 있습니다. 이 기사에서는 AES로 암호화된 zip 아카이브의 암호 해독 비밀번호를 추측하는 방법을 보여줍니다.
비밀번호 템플릿 식별
비밀번호가 “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 }