Korea :
Key 값이 BEDA-2F56-BC4F4368-8A71-870B 일때 Name은 무엇인가
힌트 : Name은 한자리인데.. 알파벳일수도 있고 숫자일수도 있고..
정답인증은 Name의 MD5 해쉬값(대문자)
English :
What is Name when the Key is BEDA-2F56-BC4F4368-8A71-870B
Hint : The name is 1 letter and it could be either alphabetic or numeric.
Verify your solution with the MD5 value of the Name.
MD5로 인증을 하라 하니 우선 MD5에 대해 먼저 알아야 하겠다.
http://ko.wikipedia.org/wiki/Md5
MD5(Message-Digest algorithm 5)는 128비트 암호화 해시 함수이다. RFC 1321로 지정되어 있으며, 주로 프로그램이나 파일이 원본 그대로인지를 확인하는 무결성 검사 등에 사용된다. MD5는 임의의 길이의 메시지(variable-length message)를 입력받아, 128비트짜리 고정 길이의 출력값을 낸다.
해시 값을 생성할 때는 http://www.md5decrypter.com/ 여기서 하라.
위 글을 보면 알겠지만… 128비트(16바이트)를 프로그램에 입력해야 할 것 같다. 그리고 그걸 어떻게 하든 키값과 비교를 하겠지. 일단 임의의 16바이트를 넣어 보거나, 아니면 다른 프로그램을 써서 알파뱃을 하나씩 넣어 보면서 풀 수도 있겠지.. 어떻게 푸는가는 자유다. 여기서는 임의의 16바이트를 넣고 그것으로 분석한다.
이곳부터 분석해보면 될 것 같다.
빨간색 박스 두 개의 함수가 핵심적인 역할을 하고 있다. 저곳을 분석하면 될 것 같다.
일단 비교 함수라고 체크되 있는 곳을 실험해 보자.
함수 호출하기 전에 EAX, EDX의 레지스터를 똑같이 맞추고 실험했다. 결과는 비교함수는 단순히 비교만 한다는 것을 알아 낼 수 있었다.
그럼 이제 분석할 곳은 L17.0045B850으로 좁혀 지는군..
근데 저 함수를 분석하기가 너무 힘들더라;
그래서 생각을 달리 해보기로 했다. 왜 CodeEngn에서 답은 한글자라고 힌트를 줬을까?
거기에 초점을 맞춰서 생각을 했는데…. 코드를 조금 수정하고 하니 답이 바로 나오더라;
Bloger: moltak.net
'Security > Reversing' 카테고리의 다른 글
Reverse Engineering (0) | 2010.04.22 |
---|---|
CodeEngn 18 (0) | 2010.04.14 |
CodeEngn 16 (0) | 2010.04.13 |
CodeEngn 15 (0) | 2010.04.13 |
CodeEngn 14 (0) | 2010.04.12 |