使用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
    

    参考链接

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

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

    物联沃分享整理
    物联沃-IOTWORD物联网 » 使用Python解密微信聊天记录的方法详解

    发表评论