diff --git a/pywxdump/__init__.py b/pywxdump/__init__.py index c46c15b..9c0e18a 100644 --- a/pywxdump/__init__.py +++ b/pywxdump/__init__.py @@ -7,7 +7,7 @@ # ------------------------------------------------------------------------------- from .wx_info import BiasAddr,read_info, get_wechat_db,encrypt,batch_decrypt,decrypt from .wx_info import merge_copy_db, merge_msg_db, merge_media_msg_db -from .analyzer.db_parsing import read_img_dat, read_emoji, decompress_CompressContent, read_audio_buf, read_audio, parse_xml_string +from .analyzer.db_parsing import read_img_dat, read_emoji, decompress_CompressContent, read_audio_buf, read_audio, parse_xml_string,read_BytesExtra from .ui import app_show_chat, get_user_list, export import os,json diff --git a/pywxdump/analyzer/__init__.py b/pywxdump/analyzer/__init__.py index b3776ad..cf93712 100644 --- a/pywxdump/analyzer/__init__.py +++ b/pywxdump/analyzer/__init__.py @@ -5,4 +5,4 @@ # Author: xaoyaoo # Date: 2023/09/27 # ------------------------------------------------------------------------------- -from .db_parsing import read_img_dat, read_emoji, decompress_CompressContent, read_audio_buf, read_audio, parse_xml_string +from .db_parsing import read_img_dat, read_emoji, decompress_CompressContent, read_audio_buf, read_audio, parse_xml_string,read_BytesExtra diff --git a/pywxdump/analyzer/db_parsing.py b/pywxdump/analyzer/db_parsing.py index d05a12a..91bf9b7 100644 --- a/pywxdump/analyzer/db_parsing.py +++ b/pywxdump/analyzer/db_parsing.py @@ -153,11 +153,13 @@ def decompress_CompressContent(data): """ if data is None or not isinstance(data, bytes): return None - - dst = lz4.block.decompress(data, uncompressed_size=len(data) << 8) - dst.decode().replace('\x00', '') # 已经解码完成后,还含有0x00的部分,要删掉,要不后面ET识别的时候会报错 - uncompressed_data = dst.encode('utf-8', errors='ignore') - return uncompressed_data + try: + dst = lz4.block.decompress(data, uncompressed_size=len(data) << 8) + dst.decode().replace(b'\x00', '') # 已经解码完成后,还含有0x00的部分,要删掉,要不后面ET识别的时候会报错 + uncompressed_data = dst.decode('utf-8', errors='ignore') + return uncompressed_data + except Exception as e: + return data.decode('utf-8', errors='ignore') def read_audio_buf(buf_data, is_play=False, is_wave=False, rate=24000): @@ -257,13 +259,13 @@ def read_BytesExtra(BytesExtra): if __name__ == '__main__': - DB = sqlite3.connect(r"D:\_code\py_code\test\a2023\b0821wxdb\merge_wfwx_db\kkWxMsg\MSG_all.db") + DB = sqlite3.connect(r"D:\_code\py_code\test\a2023\b0821wxdb\merge_wfwx_db\hwfWxMsg\MSG_all.db") cursor = DB.cursor() - sql = "select MsgSvrID,BytesExtra from MSG where BytesExtra is not null and StrTalker='24724392255@chatroom' order by CreateTime desc limit 10" + sql = "select MsgSvrID,CompressContent from MSG where MSG.MsgSvrID=5379391128928795712" DBdata = cursor.execute(sql).fetchall() for i in DBdata: - MsgSvrID, BytesExtra = i - data = read_BytesExtra(BytesExtra) + MsgSvrID, CompressContent = i + data = decompress_CompressContent(CompressContent) # 提取特定键的信息 print(MsgSvrID,"\n",data) print("-" * 64) \ No newline at end of file diff --git a/pywxdump/ui/templates/chat.html b/pywxdump/ui/templates/chat.html index cb2861d..f9b0783 100644 --- a/pywxdump/ui/templates/chat.html +++ b/pywxdump/ui/templates/chat.html @@ -22,7 +22,7 @@ {% if msg.is_sender == 1 %}
-
+
{% if msg.type_name == '语音' %}
{% else %}
-
+
{% if msg.type_name == '语音' %}