PC端 微信聊天记录解密

1. 获取微信路径

打开微信   以此点击 三横杆 ->  文件管理  -> 文件管理

这个文件中包括数据库、图片、视频、文件等等,我们主要讨论的是存放于wxid_xxxxxx/Msg/Multi文件夹下的数据库文件,如MSG0.db。这些文件是经过AES加密,所以需要找到秘钥进行解密。秘钥通过微信key获取。

2. 获取微信key

首先获取 pywxdumpmini 此源代码。

git clone https://github.com/xaoyaoo/PyWxDumpMini.git

cd PyWxDumpMini

pip install -r requirements.txt

cd pywxdump_mini

python simplify_wx_info.py

会输出如下内容:

key 为我们寻找的结果。

3. 编写解密python文件

文件名:weixin_decrypt.py

from Crypto.Cipher import AES
import hashlib, hmac, ctypes, sys, getopt

input_pass = '4eacd623b*********************************a369d6d6033b'
input_dir = r'***********\\Msg\\Multi\\MSG0.db'

SQLITE_FILE_HEADER = bytes('SQLite format 3', encoding='ASCII') + bytes(1)
IV_SIZE = 16
HMAC_SHA1_SIZE = 20
KEY_SIZE = 32
DEFAULT_PAGESIZE = 4096
DEFAULT_ITER = 64000
opts, args = getopt.getopt(sys.argv[1:], 'hk:d:')



password = bytes.fromhex(input_pass.replace(' ', ''))

with open(input_dir, 'rb') as (f):
    blist = f.read()
print(len(blist))
salt = blist[:16]
key = hashlib.pbkdf2_hmac('sha1', password, salt, DEFAULT_ITER, KEY_SIZE)
first = blist[16:DEFAULT_PAGESIZE]
mac_salt = bytes([x ^ 58 for x in salt])
mac_key = hashlib.pbkdf2_hmac('sha1', key, mac_salt, 2, KEY_SIZE)
hash_mac = hmac.new(mac_key, digestmod='sha1')
hash_mac.update(first[:-32])
hash_mac.update(bytes(ctypes.c_int(1)))

if hash_mac.digest() == first[-32:-12]:
    print('Decryption Success')
else:
    print('Password Error')
blist = [blist[i:i + DEFAULT_PAGESIZE] for i in range(DEFAULT_PAGESIZE, len(blist), DEFAULT_PAGESIZE)]

with open(input_dir, 'wb') as (f):
    f.write(SQLITE_FILE_HEADER)
    t = AES.new(key, AES.MODE_CBC, first[-48:-32])
    f.write(t.decrypt(first[:-48]))
    f.write(first[-48:])
    for i in blist:
        t = AES.new(key, AES.MODE_CBC, i[-48:-32])
        f.write(t.decrypt(i[:-48]))
        f.write(i[-48:])

执行代码:

python weixin_decrypt.py

4. 查看聊天内容

然后将解压后的文件在sqllite查看器中查看内容

### 解决微信MSG文件不同步或未更新到最新消息问题 当遇到微信 MSG 文件不同步或者未能及时更新至最新消息的情况时,可以采取一系列措施来排查和解决问题。 #### 日志分析 查看日志文件中的详细错误信息有助于定位具体原因。通过日志能够发现是否存在网络异常、接口调用失败等问题[^1]。 #### API 权限校验 确保用于访问微信相关资源的应用程序具有足够的权限。特别是对于企业微信环境下的开发工作来说,API 的权限设置至关重要。如果缺少必要的授权,则可能导致数据无法正常加载或同步。 #### 数据库操作验证 针对 `Message/msg_0.db` 这样的数据库文件,在尝试读取其内部存储的消息记录之前,应该先确认应用程序拥有相应的读写权限,并且所使用的工具和技术栈(如Python脚本)能正确解析该类型的 SQLite 数据库结构[^2]。 #### 本兼容性检查 考虑到不同的微信客户本可能会影响某些功能的表现形式以及可用性,建议开发者关注当前项目依赖的基础库是否满足最低要求。例如,在处理小程序内的用户资料展示方面,只有当 SDK Version 大于等于特定数值(比如 2.21.2),才支持更完善的个人信息获取方式[^3]。 综上所述,要解决微信 MSG 文件不同步的问题可以从以上几个角度入手进行调试与优化。 ```python import sqlite3 def read_wechat_db(file_path): try: conn = sqlite3.connect(file_path) cursor = conn.cursor() query = "SELECT * FROM Message LIMIT 5;" # 只作为示例查询语句 results = cursor.execute(query).fetchall() for row in results: print(row) cursor.close() conn.close() except Exception as e: print(f"Error occurred while reading database: {e}") read_wechat_db('path_to_msg_0.db') ```
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

guochunyun

你的鼓励是我创作最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值