ACCESS数据库密码破解方法

ACCESS数据库密码破解方法,第1张

ACCESS数据库密码破解方法,第2张

在Access 2000数据库中,出于安全原因,可以为您构建的数据库设置密码。但是,忘记密码怎么办?别急,这里有一个密码破解方法。
用磁盘编辑工具打开Access 2000构建的数据库。从库文件的地址0000042开始的40个字节是Access 2000库的密码位。如果是未加密的库,这40个字节的原始数据是:29 77 EC 37 F2 C89FA 69 D2 28 E6 BC 38A 60 FB 18 7b 36 5A FEDF B1 D8 78 13 43 60 23 B1 33 9ED 79 53D 39 7C2A。当您为数据库设置密码时,这40个字节成为密钥。所以,要破解密码而不保留原库的密码,只需要将0000042开始的40个字节恢复成原始数据即可。为此,您可以使用磁盘编辑工具或稍微修改下面的附加程序,以填写0000042开头的上述40个数据。
但是,有什么办法既能破解密码,又能保留原密码呢?是的。为此,我们必须了解Access 2000库的加密原理。其实Access 2000库的加密原理很简单。当您设置密码时,Access 2000会将您密码的ASCII码(请注意,您输入的密码是ASCII字符)与上述40个字节的数据进行异或运算。因此,从库文件的地址0000042开始的40个字节成为密钥。比如你的密码是12345678901234567890(注意:最多只能设置20个ASCII字符),经过异或运算,那么从00000042开始的40个字节的数据就变成了18 77 DE 37 C1 c8 A8 fa 5d 2 1E e 6 8 b 260 c 2 18 4b 36 feed B1 EB 78 27 43 55 23 87 33 AC ED 41 504 39 4c 2a。众所周知,在一次异或运算之后,一个数据可以再次被相同的异或运算恢复。因此,对于已经设置了密码的Access 2000库,只需对40个密钥数据和原始的40个数据进行异或运算就可以得到密码。
顺便说一下,由于ACCESS 2000使用双字节来表示每个密码字符,所以40字节的原始数据可以依次分成20组,每组表示一个密码字符,每组的第一个字节进行异或运算,第二个字节保持不变。
//根据网上的经验和方法用C#制作一个破解程序
//这个程序使用System最多可以取16个密码
。木卫一;
使用系统。Windows . Forms
class access
{
/Get The password
static string Get password(string file)
{//未加密文件的0x42到0x61的每个字节的值
byte[] baseByte = { 0xbe,0xec,0x65,0x9c,0xfe,0x28,0x2b,0x8a,0x6c,0x7b,0xcd,0xdf,0x4f,0x13,0f7,0xb1,};
byte flag byte = 0x0c;//标志0x62
string password = \"\ "处的值;
try
{
FileStream fs = File。OpenRead(文件);
fs。Seek(0x14,SeekOrigin。begin);
byte ver = (byte)fs。read byte();//获取版本,1是Access2000,0是Access 97
fs.seek (0x42,seek origin . begin);
byte[] bs =新字节[33];
if (fs。读(bs,0,33)!= 33)返回\ " \ ";
byte flag =(byte)(bs[32]^ flag byte);
for(int I = 0;i < 16i++)
{
byte b =(byte)(basebyte^bs[i*2]);
if (i%2==0 && ver==1) b ^=标志;//Access 2000
if(b > 0)password+=(char)b;
}
}
catch { }
返回密码;
}
/main入口
静态void main()
{
openfile dialog f = new openfile dialog();
if (f.ShowDialog()!=对话结果。OK)退货;
MessageBox。Show(\ "密码:[\ "+get password(f . filename)+\ "]\ ",\ " password \ ");
}
}

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

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情