用磁盘编辑工具打开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开始处。
1、进入数据库之后,选择创建。选择模板里的空白桌面数据库。
2、创建之后,在桌面的位置保持,并更改文件名。
3、一定要重新创建之后才能够设置密码。在数据库上的【文件】点击进入。
4、在【信息】可以看到【用密码进行加密】。
5、然后调出【设置数据库密码】,设置密码和验证。
6、设置密码之后调出【使用分组加密进行加密与行级别锁定不兼容】。
7、设置密码时候之后。双击数据库之后就要求输入密码才能打开。
新建表:首先打开或新建一个数据库,在该数据库上使用cdaotabledef的构赵函数定义一个对象,在调用create函数建新表,之后调用append函数加入数据库:void changeuserpassword( )
{
cstring strsystemdb =
_t( "路径" )
setsystemdb( strsystemdb )
// user name and password manually added
// by using microsoft access
cstring strusername = _t( "newuser" )
cstring stroldpassword = _t( "password" )
cstring strnewpassword = _t( "newpassword" )
setdefaultuser( strusername, stroldpassword )
changepassword( strusername, stroldpassword,
strnewpassword )
}
//设置默认用户和密码
void setdefaultuser(cstring &strusername, cstring &strpassword)
{
colevariant varusername( strusername, vt_bstrt )
colevariant varpassword( strpassword, vt_bstrt )
daodbengine* pdbengine = afxdaogetengine( )
assert( pdbengine != null )
// 设置默认用户
dao_check( pdbengine->put_defaultuser( varusername.bstrval ) )
// 设置默认密码
dao_check( pdbengine->put_defaultpassword( varpassword.bstrval ) )
}
///更改密码
void setdbpassword( lpctstr pdb, lpctstr pszoldpassword, lpctstr psznewpassword )
{
cdaodatabase db
cstring strconnect( _t( "pwd=" ) )
// 数据库必须打开
// 设置密码
db.open( pdb, true, false,
strconnect + pszoldpassword )
colevariant newpassword( psznewpassword, vt_bstrt ),
oldpassword( pszoldpassword, vt_bstrt )
dao_check( db.m_pdaodatabase->newpassword( v_bstr( &oldpassword ),
v_bstr( &newpassword ) ) )
db.close()
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)