如何找回你的聊天记录

admin 2023年3月5日16:15:22评论120 views字数 2238阅读7分27秒阅读模式

在我们工作和生活中。在聊天信息中可能会存在很重要的信息。但是由于时间比较长,或者手机上的记录已删除。该怎样找回记录呢?

注意!本文涉及到的技术仅供学习。没有任何的不良引导。请勿使用本文技术做违法乱纪的事情。造成法律后果自负。

实验环境

  • 微信电脑版(3.9.0.28
  • Python3.8

    (kali环境中的python就可以)

  • Navicat16
  • ​开VS2019

编译工具

如果没有vs工具,我们需要先安装vs2019(其他版本未知)。安装过程比较漫长,可以自行搜索解决。我们首先需要编译工具SharpWxDump。下载项目到我们的本地。在vs中导入项目。设置框架为x86点击启动,进行编译。

🍀项目地址:

git clone https://github.com/AdminTest0/SharpWxDump
如何找回你的聊天记录
编译工具

编译完成后,在项目的bin文件夹下。

如何找回你的聊天记录
生成的文件

至此,工具编译完成。

获取数据库密码

前提 需用户登录WX 将生成的工具拖到cmd命令框中。获取key并记录。

如何找回你的聊天记录
需记录key

获取聊天信息

消息位置

文档WeChat Files微信IDMsgMultiMSG0.db 

超出240MB会自动生成MSG1.db,以此类推。

如何找回你的聊天记录
LT记录文件

解密数据库

将下面代码保存为py文件。

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

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:')
input_pass = ''
input_dir = ''

for op, value in opts:
    if op == '-k':
        input_pass = value
    else:
        if op == '-d':
            input_dir = value

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:])

🕸解密数据库

python3 22.py -k E4884351DD06A521A8485949A8A279B9058773C59E -d MSG0.db
如何找回你的聊天记录
解密数据库

这时,将原来的加密数据库MSG0.db进行了解密。将得到的数据库用数据库管理工具Navicat打开。效果如下:

如何找回你的聊天记录
消息记录

注意事项

  • 在编译时选择目标框架:.NET Framework 4、平台为Release x86
  • 编译工具需和对应的WEIX版本对应。最新版本为3.9.0可能不成功。需卸载后安装旧版本。或者坐等作者更新代码。
  • 最后,本文仅供学习和研究。请勿做维护网络安全的行为。

更多精彩文章 欢迎关注我们

原文始发于微信公众号(kali黑客笔记):如何找回你的聊天记录

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年3月5日16:15:22
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   如何找回你的聊天记录https://cn-sec.com/archives/1587901.html

发表评论

匿名网友 填写信息