各位擅长数据分析方面的大侠.请进来!(200分)

  • 主题发起人 主题发起人 shirong
  • 开始时间 开始时间
S

shirong

Unregistered / Unconfirmed
GUEST, unregistred user!
各位擅长数据分析方面的大侠.

我正在写一个读出access数据库密码的软件,经过一番搜索和自己研究,得出了一些结果:
access数据库都是采取用密码(password)对文件头特定部位(密钥)进行异或得出,只要用
密钥对加密后的数据库特定部位进行异或即可求出密钥.
access97的密码为17位,存放在文件头42h开始的17个字节里,只要用
( $86, $FB, $EC, $37,
$5D, $44, $9C, $FA,
$C6, $5E, $28, $E6,$13 );
与之相异或即可得出密码.
access2000的密码与之不同,共有40位,实际只用到奇数位20个数字,经过研究,我发现这20个
数字不能用固定的密钥来解,密钥与mdb数据库创建时间有关,也就是说对于没有加密的数据库
来说,从42h开始的40个字节是根据时间来变化的.
比如今年8月份创建库密钥为
( $e0, $EC, $3b, $9C,
$a0, $28, $75, $8A,
$32, $7B, $93, $DF,
$11, $13, $a9, $B1,
$52, $79, $f4, $7C,$dc);}
而时间的标志则是在72h开始的7个字节中,比如
2002年9月7日, 19:33:36创建的数据库为cf fa ce 80 36 6e 82
2002年9月7日, 19:32:40创建的数据库为36 54 03 9b 36 6e 82

在时间推移过一段时间后密钥就会发生变化,可能是2个月时间左右.
我推测可能是用这7个字节对42h开始的40个字节进行处理得出新的密钥

我打印了几张数据库的头部16进制的表,打算分析出相应的规律,但是有一个月时间,发现自己
确实没办法.以前没有干过类似的活.实在是没有经验,有狗咬刺猬,无从下口的感觉
而且我白天还要上班,没时间分析,发帖子到几个网站上去问,只有看热闹的.我的英文又不好
没办法去老外的新闻组上灌水.
我也下了几个可以解出密码的软件分析,但是实在是看不出什么,因为这几个都是用vb编的
代码跳来跳去,唯一一个用delphi编的,又加了密,没法跟踪.
http://www.delphibbs.com/delphibbs/dispq.asp?lid=1264639这个连接也是我发的,如果有人
答出来,分一起给了!
 
文件的时间中的秒是两秒为单位的。因为文件时间一共用了32位。
00 second
01 second
02 second
03 second
04 second

05 minute
06 minute
07 minute
08 minute
09 minute
0A minute

0B hour
0C hour
0D hour
0E hour
0F hour

10 day
11 day
12 day
13 day
14 day

15 month
16 month
17 month
18 month

19 year
1A year
1B year
1C year
1D year
1E year
1F year
其中秒的字段只有五位,最大只能保存到31。
 
后退
顶部