python解密微信聊天记录

视频教程地址

https://www.bilibili.com/video/BV1uu4y1m78m/?vd_source=4d76e1f0894dd654b34fd69919cef992

第一步 备份微信聊天记录

以小米手机(MIUI14)为例,在设置中找到我的设备,
备份与恢复,选择备份微信

第二步 将备份同步至电脑

可以使用数据线或者其他方式将微信聊天的备份文件拷贝至电脑上

第三步 解压备份文件

将备份的.bak文件后缀改为 .zip,并且使用7-zip解压(WinRAR解压的结果不全)

第四步 获取当前手机的IME号

不同品牌手机获取IME号方式不同,例如小米手机可以在设置中搜索IME来获取,
每个手机默认有两个IME号码,获取到后记录下来

第五步 获取数据库存储位置以及密码

仅可获取备份微信时登录账户的数据库密码,其他账户无法获取
运行代码后会列举出所有可能的密码,请在下一步中解密过程中使用
import re
import os
import hashlib

# 获取当前路径下的所有文件以及文件夹名称
def GetFileName(path):
    dirs = os.listdir(path)
    return dirs

# 计算微信数据库的密码
def calculate_md5(string):
    md5_hash = hashlib.md5()
    md5_hash.update(string.encode('utf-8'))
    return md5_hash.hexdigest()

# 获取文件中uin,解密数据库密码的关键
def GetUin(path):
    uin=""
    with  open(path, 'r', encoding='UTF-8') as file_obj:
        lines = file_obj.readlines()
        for line in lines:
            if "auth_uin" in line:
                uin=re.compile('(?<=value=").*?(?=")').findall(str(line))[0]
    return uin

# 获取IME号,解密数据库的另一个核心参数
def GetKey(path):
    if not os.path.exists("IMELists.txt"):
        IMELists=["1234567890ABCDEF"]
        order=1
        while order==1:
            order=int(input("请输入要执行的指令:\n1.手动输入IME\t2.使用默认IME并停止输入\n:"))
            if order==1:
                IME=str(input("请输入IME号:\n"))
                IMELists.append(IME)
        with open("IMELists.txt", 'a', encoding='UTF-8') as file_obj:
            for IME in IMELists:
                file_obj.write(IME+"\n")
    lines=[]
    result=[]
    with  open("IMELists.txt", 'r', encoding='UTF-8') as file_obj:
        lines = file_obj.readlines()
    for line in lines:
        uin=GetUin(path)
        IME=str(line).strip()
        key=calculate_md5(IME+uin)
        result.append(key[0:7])
    return result

# 递归遍历当前目录下的所有文件和文件夹
def Visit(path):
    if os.path.isdir(path):
        path=path+'/'
        try:
            dirs=GetFileName(path)
            for dir in dirs:
                new_path=path+dir
                Visit(new_path)
        except Exception as e:
            print(e)
    else:
        if "auth_info_key_prefs.xml" in path:
            sqlkeys=GetKey(path)
            for key in sqlkeys:
                print("微信数据库密码可能为:", key)
        if "EnMicroMsg.db"==path[-13:]:
            path=str(path).replace("./","")
            print("微信聊天记录存储位置为:",path)

if __name__ == '__main__':
    Visit(".")
    input("键入任意内容回车后结束运行!")

第六步 使用sqlcipher.exe打开数据库

数据库文件的名称为EnMicroMsg.db,在上一步运行结果中有其对应的一个或者多个相对路径,请逐个尝试
输入上一步得到的多个密码,总有一个是正确的

在这里插入图片描述

	输入正确的密码后,会打开如下界面

在这里插入图片描述

聊天记录就存放在message表里面,如果你能熟练使用数据库的话,关联查询导出每个人的聊天记录就好了,更多的功能我会在下一篇文章中实现

下载链接

sqlcipher.exe在下面的链接中,请自行获取
如果没有python运行环境,或者某些库无法安装,我这里有编译好的文件
下载链接:https://www.aliyundrive.com/s/n8Sw7yd2ks4

参考链接

链接: 傻瓜教程:使用小米系列手机提取微信聊天记录并制作词云图

链接: 手机端微信聊天记录数据库解密过程

  • 5
    点赞
  • 49
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值