Exemplo n.º 1
0
import sqlite3
import os
import shutil

from common import COLORS, TEMPLATEBEGINNING, TEMPLATEEND, ROWTEMPLATE
from common import get_color, reset_colors, get_date, sanitize_filename, iterate_with_progress, get_output_dirs

OUTPUT_DIR, MEDIA_DIR = get_output_dirs("sms")

CHAT_STORAGE_FILE = os.path.join(OUTPUT_DIR, "sms.db")
CONTACTS_FILE = os.path.join(OUTPUT_DIR, "AddressBook.sqlitedb")

FILES = [("HomeDomain", "Library/SMS/sms.db", CHAT_STORAGE_FILE),
         ("HomeDomain", "Library/AddressBook/AddressBook.sqlitedb", CONTACTS_FILE)]

FIELDS = "ROWID, text, date, is_from_me, handle_id, cache_has_attachments"

OBJ_MARKER = "\ufffc"

contact_cache = {}
def get_contact_name(conn, contact_conn, contact_id):
	if contact_id in contact_cache:
		return contact_cache[contact_id]
	c = conn.cursor()
	c.execute("SELECT id FROM handle WHERE ROWID=?;", (contact_id,))
	handle_id = next(c)[0]		# this is either a phone number or an iMessage address
	if handle_id.startswith("+"):
		c = contact_conn.cursor()
		p = handle_id.replace("+972", "0")
		phone_options = (handle_id, p,
			"{}-{}-{}".format(p[-10:-7], p[-7:-4], p[-4:]),
Exemplo n.º 2
0
import sqlite3
import os
import shutil
import codecs

from common import COLORS, TEMPLATEBEGINNING, TEMPLATEEND, ROWTEMPLATE
from common import get_color, reset_colors, get_date, sanitize_filename, iterate_with_progress, get_output_dirs

OUTPUT_DIR, MEDIA_DIR = get_output_dirs("whatsapp")

CHAT_STORAGE_FILE = os.path.join(OUTPUT_DIR, "ChatStorage.sqlite")
FILES = [("AppDomain-net.whatsapp.WhatsApp", "Documents/ChatStorage.sqlite", CHAT_STORAGE_FILE)]

FIELDS = "ZFROMJID, ZTEXT, ZMESSAGEDATE, ZMESSAGETYPE, ZGROUPEVENTTYPE, ZGROUPMEMBER, ZMEDIAITEM"

cached_members = {}
def get_group_member_name(conn, id):
	if id in cached_members:
		return cached_members[id]
	c = conn.cursor()
	c.execute("SELECT ZCONTACTNAME FROM ZWAGROUPMEMBER WHERE Z_PK=?", (id,))
	cached_members[id] = next(c)[0]
	return cached_members[id]

def get_media_data(conn, mediaid, cols):
	c = conn.cursor()
	c.execute("SELECT {} FROM ZWAMEDIAITEM WHERE Z_PK=?".format(cols), (mediaid,))
	return next(c)

def copy_media_file(backup_extractor, path_in_backup):
	path_in_backup = "Library" + ("" if path_in_backup.startswith("/") else "/") + path_in_backup
Exemplo n.º 3
0
import sqlite3
import os
import shutil

from common import COLORS, TEMPLATEBEGINNING, TEMPLATEEND, ROWTEMPLATE
from common import get_color, reset_colors, get_date, sanitize_filename, iterate_with_progress, get_output_dirs

OUTPUT_DIR, MEDIA_DIR = get_output_dirs("sms")

CHAT_STORAGE_FILE = os.path.join(OUTPUT_DIR, "sms.db")
CONTACTS_FILE = os.path.join(OUTPUT_DIR, "AddressBook.sqlitedb")

FILES = [("HomeDomain", "Library/SMS/sms.db", CHAT_STORAGE_FILE),
         ("HomeDomain", "Library/AddressBook/AddressBook.sqlitedb",
          CONTACTS_FILE)]

FIELDS = "ROWID, text, date, is_from_me, handle_id, cache_has_attachments"

OBJ_MARKER = "\ufffc"

contact_cache = {}


def get_contact_name(conn, contact_conn, contact_id):
    if contact_id in contact_cache:
        return contact_cache[contact_id]
    c = conn.cursor()
    c.execute("SELECT id FROM handle WHERE ROWID=?;", (contact_id, ))
    handle_id = next(c)[
        0]  # this is either a phone number or an iMessage address
    if handle_id.startswith("+"):
Exemplo n.º 4
0
import sqlite3
import os
import shutil
import codecs

from common import COLORS, TEMPLATEBEGINNING, TEMPLATEEND, ROWTEMPLATE
from common import get_color, reset_colors, get_date, sanitize_filename, iterate_with_progress, get_output_dirs

OUTPUT_DIR, MEDIA_DIR = get_output_dirs("whatsapp")

CHAT_STORAGE_FILE = os.path.join(OUTPUT_DIR, "ChatStorage.sqlite")
FILES = [("AppDomain-net.whatsapp.WhatsApp", "Documents/ChatStorage.sqlite",
          CHAT_STORAGE_FILE)]

FIELDS = "ZFROMJID, ZTEXT, ZMESSAGEDATE, ZMESSAGETYPE, ZGROUPEVENTTYPE, ZGROUPMEMBER, ZMEDIAITEM"

cached_members = {}


def get_group_member_name(conn, id):
    if id in cached_members:
        return cached_members[id]
    c = conn.cursor()
    c.execute("SELECT ZCONTACTNAME FROM ZWAGROUPMEMBER WHERE Z_PK=?", (id, ))
    cached_members[id] = next(c)[0]
    return cached_members[id]


def get_media_data(conn, mediaid, cols):
    c = conn.cursor()
    c.execute("SELECT {} FROM ZWAMEDIAITEM WHERE Z_PK=?".format(cols),