From fba446687a7dbaa2b8dffcab883c71ed5222d2ab Mon Sep 17 00:00:00 2001 From: Thomas Lange Date: Sun, 6 Nov 2022 19:39:49 +0100 Subject: Move smsdb script to it's own repository Move the smsdb script to it's own repository but keep the file and print an information message with the link to the new location. New location: https://github.com/Nerdmind/Android-SMS-Extractor https://code.nerdmind.de/android-sms-extractor/ --- Python/smsdb | 73 +++--------------------------------------------------------- 1 file changed, 3 insertions(+), 70 deletions(-) diff --git a/Python/smsdb b/Python/smsdb index 3f05911..d3970c3 100755 --- a/Python/smsdb +++ b/Python/smsdb @@ -1,71 +1,4 @@ #!/usr/bin/env python3 -# Export all SMS from the SQLite database of the com.android.messaging -# app as simple plaintext sorted by conversation to stdout. -# -# Usage instructions for LineageOS 14.1 (tested on OnePlus X [onyx]): -# 1. Enable USB debugging in the developer options -# 2. Allow root access from ADB in the developer options -# 3. Connect the device and restart the adb daemon in root mode: -# $ adb root -# 4. Pull the corresponding database file: -# $ adb pull /data/data/com.android.messaging/databases/bugle_db . -# 5. Pass the name of the database file to this script: -# $ ./{this_script} bugle_db - -import os -import sys -import sqlite3 -from datetime import datetime - -# Default -date_format_string = "%Y-%m-%d %H:%M:%S" - -# German version -# date_format_string = "am %d.%m.%Y um %H:%M:%S" - -if len(sys.argv) < 2: - exit("Usage: {} database_file > formatted.txt".format(sys.argv[0])) - -if not os.path.isfile(sys.argv[1]): - exit("Could not open file {}".format(sys.argv[1])) - -# Establish connection to local SQLite database -connection = sqlite3.connect(sys.argv[1]) - -# Get a cursor to the SQLite database connection -c = connection.cursor(); - -c.execute("SELECT conversations._id, conversations.name, conversations.participant_normalized_destination \ - FROM conversations WHERE latest_message_id NOT NULL ORDER BY name") - -for conversation in c.fetchall(): - data_id = conversation[0] - data_name = conversation[1] - data_dest = conversation[2] - - print("==================================================") - print("{} [{}]".format(data_name, data_dest)) - print("==================================================") - - c.execute("SELECT messages._id, parts.text, parts.timestamp, participants.sim_slot_id FROM messages \ - LEFT JOIN parts ON messages._id = parts.message_id LEFT JOIN participants ON messages.sender_id = participants._id \ - WHERE messages.conversation_id = ? ORDER BY parts.timestamp", (data_id,)) - - for result in c.fetchall(): - msg_id = result[0] - msg_text = result[1] - msg_time = result[2] - - # Remove the last 3 digits (milliseconds) from timestamp - msg_time = int(str(msg_time)[:-3]) - msg_time_formatted = datetime.fromtimestamp(msg_time).strftime(date_format_string) - - sim_slot_id = result[3] - - # A sim_slot_id equal to 0 indicates that the SMS was sent from the device - if sim_slot_id == 0: - msg_direction = "===>" - else: - msg_direction = "<---" - - print("[{} {}]:\n{}\n".format(msg_time_formatted, msg_direction, msg_text)) +print("This script has been moved to it's own repository:") +print("https://github.com/Nerdmind/Android-SMS-Extractor") +print("https://code.nerdmind.de/android-sms-extractor/") -- cgit v1.2.3