• +86 400-9955-698
  • support@vinchin.com
logo
关于我们

技术分享

技术分享 QQ聊天记录分析(换新机QQ数据备份还原/Tim迁移)

QQ聊天记录分析(换新机QQ数据备份还原/Tim迁移)

2020-05-11

因为很多原因需要备份/导出手机QQ的聊天记录。最近因为腾讯推出了TIM,大部分用户转用TIM,在手机上几年的聊天记录很难转移,因为腾讯不开放聊天记录转移的方案。

 

最近在酷安网看到一个 “QQ聊天记录导出” 和“微信聊天记录导出”的软件,看了一下他备份的包就是普通的zip备份了QQ应用数据的databases文件夹。(/data/data/com.tencent.mobileqq/databases)。

 

针对这个软件不做过多评价。软件有一个缺陷,就是备份时候没有备份数据库聊天记录的密钥,在更换新手机或者手机修改、重置(重写)IMEI/MEID时候备份的数据库再还原就失效了,没有正确的密钥是无法解密聊天记录的(备份的聊天记录也就无法再还原了)。

 

    对于大部分的品牌机,可以选择使用系统自带的备份还原/新旧手机同步功能来同步QQ的应用数据。(也可以使用钛备份来实现备份还原)。

        有条件使用钛备份和系统自带备份还原的可以止步于此。

    本文主要目的是针对以下 几种情况:

        1、应用双开数据(小米应用双开)

        2、手机分身的数据备份、迁移

        3、QQ数据迁移到Tim

    这些数据都无法通过品牌机自带的备份还原功能(钛备份也无法实现)实现备份还原的。

 

其实在2017的时候,我因为换手机小米双开应用的QQ数据需要备份而研究过QQ应用的数据文件。有兴趣的可以参考一下:

闲话说了不少,我们来说一下QQ数据该如何备份吧。

 

 

首先以下操作手机需要先ROOT,没有ROOT一切都是白话。甚至需要修改boot.img再重新刷入。本人只做方案描述,由于操作引起的任何后果概与本人无关。数据无价,操作之前最好备份数据(系统自带备份功能或者TWRP备份整个data分区)。

 

一、需要备份的文件

针对手机QQ/TIM(和qq一模一样)数据文件的分析过程就不赘述了,我直接说我的成果。

 

在/data/data/com.tencent.mobileqq目录下存放着手机QQ的数据文件,目子目录比较多,包括腾讯的聊天气泡、表情包、qq空间、VIP等杂七杂八的东西,大部分目录都是没有什么作用的,删除后会自动生成。

其中有用的目录有三个:

databases QQ聊天记录数据库(qq号码.db)

files QQ登录鉴权信息 和 数据库密钥文件 imei kc两个文件是密钥文件

share_prefs 没仔细看,有聊天气泡之类的资源,最好一起备份

还有

certconfig、两个目录不知道干什么的,也可以一起备份。

(我是整个/data/data/com.tencent.mobileqq目录一起备份还原,这样聊天图片、语音什么都还在。如果只是做QQ迁移TIM建议不要全部备份,只备份上述几个文件夹就行,有时候需要适当的删除多余的文件,可以自行对比QQ和TIM的数据目录差异,因为新版本的TIM和QQ已经有不少差异了。)

云祺QQ聊天记录分析(换新机QQ数据备份还原/Tim迁移)

云祺QQ聊天记录分析(换新机QQ数据备份还原/Tim迁移)

二、备份方法

大家都知道在android4.4以及之前的系统备份应用数据很简单,直接用一些手机助手备份就OK,但是现在这样备份却无效了,原因是在android5.1之后系统加入了SELinux权限,有兴趣的可以自行百度。

    大家都知道在windows上数据文件备份还原只需要复制一份替换就OK了,但是在android中这样是不行的,android底层是linux系统,其中涉及到的权限问题包括:

        1、普通的读写权限  常见的 -rw -r-r

         2、文件所有者            root system u0_125等等

        3、SElinux上下文权限    

 

备份除了需要备份文件本身之外,还需要备份文件权限、selinux权限。还原的时候需要修改应用数据的所有者(不同手机的同一个应用所有者不同)。

对于如何备份selinux的权限上下文我也不是很清楚,我反正没备份,直接关闭selinux权限

如果手机不支持tar命令请先安装busybox自行百度。

 

我是直接用root权限执行tar备份的,命令如下:

cd /data/data/com.tencent.mobileqq        //进入QQ的数据目录 微信改成 com.tencent.mm就行,其他应用自己去获取包名

tar cvpzf /sdcard/backups/com.tencent.mobileqq.tgz *      //tar备份QQ数据到sd卡

云祺QQ聊天记录分析(换新机QQ数据备份还原/Tim迁移)

云祺QQ聊天记录分析(换新机QQ数据备份还原/Tim迁移)

这样就备份QQ双开数据到/sdcard/backups/com.tencent.mobileqq.tgz 这个压缩包文件了采用的gzip压缩,且完整的备份了文件的权限。

三、还原方法

将备份文件复制到你要还原新手机的/sdcard/backups 目录

//进入QQ应用数据目录

cd /data/data/com.tencent.mobileqq

ls -l //查看应用所有者

结果如下:

云祺QQ聊天记录分析(换新机QQ数据备份还原/Tim迁移)

 

 

应用所有者为u999_a118,不同手机的所有者不同,请自行查看!!!!

//解压缩备份数据到QQ数据包

tar xvpzf /sdcard/backups/com.tencent.mobileqq.tgz -C /data/data/com.tencent.mobileqq/ 

云祺QQ聊天记录分析(换新机QQ数据备份还原/Tim迁移)

 

云祺QQ聊天记录分析(换新机QQ数据备份还原/Tim迁移)

//修改所有者

chown -R u999_a118:u999_a118 /data/data/com.tencent.mobileqq

到了这里。如果直接打开QQ,还是无法获取聊天记录的,因为现在手机默认都是开启了selinux,所以QQ没有权限获取数据。对于如何修复selinux权限,我也不是很清楚,建议是直接关闭selinux权限。

云祺QQ聊天记录分析(换新机QQ数据备份还原/Tim迁移)

查看selinux权限状态命令:

getenforce

如果返回:Enforcing 表示开启了selinux

如果返回:Permissive 表示selinux不起作用

setenforce 0 //将selinux权限设置为Permissive

云祺QQ聊天记录分析(换新机QQ数据备份还原/Tim迁移)

当selinux权限是Permissive 时候启动QQ这时候QQ就能正常启动,看到还原的聊天记录。

云祺QQ聊天记录分析(换新机QQ数据备份还原/Tim迁移)

我是本机直接备份QQ数据还原到TIM,这样两个应用的数据是一样的,聊天记录完美~登录鉴权没过期,两个应用可以同时在线,可以同时接收消息(如果换个手机还原,那么两个手机可以同时收消息)。当然这个鉴权一天左右就会过期,到时候就有一个被踢下线了。

 

 

总结:

1、旧手机 tar备份QQ数据目录

2、新手机 ls -l /data/data/com.tencent.mobileqq 查看要还原的手机的,QQ应用的所有者

2、新手机 tar解压还原QQ数据目录

3、新手机 chown -R 修复QQ数据文件所有者为QQ应用

4、新手机 关闭selinux权限

5、启动QQ即可

 

针对QQ聊天记录转移到TIM,在备份完毕后把还原解压目录改为Tim的目录/data/data/com.tencent.tim,其他照常执行就行了(新版本可能只需要保留databases和files两个文件夹,share_prefs需要删除里边部分文件,自己分析,其他文件夹可以不还原/可删除)。

 

本文关闭selinux是临时关闭,重启后会是失效,需要再次执行命令关闭selinux,如果要永久关闭selinux需要修改boot。也可以下载个app每次开机自动关闭selinux。

 

 

    想自己研究导出聊天记录为文本的可以看一下参考来源。注意:参考文档页面涉及到一些推广的查看聊天记录软件,本人不做任何评价。自己去考量。

 

    另外还可以将旧手机的聊天数据,导出直接写入到新手机的数据文件中,就像电脑上QQ数据导入一样,会编程的朋友可以自己研究下参考来源,解密旧手机QQ的sqlite数据库文件,再用新手机的密钥加密导入到新手机的sqlite数据库,将新的db复制到新手机,修改权限即可完成QQ数据的导入功能。

 

 

  • 标签:
  • 其他

您可能感兴趣的新闻 换一批

现在下载,可享30天免费试用

立即下载