当前位置: 首页 > news >正文

网站建设栏目分级网站建设与管理就业岗位

网站建设栏目分级,网站建设与管理就业岗位,二次元wordpress博客主题,重庆微网站开发公司关于Access97的密码破解#xff0c;在很多的网站和杂志上都有过介绍。在这里我简单重复一下。 在mdb文件第0x42字节处的13个字节分别与0x86,0xfb,0xec,0x37,0x5d,0x44,0x9c,0xfa,0xc6,0x5e,0x28,0xe6,0x13异或后即可得到数据库的密码。但在Access 2000和2002的版本里密钥不再是…  关于Access97的密码破解在很多的网站和杂志上都有过介绍。在这里我简单重复一下。 在mdb文件第0x42字节处的13个字节分别与0x86,0xfb,0xec,0x37,0x5d,0x44,0x9c,0xfa,0xc6,0x5e,0x28,0xe6,0x13异或后即可得到数据库的密码。但在Access 2000和2002的版本里密钥不再是固定的13个字节.而且加密的方式也有了变化。 经过ccrun用一下午的时间研究终于将Access2000的加密方式搞清楚了。嘿嘿。在此将偶的心得发布。希望对大家有用如果您发现我的理解有误请来信告之我们。信箱infoccrun.com 版权虽然有没有都没关系不过如果您要转载请注明出处并保证文档的完整性。谢谢。 我用的分析工具是UltraEdit32 v10.00编程工具是C Builder 6.0 经过用UltraEdit32分析发现Access2000和Access2002的数据库加密方式相同所以以下只针对Access2000的mdb文件。还有就是我用的是16进制的数表示所以前面加了0x如果你用的是VB或其他要注意数值哦。 首先用AccessXP创建了一个空密码的数据库文件db1.mdb包含一个表其中有一个字段没有填任何数据。保存退出然后复制一份为db2.mdb以独占方式打开2.mdb并加上密码1324567890123 保存退出。 用UltraEdit32打开这两个数据库并进行比较。我比较的方法也很简单。在UltraEdit32中快速的来回点击被打开文件的选项卡(就是在两个文件间来回切换呵呵。笨办法吧)发现从文件头开始0x42字节处发生变化。 db1.mdb 00000040hBC 4E BE 68 EC 37 65 D7 9C FA FE CD 28 E6 2B 25 00000050h 8A 60 6C 07 7B 36 CD E1 DF B1 4F 67 13 43 F7 3C 00000060hB1 33 0C F2 79 5B AA 26 7C 2A 4F E9 7C 99 05 13 db2.mdb 00000040hBC 4E 8F 68 DE 37 56 D7 A8 FA CB CD 1E E6 1C 25 00000050h B2 60 55 07 4B 36 FC E1 ED B1 7C 67 13 43 F7 3C 00000060hB1 33 0C F2 79 5B AA 26 7C 2A 4F E9 7C 99 05 13 为了看的清楚些我把不同的字节加了颜色。看出门道了吧Access97以后的版本里密码字节不再是连续存放而是隔一个字节存一个。并且经过加密。到于解密的方法嘛还是用老办法“异或”0xBE ^ 0x8F 0x31这正好是Ascii码1哦。下一个0xEC ^ 0xDE 0x32 正好是Ascii码2呵呵。一直到最后一个不同的0x4F ^ 0x7C 0x33将取得的字符合成字符串便是密码明文“1234567890123千万不要以为这样就收工了。因为这一次是正好碰对了。呵呵。我刚开始也以为就这么简单于是用CB做了个小程序试着解了几个mdb密码都还行可是试到动网论坛的mdb文件时发现取出来的密码不对晕了。于是用另外一个取mdb密码的工具看了一下发现人家的就可以正确的取出密码是Access2000的格式于是感觉微软加密的方式还是没研究完。继续工作用UltraEdit32打开动网论坛的数据库dvbbs.mdb和我前面的加过密的数据库做比较发现不同的地方很多。只好一个字节一个字节的试。。。。nnn次以后发现第0x62处的这个字节起着关键作用暂称之为加密标志。 db1.mdb //空密码 00000040hBC 4E BE 68 EC 37 65 D7 9C FA FE CD 28 E6 2B 25 00000050h 8A 60 6C 07 7B 36 CD E1 DF B1 4F 67 13 43 F7 3C 00000060hB1 33 0C F2 79 5B AA 26 7C 2A 4F E9 7C 99 05 13 db2.mdb //密码为:1234567890123 00000040hBC 4E 8F 68 DE 37 56 D7 A8 FA CB CD 1E E6 1C 25 00000050h B2 60 55 07 4B 36 FC E1 ED B1 7C 67 13 43 F7 3C 00000060hB1 33 0C F2 79 5B AA 26 7C 2A 4F E9 7C 99 05 13 dvbbs.mdb //密码为:yemeng.net 00000040hBC 4E DB 6A 89 37 14 D5 F9 FA 8C CF 4F E6 19 27 00000050h E4 60 15 05 0F 36 D1 E3 DF B1 53 65 13 43 EB 3E 00000060hB1 33 10 F0 79 5B B6 24 7C 2A 4A E0 7C 99 05 13 怎么试呢还是异或。取0x42处开始的字节0xDB与空密码文件的0x42处字节异或取0x62处的加密标志与空密码文件0x62处字节异或然后再把取得的两个值相异或 (0xDB^0xBE)^(0x10^0x0C)0x79 嘿嘿。这个值是Ascii的y然后取下一个字节记得隔一个字节取一个 (0x89^0xEC)^(0x10^0x0C)0x79 咦本来这个字节应该是e的怎么变成y了试着不与后面的两个异或值相异或只计算0x89^0xEC0x65 得到e,哈。这下对了。下一个 (0x14^0x65)^(0x10^0C)0x6D 得到m下一个 (0xF9^9C)0x65 得到e注意这里只是这两个数异或。后面的大家可以自己试。 这样就总结出规律来了。 解密时先取出加密文件从文件头开始0x62处的字节与空密码数据库文件第0x62处相异或得到一个加密标志。 再从0x42处开始每隔一个字节取一个字节取得13个加密后的密码字节分别与空密码数据库文件0x42处每隔一个字节取得的13个字节想异或得到13个密码半成品。为什么说是半成品呢因为还要将13个字节的密码每隔一个字节就与加密标志相异或最后得到的13个字节才是真正的密码。当然如果中间有0x0的字节则说明密码位数不够13位。直接show出来就可以了。 另外我发现加密标志会随着时间或机器不同而不同所以也没有万能的不过有一个参照的就可以了。以下代码是我在写这个程序的时候取得的数和我写这篇文章不是一个时间所以数值不一样但最终解密的结果是一样的。大家可以参考一下。 对了还有个重要的就是先得判断数据库的版本我用了个简单的办法取0x14处的字节如果为0就判断为是Access97如果为1就认为是Access2000或2002的。只是目前没有研究出判断2000和2002的办法如果哪位知道的话请指点。 代码 //这里定义的是13个字节作为Access2000异或的源码。与之相对应的加密标志是0x13ccrun特此注明 //当然你可以用这一组 BE EC 65 9C FE 28 2B 8A 6C 7B CD DF 4F 与这一组相对应的加密标志是0x0c //呵呵.程序有些乱希望大家能看的懂。 char PassSource2k[13]{0xa1,0xec,0x7a,0x9c,0xe1,0x28,0x34,0x8a,0x73,0x7b,0xd2,0xdf,0x50}; //Access97的异或源码 char PassSource97[13]{0x86,0xfb,0xec,0x37,0x5d,0x44,0x9c,0xfa,0xc6,0x5e,0x28,0xe6,0x13}; void __fastcall TMainForm::GetMdbPass() { char PassStrTemp[26],Ver,EncrypFlag,t1; int FileHandle; String MdbPassword,MdbVersion,MdbFileName; FileHandleFileOpen(MdbFileName,fmOpenRead); if(FileHandle0) { ShowMessage(文件打开错误); return; } //取得数据库版本 FileSeek(FileHandle,0x14,0); FileRead(FileHandle,Ver,1); //取得加密标志 FileSeek(FileHandle,0x62,0); FileRead(FileHandle,EncrypFlag,1); //读取加密后的密码到缓冲区 FileSeek(FileHandle,0x42,0); FileRead(FileHandle,PassStrTemp,26); FileClose(FileHandle); if(Ver1) { MdbVersionAccess 97; if(int(PassStrTemp[0]^PassSource97[0])0) MdbPassword密码为空!; else { MdbPassword; for(int j0;j13;j) MdbPasswordMdbPasswordchar(PassStrTemp[j]^PassSource97[j]); } } else { MdbVersionAccess 2000 or 2002; MdbPassword; for(int j0;j13;j) { if(j%20) t1char(0x13^EncrypFlag^PassStrTemp[j*2]^PassSource2k[j]); //每隔一个字节就与加密标志相异或。这里的加密标志为0x13 else t1char(PassStrTemp[j*2]^PassSource2k[j]); MdbPasswordMdbPasswordt1; } } if(MdbPassword[1]0x20||MdbPassword[1]0x7e) MdbPassword密码为空; EditMdbFileName-TextMdbFileName; EditMdbPassword-TextMdbPassword; EditMdbVersion-TextMdbVersion; } ccrun原创来自C Builder 研究 http://www.ccrun.com
http://www.hkea.cn/news/14360697/

相关文章:

  • 不用dw怎么做网站新手做网站
  • 泰安网站建设如何网上找工程平台有哪些
  • 驾校网站制作网站建设亿码酷出名5
  • 软件开发项目总结报告seo优化方案设计
  • 建设企业网站企业网银网页制作电脑软件
  • 高校学校网站建设石家庄微网站建设公司哪家好
  • 外包公司做网站的流程如何给自己的公司网站做优化
  • 做网站需要什么准备seo基础教程使用
  • 有什么网站是做企业型的绍兴网页设计
  • 海南省建设网站的公司网站平台建设实训总结
  • 做网站买什么服务器潜江资讯网招聘信息最新
  • flash 网站源码广告艺术设计学的是什么
  • 网站如何做等级保护wordpress七牛
  • 北京网站制建设公司华容网站定制
  • 做直播网站需要学什么北京网站开发培训
  • 无锡网站制作哪家正规服务器安装WordPress没有权限访问
  • 企业手机网站源码电脑培训零基础培训班
  • 手机上上建设网站敏捷开发项目管理工具
  • 个人 做自媒体 建网站创意网站
  • 综合门户网站建设设计素材免费下载
  • 邯郸网站建设地方建立企业网站的费用
  • 定西建设厅网站网站是用dw做的吗
  • 做盗版视频网站wordpress获取文章的标签
  • 免费行情软件网站下载wordpress中常用插件安装包
  • 网站建设与管理 第2版做旅游网站的要求
  • 做好的网页上传到wordpress前端seo优化
  • 免费网站模板html网站跳转qq
  • 无锡企业网站排名怎样才能建立自已的网站
  • 重庆网站推广系统重庆国外网站推广
  • 医院网站和微信公众号建设方案漫画网站建设教程视频