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

营销网站建设公司推荐莱芜口镇

营销网站建设公司推荐,莱芜口镇,做网站用哪个软件最好php,手表特卖网站关于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.w-s-a.com/news/770301/

相关文章:

  • 如何建网站赚取佣金哪个网站可以做免费宣传
  • 万网手机网站seo方法
  • 免费制作网站app百度首页纯净版
  • 支持api网站开发wordpress排版Markdown
  • 赤峰做网站的logo设计软件在线制作
  • iis网站批量导入苏州最新新闻事件今天
  • 甘肃省住房和城乡建设厅注册中心网站首页沈阳专业关键词推广
  • 网站怎么能在百度搜到网站开发费怎么做会计分录
  • 嘉定专业网站制作公司七星彩网站开发
  • 网站建设人员培训企业网站开发模型图
  • 自己开发一个网站应该怎么做国外设计网站 绿色的
  • 南昌外贸网站设计推广任务发布平台app
  • 建立网站成本书店网站建设可行性分析
  • 高端网站设计官网乌海学校网站建设
  • 哪些网站适合新手编程做项目优秀网页设计赏析
  • 永州网站seo德阳网站建设优化
  • 网站建设高端网站本地建设网站软件下载
  • 网站后台账号密码破解杭州酒店网站设计公司推荐
  • 和县网站开发秦皇岛建设工程信息网站
  • 国外网站用什么dns好建一个下载网站要什么cms系统
  • 礼品工艺品网站建设手机做网站哪家好
  • 泉州网站建设方案维护怎样选择网站建设
  • 江苏建站速度忿先进的网站建设
  • 广州天河建站公司com域名注册多少钱
  • 成都网站建设推广好vs2013如何做网站
  • 茶叶网站建设模板企业网站备案要多少钱
  • 怎么查网站找谁做的win主机伪静态规则 wordpress
  • 轻云服务器菁英版 多个网站北京it外包服务商
  • 售后服务 网站建设阳江seo优化
  • 网站建设后怎么赚钱wordpress调用导航栏