超简单:mac导出微信聊天记录(附上粉丝群全部聊天记录)

之前给大家详细讲解过如何用小米手机导出微信聊天记录:

godweiyang:微信聊天记录导出为电脑txt文件教程

今天再给大家讲解一下如何直导出mac版本微信的聊天记录,当然如果你没有mac,那可以直接关闭这篇文章了。

文末附上了我粉丝群的全部聊天记录文件,大家可以看个乐呵,也可以拿去处理处理做成数据另供它用。

聊天记录位置

首先我们要知道,mac微信的聊天记录都以数据库的形式保存在下面目录:

~/Library/Containers/com.tencent.xinWeChat/Data/Library/Application\ Support/com.tencent.xinWeChat/xxx/yyy/Message/*.db

所以我们只需要拿到这个目录下的所有形如msg_0.db的数据库文件即可,但是都是加密的,所以我们要想办法拿到它们的密码。

破解密码并打开数据库

  1. 打开mac微信,但是不要登录。
  2. 打开终端,输入sudo lldb -p $(pgrep WeChat)。这时候可能会报错:error: attach failed: cannot attach to process due to System Integrity。不要慌,重启mac电脑,黑屏后一直按住Command+R,直到出现恢复模式界面。点击顶部Utilities菜单,然后打开终端。最后输入csrutil disable; reboot等待重启,重新执行开始的命令就行了。
  3. 进入lldb的子shell后,输入br set -n sqlite3_key,回车。
  4. 输入c,回车。
  5. 这时候会弹出微信登录界面,登陆就行了。登陆后可能会卡住,进不去微信,但不用管,继续下面的操作。
  6. 继续在lldb的子shell中输入memory read --size 1 --format x --count 32 $rsi,这时会输出类似如下信息:
0x000000000000: 0xab 0xcd 0xef 0xab 0xcd 0xef 0xab 0xcd
0x000000000008: 0xab 0xcd 0xef 0xab 0xcd 0xef 0xab 0xcd
0x000000000010: 0xab 0xcd 0xef 0xab 0xcd 0xef 0xab 0xcd
0x000000000018: 0xab 0xcd 0xef 0xab 0xcd 0xef 0xab 0xcd
  1. 用python处理上面的输出信息:
source = """
0x000000000000: 0xab 0xcd 0xef 0xab 0xcd 0xef 0xab 0xcd
0x000000000008: 0xab 0xcd 0xef 0xab 0xcd 0xef 0xab 0xcd
0x000000000010: 0xab 0xcd 0xef 0xab 0xcd 0xef 0xab 0xcd
0x000000000018: 0xab 0xcd 0xef 0xab 0xcd 0xef 0xab 0xcd
"""
key = '0x' + ''.join(i.partition(':')[2].replace('0x', '').replace(' ', '') for i in source.split('\n')[1:5])
print(key)

# 输出为:0xabcdefabcdefabcdabcdefabcdefabcdabcdefabcdefabcdabcdefabcdefabcd

此时的输出就是数据库的密码raw_key,一定要记住。 8. 下载打开数据库的软件DB Browser for SQLite,地址:

https://sqlitebrowser.org/dl/
  1. 打开软件,打开数据库,选择上一小节中提到的形如msg_0.db的数据库文件。然后会让你输入密码,记住选择raw keySQLCipher 3 defaults,这时候就能正常打开了。

导出聊天记录并分析

打开数据库后,可以看到有200多张表格,每张表格就是你和一个人的单聊记录或者一个群组的聊天记录。

v2-cc81fdb77f5f6229b5170fb9070656ed_b.jpg


选择文件-导出-表到json,全选所有的表格,就可以将所有的聊天记录导出为json文件了。

再打开msg1.dbmsg_2.db等类似数据库,全部导出到一个文件夹下。

然后用任意ide打开这个文件夹,我用的是vscode。然后就可以根据你想导出的人的聊天记录中的某条语句,全局搜索它在哪个文件中。

然后就可以用下面代码将聊天记录转换成txt文本文件了:

import json

fin = open("Chat_6ea1007e9a74fd049e11be33700d8dfd.json", "r")
fout = open("group.txt", "w")

results = json.load(fin)
for dic in results:
    if dic["messageType"] == 1:
        content = dic["msgContent"]
        if dic["mesDes"] == 1:
            msg = content.strip().split(":\n")[1].replace("\n", " ").replace("\r", " ")
        else:
            msg = content.strip().replace("\n", " ").replace("\r", " ")
        fout.write("{}\n".format(msg))

最后用我之前介绍过的词云就可以分析聊天记录里最常出现的词语是什么了,代码地址如下:

github.com/godweiyang/w

给大家看看我的粉丝群里最活跃的一位粉丝都爱说些什么:

v2-3988a836fcec8539bd0d9fd0f97f2c07_b.jpg

你还可以用导出的文本数据干很多事,比如训练一个聊天机器人。代码我也开源出来了,不过你得先自己处理好训练数据:

github.com/godweiyang/c

粉丝群全部聊天记录

我把我粉丝技术交流群一共10w多条聊天记录导出来了,从2020.5.5开始的,因为是群聊,所以也就直接公开了。在我公众号【算法码上来】后台回复「666」获取。

参考链接

blog.csdn.net/swinfans/
jianshu.com/p/09a4c1f7c

  • 0
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

算法码上来

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值