美文网首页ios开发小知识
获取Mac 微信聊天记录

获取Mac 微信聊天记录

作者: 饥饿的野兽 | 来源:发表于2019-07-26 18:07 被阅读0次

    最近在做一个聊天的应用 刚好用到了数据库,看源代码是把所有的聊天消息都存储在一张表里的,对数据库不是很懂想着这样对查询会不会很慢呢?但是又没有师傅请教,所以就想着看一下微信的私聊消息是怎么存储的。刚好看到一篇博客有写怎么获取Mac微信聊天记录,所以就写下来记录一下。

    感谢原文作者

    MacOS版本的微信的聊天记录保存在如下路径中的数据库文件中:

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

    这些数据库文件都是 sqlcipher 数据库的文件,是加密过的,要解密并读取加密的数据库,可以按照本文的方法进行操作。

    1. 打开Mac版微信,但是不要登陆。
    2. 在命令行下输入命令 lldb -p $(pgrep WeChat) 后回车,会进入 lldb 的子shell界面。
    3. 在 lldb 子shell中输入命令 br set -n sqlite3_key ,回车。
    4. 再输入 c ,回车。
    5. 然后登陆Mac版微信。(此时,Mac版微信可能会暂时无响应,这不影响后续的操作)
    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
    

    把0x 去掉 得到一个表示16进制数的66位的字符串,这个字符串就是下一步要用到的保存微信聊天记录的数据库的 raw_key。

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

    如果以上操作都无错误,那么将会成功打开数据库。

    感谢原文[作者]https://blog.csdn.net/swinfans/article/details/88712593

    相关文章

      网友评论

        本文标题:获取Mac 微信聊天记录

        本文链接:https://www.haomeiwen.com/subject/uonrrctx.html