문제 자체에서 주는 힌트는 없다.
우선 압축을 풀어봐야겠다.
7zip으로 압축을 풀어주었다.
압축을 푼 문제를 실행시켜 아무 숫자나 넣어보았다.
여기서도 cmp로 비교하는 것이 있을 거라 예상.
DIE로 확인해본 결과 라이브러리가 .NET으로 되어있다.
.NET을 풀기위해 dnspy로 풀어주어야한다.
using System;
// Token: 0x02000003 RID: 3
public class RijndaelSimpleTest
{
// Token: 0x06000004 RID: 4 RVA: 0x000021B4 File Offset: 0x000003B4
[STAThread]
private static void Main(string[] args)
{
string text = "";
string cipherText = "BnCxGiN4aJDE+qUe2yIm8Q==";
string passPhrase = "^F79ejk56$£";
string saltValue = "DHj47&*)$h";
string hashAlgorithm = "MD5";
int passwordIterations = 1024;
string initVector = "&!£$%^&*()CvHgE!";
int keySize = 256;
RijndaelSimple.Encrypt(text, passPhrase, saltValue, hashAlgorithm, passwordIterations, initVector, keySize);
text = RijndaelSimple.Decrypt(cipherText, passPhrase, saltValue, hashAlgorithm, passwordIterations, initVector, keySize);
for (;;)
{
Console.WriteLine("Please enter the password: ");
string a = Console.ReadLine();
if (a == text)
{
break;
}
Console.WriteLine("Bad Luck! Try again!");
}
Console.WriteLine("Well Done! You cracked it!");
Console.ReadLine();
}
}
다음은 dnspy로 열었을 때 찾은 메인 부분이다.
여기서 Console.WriteLine("Please enter the password: ");에 브레이크를 걸어보겠다.
브레이크를 걸고 실행시켜보겠다.
실행시켰을 때 출력되는 것들이다.
여기서 text인 Leteminman으로 정답이 비교될 것이라 예상.
입력을 해보면 정답이라는 걸 알 수 있다.