| 導購 | 订阅 | 在线投稿
分享
 
 
 

找回忘了的密碼

2008-05-18 23:55:19  編輯來源:互聯網  简体版  手機版  移動版  評論  字體: ||

在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個有效。

  在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個有效。
󰈣󰈤
王朝萬家燈火計劃
期待原創作者加盟
 
 
 
>>返回首頁<<
 
 
 
 
 熱帖排行
 
王朝網路微信公眾號
微信掃碼關註本站公眾號 wangchaonetcn
 
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有