벼래별게 다 있다. MDB 암호깨기 소스 !!
#include <stdio.h> #include <string.h> #include <stdlib.h> FILE *mdb; int XORTable97[14] = { 0x86,0xFB,0xEC,0x37,0x5D,0x44,0x9C,0xFA, 0xC6,0x5E,0x28,0xE6,0x13,0xD8 };
int XORTable2000[20] = { 0xffffffD3,0xffffffEC,0x8,0xffffff9C,0xffffff93,0x28,0x46,0xffffff8A,0x1,0x7b, 0xffffffA0,0xffffffDF,0x22,0x13,0xffffff9A,0xffffffB1,0x61,0x79,0xffffffC7,0x7C }; void Usage(char *szExe) { printf("
=================================================================="); printf("
이프로그램은 MS Acces97 및 2000에서 만들어진"); printf("
.mdb파일의 암호를 단방에 찾아내는 프로그램입니다."); printf("
MS아이들 이프로그램보면 경악하실겁니다."); printf("
MS아이들아, Access빨랑빨랑 업데이트해라!
"); printf("
이용방법: %s .mdb파일이름 version",szExe); printf("
version:"); printf("
97 - MS Access97"); printf("
2000 - MS Access2000"); printf("
2003년 12월 18일 by KHN (kys197543@hotmail.com)
"); //장난 printf("
(\_______/)"); printf("
/ @__@ "); printf("
( (oo) )"); printf("
`-.~~.-'"); printf("
/ "); printf("
@/ \_"); printf("
(/ / )"); printf("
WW`----'WW"); printf("
==================================================================
"); } void GetPassword(int *szXORTable,int nLen,int step) { int i; char ch;
printf("암호는 다음과같습니다 : "); for(i=0;i<nLen;i++) { if((ch=fgetc(mdb)^szXORTable[i])==0) break; fseek(mdb,step-1,SEEK_CUR); putchar(ch); } if(i==0) printf("(암호는 없습니다.)"); putchar('
'); }
int main(int argc, char *argv[]) { int ver; char szVer[5];
Usage(argv[0]);
if(argc<3) { exit(1); }
strcpy(szVer,argv[2]);
if((mdb=fopen(argv[1],"rb"))==NULL) { printf("%s 파일을 찾을수없습니다
",argv[1]); exit(1); }
fseek(mdb,0x42,SEEK_SET); ver = atoi(szVer); if (ver == 97) GetPassword(XORTable97,14,1); if (ver == 2000) GetPassword(XORTable2000,20,2); if (ver != 97 && ver != 2000) printf("version 값을 정확히 지적하십시요
"); fclose(mdb); return 0; } Tags: access mdb 윈도우즈
|