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

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

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

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

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

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

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

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

3、QQ数据迁移到Tim

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

其实在2017的时候,我因为换手机小米双开应用的QQ数据需要备份而研究过QQ应用的数据文件。有兴趣的可以参考一下:http://bbs.ydss.cn/thread-1033912-1-1.html (这篇文章最后没有写关闭selinux,因为我当时手机默认是Permissive 权限)

闲话说了不少,我们来说一下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 没仔细看,有聊天气泡之类的资源,最好一起备份

还有

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

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

二、备份方法

大家都知道在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双开数据到/sdcard/backups/com.tencent.mobileqq.tgz 这个压缩包文件了采用的gzip压缩,且完整的备份了文件的权限。

三、还原方法

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

//进入QQ应用数据目录

cd /data/data/com.tencent.mobileqq

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

结果如下:

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

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

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

//修改所有者

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

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

查看selinux权限状态命令:

getenforce

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

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

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

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

我是本机直接备份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数据的导入功能。

参考来源:

对于如何永久关闭selinux权限

http://www.miui.com/thread-9137678-1-1.html

MIUI8双开、分身、分身下的双开应用的数据位置

http://www.miui.com/thread-4295910-1-1.html

2016/01/13/手机QQ聊天记录破解/

http://caiyao.name/2016/01/13/%E6%89%8B%E6%9C%BAQQ%E8%81%8A%E5%A4%A9%E8%AE%B0%E5%BD%95%E7%A0%B4%E8%A7%A3/

用Python解密手机QQ聊天记录 - FreeBuf互联网安全新媒体平台 | 关注黑客与极客

http://www.freebuf.com/articles/terminal/68224.html

QQ和微信聊天内容读取解密

http://www.fenlog.com/post/75.html

安卓微信数据库解密

http://www.fenlog.com/post/82.html

用Python解密手机QQ聊天记录

http://www.legendsec.org/838.html

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

  1. elasticsearch数据备份还原

    elasticsearch数据备份还原 1.在浏览器中运行http://XXX.XXX.XXX.XXX:9200/_flush,确保索引数据能保存到硬盘中. 2.原数据的备份.主要是elasticse ...

  2. MongoDB数据备份还原,及docker中MongoDB备份还原

    一: MongoDB数据备份 在Mongodb中我们使用mongodump命令来备份MongoDB数据.该命令可以导出所有数据到指定目录中. mongodump命令可以通过参数指定导出的数据量级转存的 ...

  3. QQ聊天记录分析(R-3.5)

    对QQ聊天记录的分析 数据来源:博主的某个学习群,直接导出聊天记录到文本 #导入算法包 > if(!require("stringr")){install.packages( ...

  4. android qq登录分析,[原创]对QQ手游授权登录的一点分析

    1.前言 最近无事玩王者,发现某些租号平台可以直接通过自身的APP打开腾讯的游戏进行登录,于是对这一登录过程做了简单的分析 2.QQ打开游戏的简单分析 发现不管是IOS还是Android都可以在QQ里 ...

  5. 使用“QQ聊天记录专家2007”查看QQ聊天图片案例

    使用"QQ聊天记录专家<?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttag ...

  6. Outlook应用指南(1)——数据备份还原技巧

    Outlook中存储了日常工作所需的重要数据,因此,Outlook数据的及时备份也就显得尤为重要.一般情况下,Outlook中的数据都是通过PST文件进行存储和备份的. PST文件(Personal ...

  7. 达梦数据备份还原(物理逻辑)

    1 达梦数据库备份还原简介 数据库备份是DBA日常最重要的工作内容. DM 数据库的备份还原包括两种类型:物理备份还原和逻辑备份还原. 1.1 概念理解 物理备份 物理备份详细官方解释:物理备份还原是 ...

  8. SqlServer 2019 数据备份还原教程(图文)

    一.数据备份 选择数据库右键选择任务-备份 二.数据还原 1.在数据库右键选择还原文件和文件组 2.手动输入 要恢复的数据库名称 3.点击选项 选择覆盖现有数据库-确认-等待还原 4.还原成功-刷新 ...

  9. MySQL学习笔记(七)—— 数据备份还原

    数据安全 - 数据备份 一.数据库备份的概念 1.数据库备份类型 2.数据库备份方式 3.数据库备份场景 二.mysqldump命令备份单库或者多库 mysqldump使用语法: 三.MySQL的数据 ...

  10. 微信QQ聊天记录分析工具-微Q

    1.背景 忙了一周,从设计算法到编程,到部署服务器,到最后的UI实现,终于我的微Q诞生了. 用起来非常的简洁,只要把微信或者qq的聊天记录导出来,是个txt文件,导入微Q,手机端也能用,它就能帮你分析 ...

最新文章

  1. 一位群友作为后端开发在滴滴和头条分别干了 2 年的经验总结
  2. python 实现文本搜索_python根据BM25实现文本检索
  3. 加快发展设施业 农业大健康-林裕豪:从玉农业践行基础支撑
  4. leetcode--113.路径总和 Ⅱ
  5. bash脚本 文件_如何使用Bash脚本来管理从AWS S3存储桶下载和查看文件
  6. mac安装win10_mac制作win10启动盘教程
  7. 并发编程-concurrent指南-线程池ExecutorService的使用
  8. Oracle(二):查询、函数、集合运算
  9. 用户不在sudoers文件中,此事将被报告
  10. 精心整理全网最全Tomcat面试专题及答案(共19题,含答案解析),tomcat面试看这篇就够了!
  11. oracle+日誌語句,oracle维护常用sql语句
  12. linux下wps的字体缺失解决方法
  13. python long转int_将 python long/int转换为固定大小的字节数组_others_酷徒编程知识库...
  14. 读InfoGan文章
  15. 使用qq邮箱作为程序客户端自动发送邮件
  16. PRSice-2软件安装教程
  17. Python爬虫 爬取新浪微博热搜
  18. springboot 使用mybatis-plus 配置乐观锁。
  19. ubuntu启动两个mysql_同一台Ubuntu 启动多个mysql
  20. 怎样让android系统消失,谷歌本以为断供安卓可以让华为手机消失,结果断送了安卓系统的前程...

热门文章

  1. MySQL(19)-----日期和时间函数
  2. Python规范:用用assert
  3. python调用window dll和linux so例子
  4. Django评论系统
  5. .net 获取邮箱邮件列表和内容
  6. Matlab中struct的用法
  7. 电力设计手册_10KV及以下供配电设计与安装图集
  8. tqdm的版本问题导致tensorflow_datasets无法加载
  9. apache-apollo Dockfile 镜像制作
  10. RHEL6 开启远程桌面