无root使用termux提取微信聊天记录

参考文章:

  • http://www.520monkey.com/archives/845
  • https://blog.greycode.top/page/2/
  • https://zhuanlan.zhihu.com/p/616008078
  • https://blog.csdn.net/weixin_39517298/article/details/119006820
  • https://github.com/103style/android-database-sqlcipher/tree/master?tab=readme-ov-file
  • https://zhuanlan.zhihu.com/p/627266063
  • https://blog.csdn.net/u012132482/article/details/117898462
  • https://blog.csdn.net/weixin_39517298/article/details/119006820

准备工作

(当前微信版本是8.0.45)

  • 小米手机未root,root了的机器更简单
  • SQLite编辑器应用
  • termux
  • MT管理器或NP管理器

第一步 备份微信聊天记录

  • 使用手机自带的备份功能备份,文章以小米手机为例
    • 以小米手机为例,设置->搜索"备份"->选择"备份与恢复"->手机备份与恢复
    • 选择备份微信应用的数据
      无root使用termux提取微信聊天记录_第1张图片
      无root使用termux提取微信聊天记录_第2张图片

第二步 找到备份文件位置

  • 小米手机备份位置/storage/emulated/0/MIUI/backup/AllBackup/20240120_212521/微信(com.tencent.mm).bak
    无root使用termux提取微信聊天记录_第3张图片

第三步 termux使用7zip解压文件(可以跳过不解压)

  • 如果不需要所有的文件,可以跳过这步
  • 解压步骤:
# 命令行执行
apt update 
apt install p7zip
termux-setup-storage # 获取外置存储卡权限,获取之后会有storage/目录
7z x '~/storage/shared/MIUI/backup/AllBackup/20240120_212521/微信(com.tencent.mm).bak' -o ''~/storage/shared/0'  # -o 后面时解压后的目录,请自行修改
# 解压过程中可能会报错,不用管,等待解压结束

第四步 找到关键文件

  • 在压缩包中或解压后的目录中搜索以下三个文件,存放到某个文件夹下
  EnMicroMsg.db:加密数据库。登过多个微信就会有多个
  app_brand_global_sp.xml:多个uin码,登过多个微信就有多个,找到下面标签,string标签内即为uin码
      
        xxxxxxxxx
        xxxxxxxxx
      ,
  auth_info_key_prefs.xml: 最后一次登录用户的uin码,找到标签 ,value值即为uin码,有-号不要删除
  • 提示微信文件过大,可能搜索时间过长,可以先找到auth_info_key_prefs.xml,找到uin码

  • 找个在线md5网站(如:https://www.sojson.com/md5/),输入mm+uin,比如你的uin是123456,然后搜索后面加密的值即为这个用户记录存储的根目录

无root使用termux提取微信聊天记录_第4张图片

第五步 获取当前手机的IMEI串号

  • 小米手机在拨号界面输入*#06#
    无root使用termux提取微信聊天记录_第5张图片

第六步 获取数据库密码

  • 打开第4步的md5网站,用imei+uin计算md5,然后去结果的前7位小写即为数据库密码,
  • 这里我们计算四个密码MEID+uinIMEI1+uinIMEI2+uin1234567890ABCDEF+uin,记录下四个密码

第七步 termux迁移数据库

使用如下命令

cd ~/storage/shared/0/                      # 进入第四步骤EnMicrMsg.db文件的目录,自行替换
apt update
apt install sqlcipher                       # 安装sqlcipher
sqlciper ~/storage/shared/0/EnMicroMsg.db   # 打开数据库,会进入sqlcipher的交互命令行
sqlite> PRAGMA key='xxxx';                  #上一步计算的密码
sqlite> select count(1) from sqlite_master; # 返回数据,没报错则说明密码正确,报错则再执行上一条命令和这一条
sqlite> PRAGMA cipher_migrate;              #数据库迁移,迁移需要一点时间
sqlite> SELECT count(1) FROM sqlite_master; # 再验证
sqlite> .q                                  # 退出sqlcipher

无root使用termux提取微信聊天记录_第6张图片

第八步 termux将加密数据库导出到未加密数据库中

sqlciper ~/storage/shared/0/EnMicroMsg.db                  # 打开数据库,会进入sqlcipher的交互命令行
sqlite> PRAGMA key='xxxx';                                 # xxxx替换为上一步正确的密码
sqlite> .output 'MicroMsg.sql'                             # 转储/备份 数据库前先指定输出文件
sqlite> .dump                                              # 备份数据库
sqlite> .open DeMicroMsg.db                                # 打开一个新的数据库, 无则创建
sqlite> .read 'MicroMsg.sql'                               # 执行sql文件,恢复到空数据库
sqlite> .databases                                         # 查看数据库列表
sqlite> SELECT count(1) FROM sqlite_master;				   # 执行SQL语句
sqlite> .q												   # 退出

至此,我们解密完成,使用SQLite编辑器即可打开,下载地址https://www.123pan.com/s/J5Nsjv-S1BN.html提取码:4t9f

表说明

  • userinfo 表:存储个人信息,其中 id 为 2 的 value 是个人的微信 id。
  • message 表:存储所有的聊天记录。
  • chatroom 表:存储所有群聊信息。
  • img_flag 表:存储所有用户的在线头像的信息。如果本地 avatar 文件夹没有头像时,可以用这个表的地址来访问用户的头像,其中 reserved2 是缩略图,reserved1 是高清图。
  • rcontact 表:存放所有的好友信息。

更多语音、图片、文件的解密请参考https://blog.greycode.top/posts/android-wechat-bak/

本文由【产品经理不是经理】gzh 同步发布,欢迎关注

你可能感兴趣的:(手机编程,Lua,脚本编程)