视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
找回忘了的密码
2020-11-09 08:12:48 责编:小采
文档

在Access数据库中,为了安全起见,可以为所建的数据库设置 密码 。但是, 密码 忘了怎么办?别急,这里介绍一种 找回 密码 的方法。 用Access所建的数据库,在库文件的地址00000042处开始的13个字节是Access库的 密码 位。如果一个未加密的库,这13个字节原始

在Access数据库中,为了安全起见,可以为所建的数据库设置密码。但是,密码忘了怎么办?别急,这里介绍一种找回密码的方法。

用Access所建的数据库,在库文件的地址00000042处开始的13个字节是Access库的密码位。如果一个未加密的库,这13个字节原始数据依次为:86 FB 37 5D 44 9C FA C6 28 E6 13。事实上,当你设置了密码后,Access就将你的密码(请注意你所输入的密码是本文字符)的ACSII码与以上的13个字节数据进行异或操作,因此,从库文件的地址00000042开始的13个字节就变成了密钥了。例如,如果你设置的密码为abc,经过异或操作后,则从00000042处开始的13个字节的数据变成了E7 99 8F 37 5D 44 9C FA C6 28 E6 13。一个数据经过一次异或操作后,再一次经过同样的异或操作就可还原了。因此,对已经设置了密码的Access库,只要将13个密钥数据与原始的13个数据进行一次异或操作就可得到密码了。

以下是一个C语言的破解程序:

/*假设加密后的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 mml[13],mm2[13];

/*mm1用来存放加密后的13个密钥;mm2用来存放密码*/

int i,k;

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]^mm[i];*/原始数据与密钥异或*/

else

break;}

k=1;fclose(fp);

if(k=0)

printf(″未设密码!″);

else{printf(″\n密码是:\n″);

for(i=0;ibr>

printf(″%c,mm2[i]″);}}

顺便提一句,Access库设置密码时,虽然允许输入最多14个密码字符,但只有前13个有效。

下载本文
显示全文
专题