mirror of
https://github.com/KnugiHK/WhatsApp-Chat-Exporter.git
synced 2026-04-24 23:11:35 +00:00
Move some utility functions to a separated python file
This commit is contained in:
@@ -9,13 +9,11 @@ import re
|
|||||||
import io
|
import io
|
||||||
import hmac
|
import hmac
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
from bleach import clean as sanitize
|
|
||||||
from markupsafe import Markup
|
|
||||||
from datetime import datetime
|
|
||||||
from enum import Enum
|
|
||||||
from mimetypes import MimeTypes
|
from mimetypes import MimeTypes
|
||||||
from hashlib import sha256
|
from hashlib import sha256
|
||||||
from Whatsapp_Chat_Exporter.data_model import ChatStore, Message
|
from Whatsapp_Chat_Exporter.data_model import ChatStore, Message
|
||||||
|
from Whatsapp_Chat_Exporter.utility import sanitize_except, determine_day, Crypt
|
||||||
|
from Whatsapp_Chat_Exporter.utility import brute_force_offset, CRYPT14_OFFSETS
|
||||||
|
|
||||||
try:
|
try:
|
||||||
import zlib
|
import zlib
|
||||||
@@ -31,37 +29,6 @@ except ModuleNotFoundError:
|
|||||||
else:
|
else:
|
||||||
support_crypt15 = True
|
support_crypt15 = True
|
||||||
|
|
||||||
def sanitize_except(html):
|
|
||||||
return Markup(sanitize(html, tags=["br"]))
|
|
||||||
|
|
||||||
|
|
||||||
def determine_day(last, current):
|
|
||||||
last = datetime.fromtimestamp(last).date()
|
|
||||||
current = datetime.fromtimestamp(current).date()
|
|
||||||
if last == current:
|
|
||||||
return None
|
|
||||||
else:
|
|
||||||
return current
|
|
||||||
|
|
||||||
CRYPT14_OFFSETS = (
|
|
||||||
{"iv": 67, "db": 191},
|
|
||||||
{"iv": 67, "db": 190},
|
|
||||||
{"iv": 66, "db": 99},
|
|
||||||
{"iv": 67, "db": 193}
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
class Crypt(Enum):
|
|
||||||
CRYPT15 = 15
|
|
||||||
CRYPT14 = 14
|
|
||||||
CRYPT12 = 12
|
|
||||||
|
|
||||||
|
|
||||||
def brute_force_offset():
|
|
||||||
for iv in range(0, 200):
|
|
||||||
for db in range(0, 200):
|
|
||||||
yield iv, iv + 16, db
|
|
||||||
|
|
||||||
|
|
||||||
def _generate_hmac_of_hmac(key_stream):
|
def _generate_hmac_of_hmac(key_stream):
|
||||||
key = hmac.new(
|
key = hmac.new(
|
||||||
|
|||||||
@@ -6,25 +6,9 @@ import jinja2
|
|||||||
import os
|
import os
|
||||||
import shutil
|
import shutil
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
from bleach import clean as sanitize
|
|
||||||
from markupsafe import Markup
|
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
from mimetypes import MimeTypes
|
from mimetypes import MimeTypes
|
||||||
|
from Whatsapp_Chat_Exporter.utility import sanitize_except, determine_day, APPLE_TIME
|
||||||
APPLE_TIME = datetime.timestamp(datetime(2001, 1, 1))
|
|
||||||
|
|
||||||
|
|
||||||
def sanitize_except(html):
|
|
||||||
return Markup(sanitize(html, tags=["br"]))
|
|
||||||
|
|
||||||
|
|
||||||
def determine_day(last, current):
|
|
||||||
last = datetime.fromtimestamp(last).date()
|
|
||||||
current = datetime.fromtimestamp(current).date()
|
|
||||||
if last == current:
|
|
||||||
return None
|
|
||||||
else:
|
|
||||||
return current
|
|
||||||
|
|
||||||
|
|
||||||
def messages(db, data):
|
def messages(db, data):
|
||||||
|
|||||||
44
Whatsapp_Chat_Exporter/utility.py
Normal file
44
Whatsapp_Chat_Exporter/utility.py
Normal file
@@ -0,0 +1,44 @@
|
|||||||
|
from bleach import clean as sanitize
|
||||||
|
from markupsafe import Markup
|
||||||
|
from datetime import datetime
|
||||||
|
from enum import Enum
|
||||||
|
|
||||||
|
|
||||||
|
def sanitize_except(html):
|
||||||
|
return Markup(sanitize(html, tags=["br"]))
|
||||||
|
|
||||||
|
|
||||||
|
def determine_day(last, current):
|
||||||
|
last = datetime.fromtimestamp(last).date()
|
||||||
|
current = datetime.fromtimestamp(current).date()
|
||||||
|
if last == current:
|
||||||
|
return None
|
||||||
|
else:
|
||||||
|
return current
|
||||||
|
|
||||||
|
|
||||||
|
# Android Specific
|
||||||
|
|
||||||
|
CRYPT14_OFFSETS = (
|
||||||
|
{"iv": 67, "db": 191},
|
||||||
|
{"iv": 67, "db": 190},
|
||||||
|
{"iv": 66, "db": 99},
|
||||||
|
{"iv": 67, "db": 193}
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
class Crypt(Enum):
|
||||||
|
CRYPT15 = 15
|
||||||
|
CRYPT14 = 14
|
||||||
|
CRYPT12 = 12
|
||||||
|
|
||||||
|
|
||||||
|
def brute_force_offset(max_iv=200, max_db=200):
|
||||||
|
for iv in range(0, max_iv):
|
||||||
|
for db in range(0, max_db):
|
||||||
|
yield iv, iv + 16, db
|
||||||
|
|
||||||
|
|
||||||
|
# iOS Specific
|
||||||
|
|
||||||
|
APPLE_TIME = datetime.timestamp(datetime(2001, 1, 1))
|
||||||
Reference in New Issue
Block a user