mirror of
https://github.com/KnugiHK/WhatsApp-Chat-Exporter.git
synced 2026-04-23 22:41:39 +00:00
Better handling of binary message #44
This commit is contained in:
@@ -57,6 +57,7 @@ class Message():
|
|||||||
self.meta = False
|
self.meta = False
|
||||||
self.data = None
|
self.data = None
|
||||||
self.sender = None
|
self.sender = None
|
||||||
|
self.safe = False
|
||||||
# Extra
|
# Extra
|
||||||
self.reply = None
|
self.reply = None
|
||||||
self.quoted_data = None
|
self.quoted_data = None
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ import hmac
|
|||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
from mimetypes import MimeTypes
|
from mimetypes import MimeTypes
|
||||||
from hashlib import sha256
|
from hashlib import sha256
|
||||||
from base64 import b64decode
|
from base64 import b64decode, b64encode
|
||||||
from Whatsapp_Chat_Exporter.data_model import ChatStore, Message
|
from Whatsapp_Chat_Exporter.data_model import ChatStore, Message
|
||||||
from Whatsapp_Chat_Exporter.utility import MAX_SIZE, ROW_SIZE, Device, rendering, sanitize_except, determine_day, Crypt
|
from Whatsapp_Chat_Exporter.utility import MAX_SIZE, ROW_SIZE, Device, rendering, sanitize_except, determine_day, Crypt
|
||||||
from Whatsapp_Chat_Exporter.utility import brute_force_offset, CRYPT14_OFFSETS
|
from Whatsapp_Chat_Exporter.utility import brute_force_offset, CRYPT14_OFFSETS
|
||||||
@@ -252,8 +252,6 @@ def messages(db, data, media_folder):
|
|||||||
except sqlite3.OperationalError:
|
except sqlite3.OperationalError:
|
||||||
continue
|
continue
|
||||||
else:
|
else:
|
||||||
if content is not None and isinstance(content["data"], bytes):
|
|
||||||
continue
|
|
||||||
break
|
break
|
||||||
while content is not None:
|
while content is not None:
|
||||||
if content["key_remote_jid"] not in data:
|
if content["key_remote_jid"] not in data:
|
||||||
@@ -266,6 +264,17 @@ def messages(db, data, media_folder):
|
|||||||
time=content["timestamp"],
|
time=content["timestamp"],
|
||||||
key_id=content["key_id"],
|
key_id=content["key_id"],
|
||||||
)
|
)
|
||||||
|
if isinstance(content["data"], bytes):
|
||||||
|
message.data = ("The message is binary data and its base64 is "
|
||||||
|
'<a href="https://gchq.github.io/CyberChef/#recipe=From_Base64'
|
||||||
|
"('A-Za-z0-9%2B/%3D',true,false)Text_Encoding_Brute_Force"
|
||||||
|
f"""('Decode')&input={b64encode(b64encode(content["data"])).decode()}">""")
|
||||||
|
message.data += b64encode(content["data"]).decode("utf-8") + "</a>"
|
||||||
|
message.safe = message.meta = True
|
||||||
|
data[content["key_remote_jid"]].add_message(content["_id"], message)
|
||||||
|
i += 1
|
||||||
|
content = c.fetchone()
|
||||||
|
continue
|
||||||
invalid = False
|
invalid = False
|
||||||
if "-" in content["key_remote_jid"] and content["key_from_me"] == 0:
|
if "-" in content["key_remote_jid"] and content["key_from_me"] == 0:
|
||||||
name = None
|
name = None
|
||||||
@@ -407,8 +416,6 @@ def messages(db, data, media_folder):
|
|||||||
except sqlite3.OperationalError:
|
except sqlite3.OperationalError:
|
||||||
continue
|
continue
|
||||||
else:
|
else:
|
||||||
if content is not None and isinstance(content["data"], bytes):
|
|
||||||
continue
|
|
||||||
break
|
break
|
||||||
print(f"Processing messages...({total_row_number}/{total_row_number})", end="\r")
|
print(f"Processing messages...({total_row_number}/{total_row_number})", end="\r")
|
||||||
|
|
||||||
|
|||||||
@@ -125,7 +125,11 @@
|
|||||||
{% endif %}
|
{% endif %}
|
||||||
{% if msg.meta == true or msg.media == false and msg.data is none %}
|
{% if msg.meta == true or msg.media == false and msg.data is none %}
|
||||||
<div class="w3-panel w3-border-blue w3-pale-blue w3-rightbar w3-leftbar w3-threequarter w3-center">
|
<div class="w3-panel w3-border-blue w3-pale-blue w3-rightbar w3-leftbar w3-threequarter w3-center">
|
||||||
|
{% if msg.safe %}
|
||||||
|
<p>{{ msg.data | safe or 'Not supported WhatsApp internal message' }}</p>
|
||||||
|
{% else %}
|
||||||
<p>{{ msg.data or 'Not supported WhatsApp internal message' }}</p>
|
<p>{{ msg.data or 'Not supported WhatsApp internal message' }}</p>
|
||||||
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
{% else %}
|
{% else %}
|
||||||
{% if msg.media == false %}
|
{% if msg.media == false %}
|
||||||
@@ -205,7 +209,11 @@
|
|||||||
{% endif %}
|
{% endif %}
|
||||||
{% if msg.meta == true or msg.media == false and msg.data is none %}
|
{% if msg.meta == true or msg.media == false and msg.data is none %}
|
||||||
<div class="w3-panel w3-border-blue w3-pale-blue w3-rightbar w3-leftbar w3-threequarter w3-center">
|
<div class="w3-panel w3-border-blue w3-pale-blue w3-rightbar w3-leftbar w3-threequarter w3-center">
|
||||||
|
{% if msg.safe %}
|
||||||
|
<p>{{ msg.data | safe or 'Not supported WhatsApp internal message' }}</p>
|
||||||
|
{% else %}
|
||||||
<p>{{ msg.data or 'Not supported WhatsApp internal message' }}</p>
|
<p>{{ msg.data or 'Not supported WhatsApp internal message' }}</p>
|
||||||
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
{% else %}
|
{% else %}
|
||||||
{% if msg.media == false %}
|
{% if msg.media == false %}
|
||||||
|
|||||||
Reference in New Issue
Block a user