diff options
Diffstat (limited to 'Python')
-rwxr-xr-x | Python/smsdb | 73 |
1 files 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/") |