mirror of
https://github.com/LC044/WeChatMsg
synced 2025-04-08 05:28:03 +08:00
81 lines
2.7 KiB
Python
81 lines
2.7 KiB
Python
#!/usr/bin/env python
|
||
# -*- coding: utf-8 -*-
|
||
|
||
"""
|
||
@Time : 2025/3/11 20:27
|
||
@Author : SiYuan
|
||
@Email : 863909694@qq.com
|
||
@File : wxManager-1-decrypt.py
|
||
@Description :
|
||
"""
|
||
|
||
import json
|
||
import os
|
||
from multiprocessing import freeze_support
|
||
|
||
from wxManager import Me
|
||
from wxManager.decrypt import get_info_v4, get_info_v3
|
||
from wxManager.decrypt.decrypt_dat import get_decode_code_v4
|
||
from wxManager.decrypt import decrypt_v4, decrypt_v3
|
||
|
||
|
||
def dump_v3():
|
||
"""
|
||
解析微信3.x版本的数据库
|
||
"""
|
||
version_list_path = '../wxManager/decrypt/version_list.json'
|
||
with open(version_list_path, "r", encoding="utf-8") as f:
|
||
version_list = json.loads(f.read())
|
||
r_3 = get_info_v3(version_list) # 微信3.x
|
||
for wx_info in r_3:
|
||
print(wx_info)
|
||
me = Me()
|
||
me.wx_dir = wx_info.wx_dir
|
||
me.wxid = wx_info.wxid
|
||
me.name = wx_info.nick_name
|
||
info_data = me.to_json()
|
||
output_dir = wx_info.wxid
|
||
key = wx_info.key
|
||
if not key:
|
||
print('error! 未找到key,请重启微信后再试')
|
||
continue
|
||
wx_dir = wx_info.wx_dir
|
||
decrypt_v3.decrypt_db_files(key, src_dir=wx_dir, dest_dir=output_dir)
|
||
# 导出的数据库在 output_dir/Msg 文件夹下,后面会用到
|
||
with open(os.path.join(output_dir, 'Msg', 'info.json'), 'w', encoding='utf-8') as f:
|
||
json.dump(info_data, f, ensure_ascii=False, indent=4)
|
||
print(f'数据库解析成功,在{os.path.join(output_dir, "Msg")}路径下')
|
||
|
||
|
||
def dump_v4():
|
||
"""
|
||
解析微信4.0版本的数据库
|
||
"""
|
||
r_4 = get_info_v4() # 微信4.0
|
||
for wx_info in r_4:
|
||
print(wx_info)
|
||
me = Me()
|
||
me.wx_dir = wx_info.wx_dir
|
||
me.wxid = wx_info.wxid
|
||
me.name = wx_info.nick_name
|
||
me.xor_key = get_decode_code_v4(wx_info.wx_dir)
|
||
info_data = me.to_json()
|
||
output_dir = wx_info.wxid # 数据库输出文件夹
|
||
key = wx_info.key
|
||
if not key:
|
||
print('error! 未找到key,请重启微信后再试')
|
||
continue
|
||
wx_dir = wx_info.wx_dir
|
||
decrypt_v4.decrypt_db_files(key, src_dir=wx_dir, dest_dir=output_dir)
|
||
# 导出的数据库在 output_dir/db_storage 文件夹下,后面会用到
|
||
with open(os.path.join(output_dir, 'db_storage', 'info.json'), 'w', encoding='utf-8') as f:
|
||
json.dump(info_data, f, ensure_ascii=False, indent=4)
|
||
print(f'数据库解析成功,在{os.path.join(output_dir, "Msg")}路径下')
|
||
|
||
|
||
if __name__ == '__main__':
|
||
freeze_support() # 使用多进程必须
|
||
# 根据自己的微信版本选择使用对应的函数
|
||
dump_v3() # 微信3.x
|
||
# dump_v4() # 微信4.0
|