ACCESS辅导:找回密码原理

ACCESS辅导:找回密码原理,第1张

ACCESS辅导:找回密码原理,第2张

在Access数据库中,出于安全原因,可以为您构建的数据库设置密码。但是,忘记密码怎么办?别担心,这里有一个找回密码的方法。
在用Access构建的数据库中,库文件地址0000042的前13个字节是Access库的密码位。如果是未加密库,这13个字节的原始数据依次是:86 FB 37 5D 44 9C FA C6 28 E6 13。事实上,当您设置密码时,Access会将您密码的ACSII代码(请注意,您输入的密码是此文本的字符)与上述13个字节的数据进行异或运算。因此,库文件地址0000042的13个字节成为密钥。例如,如果设置密码abc,经过XOR运算后,0000042的13字节数据将变成E7998F375D449CFA628E613。在一个异或操作之后,数据可以通过相同的异或操作再次恢复。因此,对于设置了密码的Access库,只需对13个密钥数据和原始的13个数据进行异或运算就可以得到密码。
下面是一个C语言的破解程序:
/*假设加密的访问库是myacc.mdb,存放在驱动器C */
# include " stdio . h "
main()
{ file * FP
charmm 0[13]= { 0x 86,0xfb,0xec,0x37,0x5d,...。
/*这是13个原始数据*/
char MML [13],mm2[13];
/* MM1用于存储13个加密密钥;Mm2用于存储密码*/
int I,k;
FP = fopen(″c:\ \ myacc . MDB″,″Rb ″);
if(FP = null){
printf(" \ n无法打开该库!″);
退出(0);}
倒带(FP);fseek(fp,0x42L,0);
fread(mm1,13,1,FP);/*读取key */
for(I = 0;一. mm2[i]=mm0[i]^mm[i];*/原始数据与密钥*/
else
break进行异或运算;}
k = 1;fclose(FP);
if (k = 0)
printf("无密码!″);
else { printf(" \ n password is:\ n ");
for(I = 0;ibr> printf(″%c,mm2[I]″);}}
顺便说一下,在Access Library中设置密码时,虽然允许最多输入14个密码字符,但只有前13个有效。

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » ACCESS辅导:找回密码原理

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情