微信数据导出。(IOS 无加密)

内容分享8小时前发布 DunLing
0 0 0

code:https://github.com/Sunmile/study_note 我的代码笔记中 MMsaver

exe:http://download.csdn.net/detail/oadam/5691847

exe使用说明:

1. 运行程序名为: GuiMMsaver.exe

2. 点击右边select键,在弹出文件夹选择框中找到从手机中搞出来的Documents文件夹,Documents下应该要有一串md5码名的文件夹,然后里面有Audio, Img, DB等文件夹。点确认。(其实我的设计是选择那串md5码的,但有小bug无法识别,下个版本修改。)

3. 等待。(没做进度条……)选中主窗体中的头像,(可多选)然后点击右边的export即可。

注: 程序会在程序所在路径下建立output文件夹,然后放置转出的数据。(如果原来有,会删掉)

注2:如果说话比较多的话,amr转mp3需要比较多的时间。

working:

1. 首先是数据转到电脑。

  本人iPhone,懒得越狱。方法是itunes中选择本电脑备份。然后安装iPhoneBackupExtractor可以识别备份文件。他会自动找默认的备份位置,所以我懒得透露iPhone备份文件夹了。

  这个iPhoneBackupExtractor免费版只能一次导出2个文件,果断下破解版。

  http://pan.baidu.com/share/link?shareid=544292&uk=4228181989

  导出Application中的com.tencent.xin文件夹,一般有上千个文件吧。

  导出后会有Application文件夹。

 

2. 第二个问题是找到数据文件。

  这个度娘知道,在Application/com.tencent.xin/Documents/一串md5码/DB/MM.sqlite

  这是一个sqlite数据库文件,我的是2M多。随便找个sqlite浏览器阅读,发现里面大部分是Chat_一串md5。

  录音在 md5码/Audio下,一串串md5为名字的文件夹。

  图片在 类似位置 在 Img下

 

3. 那一串串的长长的编码。

  当然一开始我不知道这些是md5,是反查才发现这些是以微信号为素材的md5码。

  而录音和图片则是弱爆了的顺序排放。记得上一个版本是全部文件放在一起的,现在的是一个chat,如果有素材,就创建一个以其md5码为名字的文件夹。

  所以现在很简单了,就是在数据库中找到 微信名 计算md5 以及一些查表工作,就能完成任务,打到目标。

 

4. 考虑使用xhtml,这样在提供浏览功能的同时,方便以后的信息转移。

 

5. 文件格式

  这里还有一个问题。Img中的图片是以pic为后缀的jpeg图片,这个改名为jpg就行。但是Audio中却不行,这里以前是amr格式的,其实现在还是,多谢http://bbs.weiphone.com/read-htm-tid-6261163.html,弱爆了的微信小组真的是为了省空间吗?在现在的*.aud文件首行插入新行 #!AMR ,就可以改名成为amr可以播放了。

 

6. 数据库

  6.1 MM.sqlite中似乎储存了所有的资料了。其中以”chat_”开头,后面接md5编码的表(我把这个md5编码称为user_md5),储存的就是你和这个user的聊天信息。

  6.2 上述的user包括两部分:

    6.2.1 表Friend中的user,这里的user是微信好友,包括公众帐号和聊天室。聊天室是'一串数字+”@chatroom” '为微信号。

    6.2.2 表QQContact中的user,这里是QQ好友。user=qq号+”@qqim”。

  6.3 chat_”user_md5″表的分析。

    随意弄个sqlite browser就能看了,我不详细说这个的结构了。

    6.3.1 列名MesLocalID: 编号,好像是primary key来着。这个很重要,因为是图片和音频的文件名!

    6.3.2 列名CreateTime: POSIX标准的时间,即从1970年到当时的秒数。

    item输出顺序可以是上述中的一个。我用ID号,省事。

    6.3.3 列名Message: 信息主体。

    6.3.4 列名 status 和 des :des: 0表示自己发的 1表示服务端发来   status: 2表示自己发的 4表示服务端发来

        有两个 感觉好神奇。

    6.3.5 列名 Type: 

      10000:qq10000号大家懂的。此时message中就是系统消息。

      49: app应用类吧?(包括qq音乐什么的)此时message中是xml格式的信息。我是直接放弃掉了。

      47: 有emoji表情,猜测都是表情。抛掉。

      42: 内置应用?名片?  之类的我不关心的内容。

      34: Voice。核心之一了,不过我不关心message信息了这时,直接连接到ID.aud就是。

      3: Img。同样操作。ID.pic

      1: 文本信息。(如果是聊天室(即”*@chatroom”),在那个人说的话前会有他的微信号加上冒号换行(user:
),而自己说的没有,所以要通过des判断。或者不对他进行分解。)

 

7. 补充 

  把Application/com.tencent.xin/Documents/一串md5码/ 这个md5码目录称为用户目录。

  则用户目录下有Usr文件夹,里面是pic_them后缀的文件,改名.jpg就是头像了。而文件名是usr_md5。这个头像看起来比手机里大。

 

8.  我的做法是:

  8.1 提出所有”chat_”开头的表名。这个可以通过'select name from sqlite_manager where type=”table” '得到。 储存为chat_dict

  8.2 从Friend, QQContact中,提出所有user(btw,那里有个nickname我也提出了),计算user对应user_md5。 储存为md5_dict

  8.3 拷贝Usr文件夹,顺路改名。

  8.4 对chat_dict中每一个表进行操作:

    8.4.1 建立聊天记录文件夹,以user_md5[0:7]+user_nickname作为文件夹名。nickname可能重名。

    8.4.2 拷贝Img和Audio中的文件,顺路改名以及添加amr头。

    8.4.3 创建html文件,对表中每一行

      8.4.3.1 写一个时间,用time模块转换CreateTime。

      8.4.3.2 写一个说话人,wo, user_nickname 。  如果是群里的话,要获得message中说话的微信号,然后转为nickname。

      8.4.3.3 写信息主体,文字,图片,或者音频。(这里音频我只给了一个超链接,因为还没找到html播放amr的办法。)

 

9 不足:

  9.1 现在的寻找用户目录的方式,是判断目录下有没有'Img', 'Audio', 'DB'这三个目录。并且会沿着Application, com.tencent.xin, Document寻找。然后搜索Document下第一个符合要求的文件夹 作为用户目录。

    以后要做一个gui程序给小白们用。并以这个gui调用主程序。(这样应该就做不了进度条了吧?算了对小白不用太好)

  9.2 html写得很丑,至少写一个css来弄得美一些嘛。

  9.3 html文件可能会比较大。我的破机子打开html载入图片痛苦的一B。考虑按item数或者时间分解成多个html,index只是导航而已。

© 版权声明

相关文章

暂无评论

none
暂无评论...