将 Android 上微信的聊天记录导出为 txt.
主要参考这两篇文章:
不需要做的事情大概有这样几点:
- 不需要将手机 root
- 不需要使用 Android Studio
- 不需要使用 re 管理器
- 不需要修改安卓虚拟机的 IMEI 码
需要做的事情整个步骤如下所述:
如果我们已经有手机的 root 权限,那我们可以直接在手机连接至计算机的情况下使用 adb
来将 /data/data/com.tencent.mm/MicroMsg
的某个 md5 子目录下的 EnMicroMsg.db
拷贝至计算机。
adb devices
adb shell
adb pull /data/data/com.tencent.mm/MicroMsg/xxxx/EnMicroMsg.db .
使用 adb devices
确认 adb
能够发现我们的手机,
adb shell
可以在交互式命令行下找到文件的具体位置,
然后使用 adb pull
来将对应位置处的文件从手机拷贝至计算机。
但是大概率我们是没有对手机做过 root 操作的,
除了冒险 root 手机之外我们还有其他的方法,那就是使用安卓模拟器。
这里我们使用 Genymotion
. 下载安装并运行 Genymotion
,并创建与手机型号一致的虚拟机。
因为虚拟机和真机的架构有点不同,为了安装微信 apk,我们需要下载与虚拟机相应版本的 ARM_Translation
,并拖拽至运行中的虚拟机进行安装。
把微信官网的 apk 拖拽至运行中的虚拟器中进行安装,这样有 root 权限的虚拟机上就可以运行微信了。
我们将手机上目标用户的微信聊天记录备份至计算机,然后在虚拟机上登录微信,并将聊天记录备份进行同步。
注意虽然聊天记录备份也是后缀为 .db
的文件 Backup.db
,但是我们无法用相同的方式打开查看。
现在我们使用 adb 将 /data/data/com.tencent.mm/MicroMsg/
处的 EnMicroMsg.db
文件拷贝至计算机。
这是一个加密的 SQLite 文件。
接下来我们使用 sqlcipher.exe 打开此数据库文件,但是需要输入相应的密码。
sqlcipher.exe 可以在这里下载:
密码的计算方式需要查看手机的IMEI 和 微信的 uid。
微信的 uid 通过 chrome 自带插件查看网页微信使用中产生的 Log:
而手机的 IMEI 可以通过在拨号键盘上输入: *#06#
最后将 IMEI 和 uid 进行拼接,并做MD5计算:http://tool.chinaz.com/tools/md5.aspx
在计算时使用 32位[小] 选项,取计算结果的前7位即是数据库文件密码。
至此,我们就可以愉快地查看数据库内容啦。
将 message
表里数据导出为 csv 就可以愉快地做数据分析了。