diff --git a/README.md b/README.md index 2138c2d..0ae6d59 100644 --- a/README.md +++ b/README.md @@ -16,6 +16,7 @@
更新日志(点击展开): +* 2023.11.25 聊天记录查看工具bootstrap更换国内cdn * 2023.11.22 添加all命令中解密错误数据日志写入文件,修复部分bug * 2023.11.16 增加聊天记录导出为html * 2023.11.15 添加test文件,添加自动构建可执行文件的脚本,添加版本描述 @@ -46,11 +47,22 @@
+ +**更新计划** + +* 1.每个人聊天记录分析,生成词云。 +* 2.分析每个人每天的聊天数量,生成折线图(天-聊天数量) +* 3.分析不同的人的月聊天数量,年聊天数量,生成折线图 +* 4.创建GUI图形界面,方便使用 + +注: 欢迎大家提供更多的想法,或者提供代码,一起完善这个项目。 + # 一、项目介绍 ## 1. 项目简介 -[PyWxDump](https://github.com/xaoyaoo/PyWxDump)是一款用于获取账号信息(昵称/账号/手机/邮箱/数据库密钥)、解密数据库、查看聊天记录、备份导出聊天记录为html的工具。 +[PyWxDump](https://github.com/xaoyaoo/PyWxDump)是一款用于获取账号信息(昵称/账号/手机/邮箱/数据库密钥) +、解密数据库、查看聊天记录、备份导出聊天记录为html的工具。 支持多账户信息获取,支持所有微信版本。 @@ -167,6 +179,7 @@ git clone https://github.com/xaoyaoo/PyWxDump.git cd PyWxDump python -m pip install -U . ``` + ## 2. 使用 @@ -341,7 +354,6 @@ else: 请勿利用本项目的相关技术从事非法测试,如因此产生的一切不良后果与项目作者无关。 - # 四、许可证 ```text diff --git a/pywxdump/analyse/parse.py b/pywxdump/analyse/parse.py index fd9d8af..239648e 100644 --- a/pywxdump/analyse/parse.py +++ b/pywxdump/analyse/parse.py @@ -284,5 +284,18 @@ def wordcloud_generator(text, out_path="", is_show=False, img_path="", font="C:\ wordcloud_img.show() +def read_BytesExtra(data): + if data[0:2] == '0x': + data = data[2:] + data = bytes.fromhex(data) + print(data) + print('*' * 50) + print(data.decode('utf-8', errors='ignore')) + + if __name__ == '__main__': - wordcloud_generator("我是中国人,我喜欢吃饭", is_show=True) + data = '' + read_BytesExtra(data) + print('*' * 50) + data2 = '' + read_BytesExtra(data2) diff --git a/pywxdump/decrypted/decrypt.py b/pywxdump/decrypted/decrypt.py index e04efeb..25b419a 100644 --- a/pywxdump/decrypted/decrypt.py +++ b/pywxdump/decrypted/decrypt.py @@ -1,3 +1,18 @@ +# -*- coding: utf-8 -*-# +# ------------------------------------------------------------------------------- +# Name: getwxinfo.py +# Description: +# Author: xaoyaoo +# Date: 2023/08/21 +# 微信数据库采用的加密算法是256位的AES-CBC。数据库的默认的页大小是4096字节即4KB,其中每一个页都是被单独加解密的。 +# 加密文件的每一个页都有一个随机的初始化向量,它被保存在每一页的末尾。 +# 加密文件的每一页都存有着消息认证码,算法使用的是HMAC-SHA1(安卓数据库使用的是SHA512)。它也被保存在每一页的末尾。 +# 每一个数据库文件的开头16字节都保存了一段唯一且随机的盐值,作为HMAC的验证和数据的解密。 +# 用来计算HMAC的key与解密的key是不同的,解密用的密钥是主密钥和之前提到的16字节的盐值通过PKCS5_PBKF2_HMAC1密钥扩展算法迭代64000次计算得到的。而计算HMAC的密钥是刚提到的解密密钥和16字节盐值异或0x3a的值通过PKCS5_PBKF2_HMAC1密钥扩展算法迭代2次计算得到的。 +# 为了保证数据部分长度是16字节即AES块大小的整倍数,每一页的末尾将填充一段空字节,使得保留字段的长度为48字节。 +# 综上,加密文件结构为第一页4KB数据前16字节为盐值,紧接着4032字节数据,再加上16字节IV和20字节HMAC以及12字节空字节;而后的页均是4048字节长度的加密数据段和48字节的保留段。 +# ------------------------------------------------------------------------------- + import argparse import hmac import hashlib diff --git a/pywxdump/show_chat/templates/index.html b/pywxdump/show_chat/templates/index.html index dcc56b5..d4d4d64 100644 --- a/pywxdump/show_chat/templates/index.html +++ b/pywxdump/show_chat/templates/index.html @@ -3,7 +3,7 @@ 聊天记录显示 - +