/*假设加密后的Access库为myacc.mdb,并存放在C盘的根目录下*/ #include "stdio.h" main() { FILE *fp; char mm0$[$13$]$={0x86,0xfb,0xec,0x37,0x5d,0x44,0x9c,0xfa,0xc6,0x5e,0x28,0xe6,0x13}; /*这是13个原始数据*/ char mm1$[$13$]$,mm2$[$13$]$; /*mm1用来存放加密后的13个密钥;mm2用来存放密码*/ int i; fp=fopen("c:\\myacc.mdb","rb"); if(fp==NULL){ printf("\n不能打开该库!"); exit(0); } rewind(fp); fseek(fp,0x42L,0); fread(mm1,13,1,fp); /*读取密钥*/ for(i=0;i<13;i++){ mm2$[$i$]$=mm0$[$i$]$^mm1$[$i$]$; /*原始数据与密钥异或(XOR)*/ if (mm2$[$i$]$==mm0$[$i$]$) break; } fclose(fp); if(i==0) printf("未设密码!"); else { printf("\n密码是:\n"); for(i=0;i<13;i++) printf("%c,mm2$[$i$]$"); } } |