Mac版 + iPhone 微信聊天记录的获取

前言

最近尝试着做 IM 聊天的开发,因为没有多少实际经验,只能摸索着来,找一些作为参考:
微信肯定是最具权威得了,但现在获取微信的一些信息也要费一点功夫的,例如聊天记录的数据存储。

Mac版微信获取方法

今天在网上先看下Mac版微信聊天记录的获取方法:
首先 Mac版微信聊天记录数据库并不难找,很容易就找到了,但是都是经过加密的,目录如下:

‎⁨Macintosh HD⁩ ▸ ⁨用户⁩ ▸ ⁨用户名称 ▸ ⁨资源库⁩ ▸ ⁨Containers⁩ ▸ ⁨com.tencent.xinWeChat⁩ ▸ ⁨Data⁩ ▸ ⁨Library⁩ ▸ ⁨Application Support⁩ ▸ ⁨com.tencent.xinWeChat⁩ ▸ ⁨2.0b4.0.9⁩ ▸ ⁨86bef63f52ddf83be5e6c43765279994⁩> Message

也可以通过命令查看:

ls -alh ~/Library/Containers/com.tencent.xinWeChat/Data/Library/Application\ Support/com.tencent.xinWeChat///Message/*.db

macOS 微信的“备份与恢复”功能只能从手机微信导出到 Mac, 但是微信其实又在本地存了加密的 sqlite3 数据库; 本地数据库的是一系列 *.db 文件,如图:

image.png

经过大神观察,微信存数据使用的是开源的 sqlcipher, 所以还是有办法导出微信在 Mac 本机的数据库的, 今天试了一下在 目前最新的系统 macOS Mojave 10.14.5 MAC 版微信 2.3.16 测试是 OK的;

操作步骤:(此方法依赖于 LLDB 调试)

  1. 打开 Mac 端微信,先不要登录。
  2. 打开终端,输入命令:

lldb -p $(pgrep WeChat)

后回车,查看 微信进程的相关信息,会进入 lldb 的子shell界面。

  1. 在 lldb 子shell中输入命令

br set -n sqlite3_key

回车。

  1. 然后输入 c 回车。
  2. 然后登陆Mac版微信,手机允许登录,这时微信会卡着,没关系,影响后面的操作。
  3. 接着,入命令

memory read --size 1 --format x --count 32 $rsi

回车,读取内存中 寄存器 rsi 存储的值。会输出类似如下最下面的数据:

操作步骤

接下来就是要处理这里获取到的内容,去掉 : 之前的内存地址,把所有后面的两位字符拼接起来,再在前面加上Ox,我的方法是把这内容拷贝一下,地址手动删除,搜索 空格+0x 全部替换为空,然后拼接上就OK了。

如下的转换过程:

获取微信数据库加密 Key
0x6000024795c0: 0xf5 0x36 0x38 0xf3 0xf3 0xb4 0x40 0x43
0x6000024795c8: 0x8e 0xb7 0x84 0xef 0xd3 0x58 0xee 0xb8
0x6000024795d0: 0xb2 0xe3 0x65 0x2a 0xe6 0x88 0x4d 0xf2
0x6000024795d8: 0x9f 0x05 0xf9 0xa9 0x4f 0xf8 0xa2 0x88

结果:

0xf53638f3f3b440438eb784efd358eeb8b2e3652ae6884df29f05f9a94ff8a288

到这里基本上准备工作已经 OK了,接着就是安装软件了。

  • https://sqlitebrowser.org/ 下载Mac版本的 DB Browser for SQLite 并安装。
  • 打开 DB Browser for SQLite ,在菜单栏选择 打开数据库 ,在弹出的对话框中选择一个保存Mac版微信聊天记录的数据库文件 *.db,然后在 SQLCipher加密 的界面中,将密码方式设为 Raw key,将 Encryption settings 选为 SQLCipher 3 defaults,在密码输入框中输入上上一步中得到的66位字符串,点击 OK 按钮。

如图:

image.png

如果没有问题的话,你会看到这样的界面 :

image.png

恭喜你成功的打开了微信本地的数据库,接下来你就可以随意查看或者导出数据库中的数据了。

附:

开始第一次并没有成功,原因是 Raw Key 合成错了,还以为是DB Browser for SQLite 软件的问题呢,又安装了 Homebrew,重新安装一遍软件发现还是不行,回过头才发现 key 错了,走了一点弯路,所以要细心。

参考文章:

https://blog.csdn.net/swinfans/article/details/88712593

iPhone微信导出数据库

参考文章:

导出微信iOS数据库

亲测 OK,文章还有数据库的分析,可以参考学习一下。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 最近在做一个聊天的应用 刚好用到了数据库,看源代码是把所有的聊天消息都存储在一张表里的,对数据库不是很懂想着这样对...
    饥饿的野兽阅读 12,649评论 2 3
  • 因为老换电脑,故记录直接都是管理员权限1、升级Ruby环境这时应该输入: sudo gem update --sy...
    温学振阅读 491评论 0 1
  • 原因在于当执行以上两个命令的时候会升级CocoaPods的spec仓库,加一个参数可以省略这一步,然后速度就会提升...
    5c7a7cf606fc阅读 181评论 0 0
  • 1 趁今年还没过完,再给您讲几个故事。 故事一: 从前有个妹子,心地很善良,经常和小动物们说话。只是运气不太好,还...
    肖小跑阅读 616评论 2 5