避免Access 2000登陆密码被破解的方式

2021-03-17 15:15 jianzhan
假如你太过信赖 Access 2000数据信息库的登陆密码维护,ess 2000的数据信息库级登陆密码其实不安全性,反过来它很敏感,乃至下边这一段十分小的程序便可以攻克它:  程序一(VB6):Access 2000登陆密码破解 Private Sub Command1_Click() Const Offset = H43


一、深层次剖析
所述程序取得成功的重要是应用了一个空数据信息库(New_Empty_DB.mdb)。该数据信息库的建立时间务必与被登陆密码维护的数据信息库(Pass_Protected_DB.mdb)相一致。 也就是说,Access 2000 只是是应用“数据信息库建立时间”来数据加密客户登陆密码。


应留意的是:上边的“建立时间”仅仅实际操作级的,也便是 Windows纪录在文档夹文件目录里的信息内容(依据文档名的长度,每一个文档在文件目录里占有最少3两个字节数,包含:文档名、特性、文档尺寸、首蔟号、建立時间、改动時间和浏览時间等)。
Access 2000 在数据信息库文件也纪录了该数据信息库的“建立时间”。数据加密数据信息库登陆密码的更是数据信息库內部纪录的这一“建立时间”。该时间仅有在数据信息库被取得成功开启后才可以见到。但在一般状况下,实际操作系统软件级的及其数据信息库内储存的“建立时间”是彻底一样的,因而这为破解者出示了便捷。
所述程序中也有一点必须表明:为简要考虑,解密登陆密码时仅解决了双字节数的首字节数,因而它仅对非中国汉字登陆密码合理。若要解密中国汉字登陆密码,须对双字节数均做解决。
二、预防对策
1、掩藏“建立时间”
从上边的剖析能看出,即然“建立时间”是破解的重要,那麼大家应“对症治疗下药”,将真正的“建立时间”掩藏起來。
第一步,建立数据信息库时,应用一个“不能思议的、他人不容易猜想”的时间。作法为:改动 Windows系统软件时间,比如改成202六年0五月十五日,建立数据信息库后再将系统软件时间改回。这一“不能思议”的时间即是该数据信息库的真正“建立时间”。
第二步,改动实际操作系统软件级的“建立时间”。所述第一步进行后,该数据信息库在实际操作系统软件级的建立时间也是202六年0五月十五日,务必多方面改动,以做到掩藏真正建立时间的目地。改动实际操作系统软件级的“建立时间”能够由下边的程序二进行。

程序二(VB6):改动文档在实际操作系统软件级的“建立时间”
Private Type FILETIME
dwLowDateTime As Long
dwHighDateTime As Long
End Type
Private Type SYSTEMTIME
wYear As Integer
wMonth As Integer
wDayOfWeek As Integer
wDay As Integer
wHour As Integer
wMinute As Integer
wSecond As Integer
wMilliseconds As Integer
End Type
Private Const GENERIC_WRITE = H
Private Const OPEN_EXISTING = 3
Private Const FILE_SHARE_READ = H1
Private Const FILE_SHARE_WRITE = H2
Private Declare Function SetFileTimeWrite Lib "kernel32" Alias _
"SetFileTime" (ByVal hFile As Long, lpCreateTime As FILETIME, _
ByVal NullP As Long, ByVal NullP2 As Long) As Long
Private Declare Function SystemTimeToFileTime Lib "kernel32" _
(lpSystemTime As SYSTEMTIME, lpFileTime As FILETIME) As Long
Private Declare Function CreateFile Lib "kernel32" Alias "CreateFileA" _
(ByVal lpFileName As String, ess As Long, ByVal _
dwShareMode As Long, ByVal lpSecurityAttributes As Long, ByVal _
dwCreationDisposition As Long, ByVal dwFlagsAndAttributes As Long, _
ByVal hTemplateFile As Long) As Long
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) _
As Long
Private Declare Function LocalFileTimeToFileTime Lib "kernel32" _
(lpLocalFileTime As FILETIME, lpFileTime As FILETIME) As Long
Private Sub Command1_Click()
Dim Year As Integer, Month As Integer, Day As Integer
Dim Hour As Integer, Minute As Integer, Second As Integer
Dim TimeStamp As Variant, Filename As String, X As Integer
Year = 2001: Month = 3: Day = 13 提前准备设置的“建立时间”
Hour = 12: Minute = 0: Second = 26
TimeStamp = DateSerial(Year, Month, Day) + TimeSerial(Hour, Minute, Second)
Filename = "D:\VB6_Test\MDB_Password\Pass_Protected_DB.mdb" 总体目标文档名
X = ModifyFileStamp(Filename, TimeStamp)
End Sub
Function ModifyFileStamp(Filename As String, TimeStamp As Variant) As Integer
Dim X As Long, Handle As Long, System_Time As SYSTEMTIME
Dim File_Time As FILETIME, Local_Time As FILETIME
System_Time.wYear = Year(TimeStamp): System_Time.wMonth = Month(TimeStamp)
System_Time.wDay = Day(TimeStamp)
System_Time.wDayOfWeek = Weekday(TimeStamp) - 1
System_Time.wHour = Hour(TimeStamp): System_Time.wSecond = Second(TimeStamp)
System_Time.wMilliseconds = 0
X = SystemTimeToFileTime(System_Time, Local_Time)
X = LocalFileTimeToFileTime(Local_Time, File_Time) 变换成能用的种类
Handle = CreateFile(Filename, GENERIC_WRITE, FILE_SHARE_READ Or _
FILE_SHARE_WRITE, ByVal 0 , OPEN_EXISTING, 0, 0) 开启文档
X = SetFileTimeWrite(Handle, File_Time, ByVal 0 , ByVal 0 ) 设定时间
CloseHandle Handle 关掉文档
End Function
图三显示信息的是数据信息库的真正“建立时间”及其经程序二掩藏的实际操作系统软件级的“错觉”时间。


能看出,掩藏“建立时间”的方式对破解者来讲仅仅扩大了破解的工作中量,提升了破译实验的频次。仅有将该方式与以下的“方式二”紧密结合,才可以做到“既治标又标本兼治”的实际效果。但是在一一样的状况下“方式一”已够用,由于假如破解者起止应用的检测时间与最后的真正时间相距百年老,他必须努力数十万次的勤奋!
2、应用客户级安全性体制
根据设定不一样的客户账号和组账号多数据库文件的各种各样資源开展管理权限管理方法。这类提升了的安全性体制尽管给平时应用(特别是在是单客户应用)产生了麻烦,但在有安全性安全隐患的地区仍然有设定的必需。
设定各种各样账号及相对管理权限的简易方式是应用“设定安全性体制指导”(见图四)。图四还显示信息了安全性体制起动后应求客户登陆的界面。


三、结果
说白了“道高一尺魔高一丈”,由于这世界上并沒有肯定的安全性。所述方式一的目地是提升破解的成本费以做到平常人无法接纳的水平;而方式二的初心是提升登陆密码的总数。二种方式的融合得以使破解者望而生畏。但是这其实不寓意着百分之百的安全性。但从观念上提升安全性观念,防范于未然,这终究是恰当的挑选。

共享到:
ess 2000登陆密码被破解的方式"由远航网站站长搜集梳理而成,仅作大伙儿学习培训与参照应用。大量网站建设实例教程尽在远航网站站长站。