python解密微信聊天记录

python解密微信聊天记录(适用于大部分安卓系统)

  • 视频教程地址
  • 第一步 备份微信聊天记录
  • 第二步 将备份同步至电脑
  • 第三步 解压备份文件
  • 第四步 获取当前手机的IME号
  • 第五步 获取数据库存储位置以及密码
  • 第六步 使用sqlcipher.exe打开数据库
  • 下载链接
  • 参考链接

视频教程地址

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

参考链接

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

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

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
社会演员多的头像社会演员多普通用户
上一篇 2023年11月6日
下一篇 2023年11月6日

相关推荐