From: Brian B. <ca...@ai...> - 2003-05-21 21:24:27
|
David, Send me your sourceforge account name and I'll give you check in rights. Sorry I dont have time to merge the patches but I'm in the process of moving, ehh! Brian On Thu, 15 May 2003 da...@co... wrote: > > Hi Brian, > > This patch (on top of all of my other patches, 00 thru 18, which I can > resend to you if you want) implements handling of encrypted databases. > > The technique for encrypting databases by access appears to be as follows: > > - each data page except for page 0 (2k pages for jet3, 4k for jet4) is > encrypted separately using the RC4 algorithm and with a different key > > - the key can be obtained by XORing together the following: > > - the database key, found at offset 0x3e from the start of the file > - the 'unencrypted' key, found at offset 0x3e of any unencrypted > database (this appears to be 0x4ebc8afb when taking endianness > into account) > - the page number > > The existing code already extracted the database key, and XORed it with > the number 0xe15e01b9. I don't know where this number came from, but I > can imagine there may be more than one 'unencrypted' key. I added the rc4 > routines to src/libmdb/file.c. They could be replaced easily with calls > to openssl (the interface I used is almost identical to the openssl > routines). > > This works for the one encrypted database I needed to access. YMMV. > > David > > P.S. to enable other people to find this post with a search engine I > include the following keywords. I had a really hard time finding out > information about this topic. > > msaccess microsoft ac97 access97 mdb dbEncrypt CompactDatabase > > > |