如何找回你的聊天记录

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

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

实验环境

  • 微信电脑版(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黑客笔记):如何找回你的聊天记录

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/152438.html

(0)
小半的头像小半

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!