
C#破解access数据库密码方法
发布日期:2021-05-07 10:36:11
浏览次数:22
分类:技术文章
本文共 1984 字,大约阅读时间需要 6 分钟。
在Access 2000 数据库中,为了安全起见,可以为所建的数据库设置密码。但是,密码忘了怎么办?别急,这里介绍一种密码破解方法。
用磁盘编辑工具打开Access 2000 所建的数据库,在库文件的地址00000042处开始的40个字节是Access 2000库的密码位。如果一个未加密的库,这40个字节原始数据依次为:29 77 EC 37 F2 C8 9C FA 69 D2 28 E6 BC 3A 8A 60 FB 18 7B 36 5A FE DF B1 D8 78 13 43 60 23 B1 33 9B ED 79 5B 3D 39 7C 2A 。当你给数据库设置了密码后,这40个字节就变成了密钥。因此,要破解密码而不需保持原库的密码,只要将00000042 处开始的40个字节还原成原始数据就行了。要做到这一点,你可用磁盘编辑工具或将以下所附的程序稍加修改,把以上所列40个数据填到00000042开始处。 但是,有没有办法既能破解密码又能保持原密码呢?有。要做到这一点,必须搞清楚Access 2000库的加密原理。事实上,Access 2000库的加密原理很简单。当你设置了密码后,Access 2000 就将你的密码(请注意你所输入的密码是ASCII字符)的ASCII码与以上的40个字节数据进行异或操作,因此,从库文件的地址00000042开始的40个字节就变成了密钥了。例如,如果你设置的密码为12345678901234567890(注意:最多只能设20个ASCII字符),经过异或操作后,则从00000042处开始的40个字节的数据就变成了 18 77 DE 37 C1 C8 A8 FA 5C D2 1E E6 8B 3A B2 60 C2 18 4B 36 6B FE ED B1 EB 78 27 43 55 23 87 33 AC ED 41 5B 04 39 4C 2A 。大家都知道,一个数据经过一次异或操作后,再一次经过同样的异或操作就可还原了。因此,对已经设置了密码的Access 2000库,只要将40个密钥数据与原始的40个数据进行一次异或操作就可得到密码了。顺便提一下,由于ACCESS 2000对每个密码字符采用双字节表示,故40个字节原始数据可依次分为20组,每组代表一个密码字符,进行异或操作的是每组的第一个字节,第二个字节不变。//根据网上经验和方法用C#做一个破解程序
// 本程序最多取16位密码using System.IO;using System.Windows.Forms;class Access{ // 获取密码 static string GetPassword(string file) { // 未加密的文件0x42开始至0x61之前的每间隔一字节的数值 byte[] baseByte = { 0xbe,0xec,0x65,0x9c,0xfe,0x28,0x2b,0x8a,0x6c,0x7b,0xcd,0xdf,0x4f,0x13,0xf7,0xb1, }; byte flagByte = 0x0c; // 标志 0x62 处的数值 string password = ""; try { FileStream fs = File.OpenRead(file); fs.Seek(0x14, SeekOrigin.Begin); byte ver = (byte)fs.ReadByte(); // 取得版本, 1为Access2000, 0为Access97 fs.Seek(0x42, SeekOrigin.Begin); byte[] bs = new byte[33]; if (fs.Read(bs, 0, 33) != 33) return ""; byte flag = (byte)(bs[32] ^ flagByte); for(int i = 0; i < 16; i++) { byte b = (byte)(baseByte^bs[i*2]); if (i%2==0 && ver==1) b ^= flag; //Access 2000 if (b > 0) password += (char)b; } } catch {} return password; } // 主入口 static void Main() { OpenFileDialog f = new OpenFileDialog(); if (f.ShowDialog() != DialogResult.OK) return; MessageBox.Show("密码:[" + GetPassword(f.FileName) + "]", "密码"); }}发表评论
最新留言
哈哈,博客排版真的漂亮呢~
[***.90.31.176]2025年04月05日 08时08分33秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
基于LabVIEW的入门指南
2019-03-05
PCB布局系列汇总
2019-03-05
电容入门知识
2019-03-05
C++面向对象
2019-03-05
2019CCPC女生专场赛_K - Tetris_打表/模拟_暴力之王
2019-03-05
HDU1559(二维前缀和模板 Java&C++)
2019-03-05
“/”应用程序中的服务器错误。
2019-03-05
MUI之ajax获取后台接口数据
2019-03-05
使用sqlserver 查询不连续的数据
2019-03-05
用div+css+html+js 实现图片放大
2019-03-05
(原创)在Linux上安装运行Python3(CentOS7为例)
2019-03-05
快速学习汇编之 通用寄存器
2019-03-05
变量覆盖漏洞
2019-03-05
weblogic之cve-2015-4852
2019-03-05
Java注释
2019-03-05
水调歌头·1024
2019-03-05
对不起
2019-03-05
C++ 函数重载
2019-03-05
Nginx简介
2019-03-05