分享
 
 
 

开发手记(四)——运用VB实战破解ACCESS密码

王朝c#·作者佚名  2006-12-17
窄屏简体版  字體: |||超大  

ACCESS与EXCEL都是OFFICE套件产品,但他们的加密方式完全不同。EXCEL利用的是DES加密技术,而ACCESS只是简单运用异或运算修改头文件中的若干位来达到加密的目的。

异或运算特性:一数经两次异或可以回到原值,特性举例:(A)XOR(B)=(C)同时(C)XOR(B)=(A),同理可以推出(C)XOR(A)=(B)。A代表ACCESS头文件中的若干位,B代表用户密码,C为经过加密的头文件的若干位的值。我们可以用ultraedit或VC以二进制方式打开原始ACCESS,记录下相关头文件的值,再打开加密后的ACCESS记录下相关头文件的值,两者再异或结果就是ACCESS的密码了。明白了原理后破解ACCESS的密码就很容易了。ACCESS在不同的版本中它的加密位也是不同的:ACCESS97的最大密码长度为13位,加密位是从头文件的67位开始至79位结束,未加密的这13位十六进制值为'86,FB,EC,37,5D,44,9C,FA,C6,5E,28,E6,13';ACCESS2000的最大密码长度为20位,加密位也是从头文件的67位开始至106位结束,未加密的这40位十六进制值为“20 6D EC 37 FB D2 9C FA 60 C8 28 E6 B5 20 8A 60 F2 02 7B 36 53 E4 DF B1 D1 62 13 43 69 39 B1 33 92 F7 79 5B 34 23 7C 2A ”,ACCESS2000采用的是40位中的低字节,如前两位二进制值为‘20 7D’,那么它的加密位为‘20’位。

解密最直接的方法是用原始头文件的相关位覆盖加密文件的相关位;也可以得用国外有名的免费软件ACCKEY,它只有361KB;但我们更愿意自己编写一个破解程序达到目的,这样更有成就感。

‘*****ShowPassWord.vbp----破解ACCESS密码*****

‘************(c)mi6236,2005,vb6.0 win2k*************

Option Explicit

Private Sub ShowPassWord_Click()

Dim password As String

Dim temp As Byte

Dim source97(12) As Byte

Dim source2000(39) As Byte

Dim i As Integer

'**********************************************************

'将未加密ACCSEE97中的67-79位的值并赋给数组source97()

'**********************************************************

source97(0) = &H86

source97(1) = &HFB

source97(2) = &HEC

source97(3) = &H37

source97(4) = &H5D

source97(5) = &H44

source97(6) = &H9C

source97(7) = &HFA

source97(8) = &HC6

source97(9) = &H5E

source97(10) = &H28

source97(11) = &HE6

source97(12) = &H13

'**********************************************************

'将未加密ACCSEE2000中的67-106位的值并赋给数组source2000()

'**********************************************************

source2000(0) = &H20

source2000(1) = &H6D

source2000(2) = &HEC

source2000(3) = &H37

source2000(4) = &HFB

source2000(5) = &HD2

source2000(6) = &H9C

source2000(7) = &HFA

source2000(8) = &H60

source2000(9) = &HC8

source2000(10) = &H28

source2000(11) = &HE6

source2000(12) = &HB5

source2000(13) = &H20

source2000(14) = &H8A

source2000(15) = &H60

source2000(16) = &HF2

source2000(17) = &H2

source2000(18) = &H7B

source2000(19) = &H36

source2000(20) = &H53

source2000(21) = &HE4

source2000(22) = &HDF

source2000(23) = &HB1

source2000(24) = &HD1

source2000(25) = &H62

source2000(26) = &H13

source2000(27) = &H43

source2000(28) = &H69

source2000(29) = &H39

source2000(30) = &HB1

source2000(31) = &H33

source2000(32) = &H92

source2000(33) = &HF7

source2000(34) = &H79

source2000(35) = &H5B

source2000(36) = &H34

source2000(37) = &H23

source2000(38) = &H7C

source2000(39) = &H2A

'读取命令对话框中所选的文件

CommonDialog1.ShowOpen

CommonDialog1.DialogTitle = '打开ACCESS数据库文件'

If (CommonDialog1.FileName = '' Or Mid(CommonDialog1.FileName, Len(CommonDialog1.FileName) - 2, 3) <> 'mdb') Then

i = MsgBox('您未选择文件或选择的文件不是ACCESS数据库文件', vbOKOnly + vbCritical, '注意')

Exit Sub

End If

Open CommonDialog1.FileName For Binary As #1

Get #1, 21, temp

If temp = &H0 Then‘判断ACCESS数据库的版本号

For i = 0 To 12

Get #1, 67 + i, temp '逐次读取头文件中67-79位放入temp中,并与source97中各元素异或返回密码

If temp = source97(i) Then Exit For '加密位读取完毕

password = password & Chr((temp Xor source97(i)))

Next

Close #1

If Len(password) = 0 Then

Text1.Text = '该数据库没有加密!'

Else

Text1.Text = '该数据库的密码为:' + password

End If

Else

If temp = &H1 Then

For i = 0 To 39 Step 2

Get #1, 67 + i, temp '逐次读取头文件中67-79位放入temp中,并与source2000中各元素异或返回密码

If temp = source2000(i) Then Exit For '加密位读取完毕

password = password & Chr((temp Xor source2000(i)))

Next

Close #1

If Len(password) = 0 Then

Text1.Text = '该数据库没有加密!'

Else

Text1.Text = '该数据库的密码为:' + password

End If

End If

End If

End Sub

是不是ACCESS真的这么脆弱呢,其实你完全可以在数据库头文件的其他固定位与已存储的固定数据位上做文章,如何做这个丰富的想象空间就留给朋友们了!

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有