elvain 发表于 2020-4-17 16:08:02

access文件解密求助

本帖最后由 elvain 于 2020-4-22 22:26 编辑

本人PJ小白,刚到本论坛,看到各位大神的神作{:victory:},非常仰慕,特发帖求助,
背景:    1、 我目前在PC上使用某工程app,该app有彩虹加密狗。去年软件开发商对该app进行了升级。
    2、app升级前,导出的项目数据为old.mdb;app升级后导出的项目数据为new.mdb。   
    3、old.mdb可直接导入升级前的app中使用,new.mdb无法直接导入升级前的app使用,old.mdb文件和new.mdb文件均可直接导入升级后的app中使用。
         为此,软件开发商提供了一个数据库转换小插件,可以将new.mdb转换为old.mdb. 但该转换插件有bug,转换出来的old.mdb部分字段数据有错位{:funk:}。

    4、app升级前,我以老格式数据old.mdb为基础搞了个 web端的二次开发,方便同事干活。

症状:
   1、我提供的附件压缩包中有两个access数据文件,其中old.mdb文件为老版本格式数据文件,new.mdb文件为新版本格式数据文件。

   2、old.mdb文件没有密码,可以直接打开看到表和字段的数据;new.mdb文件有密码,密码为EA770F4F,输入密码打开后看不到任何表和字段,奇怪{:dizzy:}。

   3、new.mdb只要输入密码打开过,就无法用转换小插件转换了,奇怪{:dizzy:}。不知道它是通过什么来判断的,通过文件访问时间戳???我尝试手动修改文件访问时间戳,似乎不起作用。

   4、我起初怀疑软件开发者将new.mdb中的自建表隐藏起来了,但是查看new.mdb的系统表sysobjects时,看不到用户建表的名字.

   5、我用winhex查了一下new.mdb的文件头信息,显示standard jet db,确认new.mdb确实是access 2000格式文件

   6、后来,我用winhex打开转换小插件,可以看到ado及sqlite等文本信息,我怀疑开发者采用了把sqlite伪装成mdb的方法对new.mdb进行了加密,但我用winhex将new.mdb的文件头信息修改为sqlite3时,任然无法用sqlite数据库软件打开。

需求:
    app升级前,我在老格式数据库类似old.mdb基础上,用python+flask+pyodbc 搞了个二次开发的web程序。现在app升级后,由于无法直接读取识别new.mdb,原来的二次开发不起作用了。

    如前所述,虽然软件开发商提供了转换小插件,但转换小程序有bug,而且软件开发商现在不再对转换小程序进行维护,收了钱不办事啊{:cry:},所以我在二次开发时,不能采用转换后的old.mdb.

    我希望各位大神帮助解密new.mdb,尤其是对access加密比较熟悉的大神。我希望了解new.mdb是如何加密的,也就间接知道如何解密了。   

    各位大神若能提供解决办法,或有益的思路,必重谢!!!


这个论坛比较好啊,发帖后不到10分钟就有朋友回复,根据需求,特上传转换小插件,请帮忙分析一下,谢谢{:lol:}由于论坛长传附件有大小限制,将转换插件分了两个压缩包上传,下载的时候,必须全部下载,谢谢


Ps:经过这段时间捣鼓,发现new.mdb确实是由一个空白mdb文件+加密的db文件合成,现已查明空白mdb文件应该为106512字节大小,运行时,插件会校核106512字节内容是否匹配。目前看来能够释放出db文件,但db文件是怎么加密的暂时搞不清楚,请各位大神指教!{:handshake:}




飘云 发表于 2020-4-17 16:18:16

你需要对转换程序进行逆向分析~

elvain 发表于 2020-4-17 16:33:14

本帖最后由 elvain 于 2020-4-17 16:35 编辑

飘云 发表于 2020-4-17 16:18
你需要对转换程序进行逆向分析~
能得到坛主的回复,真是万分荣幸啊,我把转换插件上传了,方便的话,能否帮忙看一下啊{:handshake:}
我对逆向这一块,确实不熟啊{:cry:}

ecjtu 发表于 2020-4-18 12:19:24

Microsoft.Jet.OLEDB.4.0;Data Source=%s;User Id=Admin;Jet OLEDB:DataBase Password=7413A5C7..Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s;User Id=Admin;Jet OLEDB:DataBase Password=EA770F4F..crash in initTransfer at step %d..


应该是还有一个数据库你没有找到(打开密码是7413A5C7)

elvain 发表于 2020-4-18 17:10:14

ecjtu 发表于 2020-4-18 12:19
Microsoft.Jet.OLEDB.4.0;Data Source=%s;User Id=Admin;Jet OLEDB:DataBase Password=7413A5C7..Provider ...

麻烦您帮忙看一下,直接用插件将new.mdb就可以转换为old.mdb          7413A5C7是不是old.mdb的密码


我猜测new.mdb 是将一个空mdb文件和某一种格式的数据文件合并后形成的access文件

飘云 发表于 2020-4-18 17:21:59

elvain 发表于 2020-4-17 16:33
能得到坛主的回复,真是万分荣幸啊,我把转换插件上传了,方便的话,能否帮忙看一下啊
我 ...
为此,软件开发商提供了一个数据库转换小插件,可以将new.mdb转换为old.mdb. 但该转换插件有bug,转换出来的old.mdb部分字段数据有错位
你发的转换工具不能对附件的new.db进行转换,也就是看不到你说的错位的数据~~~,估计传错了吧~~


老久不玩Windows了,直接逆向解出来给你吧~








sky2 发表于 2020-4-18 19:01:07

兄弟,能得老飘坛主亲自回复搞定,你这个几率可以去买彩票了{:lol:}

elvain 发表于 2020-4-18 19:13:28

sky2 发表于 2020-4-18 19:01
兄弟,能得老飘坛主亲自回复搞定,你这个几率可以去买彩票了

是呀,我也是感到大吃一惊,比中奖了还开心,小弟何德何能让坛主垂青{:shy:}。能得各位老法师指点,已是感激涕零。
只是我才疏学浅呀,对逆向这一块没进门,只会捣鼓python.{:cry:}





elvain 发表于 2020-4-19 17:26:55

飘云 发表于 2020-4-18 17:21
你发的转换工具不能对附件的new.db进行转换,也就是看不到你说的错位的数据~~~,估计传错了吧~~




老大,不好意思打扰了,感谢你帮我解了数据{:victory:},但这只是我其中一个项目的数据啊,sql server总库里会导出很多类似的项目数据,如果我不知道加密原理或解密方法,还是搞不定啊。
老大,能否百忙之中,抽空解释一下加密解密思路啊,动态逆向确实不会啊{:cry:}。
另外你说的插件用不了,我从论坛下载到一台几乎全新的电脑上可以用啊(没有装过我平常使用的工程软件)

liuties 发表于 2020-4-20 19:16:53

看的我有点迷糊了
页: [1] 2
查看完整版本: access文件解密求助