access資料庫密碼找回方法詳解

來源:互聯網
上載者:User

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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.