标点符(钱魏 Way)

微信(ios)聊天记录导出到电脑

目前在推进的项目中要统计微信群的信息,先前采用微信信息同步的方式进行记录,但是一直会出现断线导致信息不全,于是研究可下是否可以将微信中的聊天记录导出到电脑然后再进行分析。以下是整理的一些信息:

创建 iPhone 备份

在未越狱的iphone,电脑无法访问除相册以外的其他文件夹,想要获取的聊天记录,可以从iphone的备份文件中获取,所以第一步现将手机中的信息备份到电脑上,具体的操作:

  1. 使用数据线将手机连接上电脑,如果是首次连接,需要选择信任该电脑。
  2. 打开 iTunes,找到正在连接的手机,在备份区域内,选择本电脑(取消 给iPhone备份加密 的勾选)。
  3. 点击 立即备份 并等待备份完成。

获取微信数据库

在完成了上一步备份操作以后,我们就可以在电脑中查看备份的文件了,备份文件存放地址:

  • Mac:~/资源库/Application Support/MobileSync/Backup/
  • Windows XP:\Documents and Settings\(用户名)\Application Data\Apple Computer\MobileSync\Backup\
  • Windows Vista、Windows 7 和 Windows 8: \用户\(用户名)\AppData\Roaming\Apple Computer\MobileSync\Backup\

备注:Mac下“~”代表您的个人文件夹。Windows下可键入 %appdata%,快速到达“Application Data”文件夹或“AppData”文件夹。进入备份目录后我们可以看到一些乱七八糟的文件夹及文件名:

从00、01开头的十六进制目录没有任何含义,只是为了让以hash值命名的文件分散到不同的目录中,防止同一目录下产生过多的文件,导致list文件夹时造成卡顿。文件夹名为文件名的前两位,以下为00目录下的文件截图:

以hash值命名的文件夹代表什么意思呢?能直接读取吗?其实这里对应的hash值文件夹对应的是备份文件的目录,对应关系可通过备份文件加下的Manifest.db查看。Manifest.db是一个sqlite数据库可使用一些sqlite工具直接打开,打开后可看到的信息如下:

可以看到中间包含了fileID、domain、relativePath、flags及file的对应关系。如何再打开hash值文件,暂时还没有更深入的研究。如果感兴趣的可以去:https://github.com/ciso/ios-dataprotection 看下,这里我使用的是第三方工具进行的读取。这里我使用的是itools。打开工具箱->iTunes 备份管理,然后选择你的备份文件进行操作。

微信的数据存储在:/var/mobile/Applications/com.tencent.xin中,

选择上Documents后选择导出,将所有Documents导出到桌面带进一步分析。

解析微信数据

Documents文档中包含如下文件:

其中数据主要存储在hash值的文件夹下,我这里是3abeb5a99e859dc8a3dcee4966542f94,如果你的手机有登录过多个微信,则这里就有多个文件夹。最要重要的文件夹:

  • DB目录:文本聊天记录
  • Audio目录:语音记录
  • Video:视频记录
  • Img:图片记录

我们来看下DB目录,其中MM.sqlite是最核心的内容。

使用sqlite工具打开MM.sqlite,可以查看到具体的信息:

Chat后面根的32位字符,其实是微信号对应的md5 hash值。即每一个人(群或公众号)的聊天记录保存一张表。

MM.sqlite,发现 Friend 表是空的。原因是微信已经将数据移到了WCDB_Contact.sqlite内。如果是微信群则user那么后统一带@chatroom

有了以上信息就可以自行进行导出数据的工具设计了。

参考链接:

码字很辛苦,转载请注明来自标点符《微信(ios)聊天记录导出到电脑》

评论