程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Access數據庫 >> 關於Access數據庫 >> access數據庫密碼找回方法詳解

access數據庫密碼找回方法詳解

編輯:關於Access數據庫

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

    1. 上一頁:
    2. 下一頁:
    Copyright © 程式師世界 All Rights Reserved