防止Access2000密码被破译的方法

防止Access2000密码被破译的方法,第1张

防止Access2000密码被破译的方法,第2张

如果过于信任Access 2000数据库的密码保护,可能会吃亏。这是因为Access 2000的数据库级密码并不安全,相反它是脆弱的,甚至下面这个非常小的程序都可以破解:

程序一(VB6):Access 2000密码解密
Private子命令1 _ Click()[/Br/]const Offset = & H43文件偏移地址:Access数据库开始在这里存储加密的密码[/ Br/] dim b empty (1to2) asbyte,b pass (1to2) asbyte
dim i as 密码为字符串
打开a 空数据库以供参考
打开" D:\ VB6 _ Test \ Mdb _ password \ new _ empty _ db . Mdb "以二进制为# 1
打开受密码保护的数据库
打开" D:\ VB6 _ Test \ Mdb _ password \ Pass _ protected _ db . Mdb "以二进制为# 2
seek # 1,offset
seek # 2,offset
以I BEmpty '其中每个密码占用两个字节
Get #2,bPass '一个汉字只有一个密码,两个字节
if(boempty(1)xor bPass(1))0 then
password = password+chr(boempty(1)xor bPass(1))'解密密码
End if
next[/br 2
msgbox " password:"+password '显示密码
End Sub

一.深入分析

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

需要注意的是,上面的“创建日期”只是Windows记录在文件夹目录中的信息(根据文件名的长度,每个文件在目录中至少占用32个字节,包括文件名、属性、文件大小、前缀号、创建时间、修改时间、访问时间等。).
Access 2000还记录了数据库的“创建日期”。正是数据库中记录的这个“创建日期”加密了数据库密码。只有在成功打开数据库后,才能看到该日期。但一般来说,操作系统级和数据库中存储的“创建日期”是完全一样的,所以方便破译者。
上面的程序还有一点需要注意:为了简单起见,解密密码时只处理双字节的第一个字节,所以只对非中文密码有效。要解密汉字密码,必须处理双字节。

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » 防止Access2000密码被破译的方法

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情