- Today
- Total
Phantom
Crackme – 14 본문
음…키값을 넣고 네임을 넣으란다 2자리라고 하고..
델파이로 짜였더라. 로딩 오래걸리더라…
우선 프로그램을 실행해본다.
키값을 넣고 두자리 네임이랬으니 AA를 넣고 실행해본다.
음…저 다음엔 뭘 집어넣어도 실행이 안된다.
저 Please.. 문자열 쪽으로 검색해 들어가봐야겠다.
도저히 아이다로는 알아보기 힘들어 이뮤니티를 써야겠다.
이 프로그램이 3개문자열로 비교를 해서 2자리로 수정한 후의 키 값을 찾았다.
그러나 문제는 154C-6505-D2ADD0F3-A223-2870의 네임을 찾는 것이다.
이 부분에서 앞자리 4자리가 나온다…
그럼 이 연산을 통해 154C가 나오는 알파벳이나 숫자를 찾음 된다
브루트포싱을 하면 되는데…코딩능력이 딸려 소스를 빌려왔다.
Bruteforce.c
#include <stdio.h>
#include <string.h>
int main(){
FILE *fp=fopen("D:\output.txt","wt");
const char *component="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
char name[3];
int i=0,j=0,len=0;
unsigned ecx=0, edx=0,esi=0;
memset(name,0,3);
len=strlen(component);
for(i=0;i<len;i++){
name[0]=component[i];
for(j=0;j<len;j++){
name[1]=component[j];
edx=0;
esi=0;
for(ecx=0;ecx<2;ecx++){
esi = name[ecx];
esi +=edx;
esi = esi*0x772;
edx = esi;
edx *=esi;
esi +=edx;
esi *=0x474;
esi +=esi;
edx = esi;
}
fprintf(fp, "%c%c - %x\n", component[i],component[j],edx/0x10000);
if(edx/0x10000==0x154c){
fprintf(fp,"The Anser is %c%c.\n",component[i],component[j]);
fclose(fp);
return 0;
}
}
}
fclose(fp);
return 0;
}
답은 이렇게 나온다.
CL - 8aa3
CM - 5c16
CN - 8ef
CO - 912d
CP - f4cf
CQ - 33d7
CR - 4e44
CS - 4415
CT - 154c
The Anser is CT.
앞자리 알고리즘에서 어느 정도 연산은 알겠는데 그 위의 모든 구성은 전혀 이해 하지 못하겠다..
'Pwnable > Crackme 처음 풀 때' 카테고리의 다른 글
Crackme – 16 (0) | 2016.03.01 |
---|---|
Crackme – 15 (0) | 2016.03.01 |
Crackme – 13 (0) | 2016.03.01 |
Crackme – 12 (0) | 2016.03.01 |
Crackme – 11 (0) | 2016.03.01 |