Android Lies die letzten SMS-Nachrichten von der Kommandozeile aus

18

Ich habe vor kurzem meinen Android-Bildschirm gebrochen. (Nochmal)

Es ist ein T-Mobile G2

Der Versuch, mit meinem beschäftigten technologiebezogenen Leben Schritt zu halten, ist schwierig genug, ohne die Verbindung zu allen zu verlieren.

Ich habe das Telefon gerootet und das USB-Debugging bereits aktiviert.

Weiß jemand, wie ich meine letzten SMS-Nachrichten über die AdB-Shell überprüfen würde, damit ich mit der Arbeit Schritt halten kann, während ich speichere, um ein neues Telefon oder einen Ersatzbildschirm zu erhalten?

Vielen Dank für alle, die diesbezüglich Informationen haben.

BEARBEITEN

Reaktion auf Eldarerathis

C:\android-sdk\platform-tools>adb shell
$ cd /data/data/com.android.providers.telephony/databases
cd /data/data/com.android.providers.telephony/databases
$ sqlite3 mmssms.db
sqlite3 mmssms.db
sqlite3: permission denied
$

kann die datei nicht chmod. Weißt du eigentlich wo es ist?

$ chmod +x sqlite3
chmod +x sqlite3
Bad mode
$

su lässt mir nur grundlegende Befehle

$ su
su
# cd /data/data/com.android.providers.telephony/databases
cd /data/data/com.android.providers.telephony/databases
# sqlite3 mmssms.db
sqlite3 mmssms.db
sqlite3: not found
#

Korrigiert

sqlite wurde nicht installiert

C:\android-sdk\platform-tools>adb shell
$ cd /data/data/com.android.providers.telephony/databases
cd /data/data/com.android.providers.telephony/databases
$ sqlite3 mmssms.db
sqlite3 mmssms.db
SQLite version 3.6.22
Enter ".help" for instructions
sqlite>

Um auf die Datenbank zugreifen zu können, musste ich root sein.

C:\android-sdk\platform-tools>adb shell
$ su
# cd /data/data/com.android.providers.telephony/databases
cd /data/data/com.android.providers.telephony/databases
# sqlite3 mmssms.db
sqlite3 mmssms.db
SQLite version 3.6.22
Enter ".help" for instructions
sqlite>

Vielen Dank Eldarerathis

Dieser Link hat geholfen

Der faule Coder
quelle
Es sieht so aus, als hätten Sie die sqlite3Binärdatei nicht auf Ihrem Gerät. Der erste Link in meiner Antwort enthält Anweisungen, die Ihnen bei der Installation helfen /system/bin. Hier ist ein Link zur Binärdatei.
Eldarerathis

Antworten:

10

Das ist wirklich hässlich, aber Sie können sie von der Befehlszeile aus lesen, indem Sie sqlite3zum Anzeigen der Datenbankeinträge verwenden. Sie müssen hierfür wahrscheinlich eine Binärdatei ausgraben, es sei denn, Sie haben ein benutzerdefiniertes ROM installiert. Es gibt einige Anweisungen für die Installation der binären in dieser Stack - Überlauf Frage und SuperOneClick kommt mit ihm verpackt (eine Kopie der binären selbst gefunden werden kann hier ).

Wenn Sie die Binärdatei installieren müssen, ermitteln Sie mithilfe von mount(ohne Parameter), wo sich Ihre /systemPartition physisch befindet ( /dev/block/mtdblock3z. B. meine ). Folgen Sie dann den Anweisungen im ersten Link oben und hängen Sie sie mit dem folgenden Befehl im Lese- / Schreibmodus wieder ein:

mount -o rw,remount /your/system/partition /system

Wenn Sie eine sqlite3öffnen möchten adb shell, wechseln Sie zu root mit suund führen Sie dann die folgenden Schritte aus:

# cd /data/data
cd /data/data
# cd com.android.providers.telephony/databases ***
cd com.android.providers.telephony/databases
# sqlite3 mmssms.db
sqlite3 mmssms.db
SQLite version 3.7.2
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> SELECT * FROM sms WHERE read=0;

Dadurch werden alle Zeilen für alle ungelesenen Nachrichten aus der Tabelle abgerufen. Die Spalten in der Tabelle sind folgendermaßen definiert (damit Sie die Spalten kürzen können SELECT):

CREATE TABLE sms (_id INTEGER PRIMARY KEY,thread_id INTEGER,address TEXT,
  person INTEGER,date INTEGER,protocol INTEGER,read INTEGER DEFAULT 0,
  status INTEGER DEFAULT -1,type INTEGER,reply_path_present INTEGER,
  subject TEXT,body TEXT,service_center TEXT,locked INTEGER DEFAULT 0,
  error_code INTEGER DEFAULT 0,seen INTEGER DEFAULT 0);

*** Hinweis für die markierte Zeile: Dies kann je nach Gerät und Android-Version geringfügig abweichen, weshalb ich diesen cdBefehl separat angegeben habe. Ich denke, es war früher com.android.providers/telephony/databasesauf älteren Geräten, aber ich erinnere mich nicht ganz. Hier können Sie lsnach dem richtigen Pfad suchen.


Alternativ können Sie versuchen, die .db-Datei auf Ihre SD-Karte zu kopieren (oder mit zu ziehen adb pull) und sie dann mit sqlite auf Ihrem Computer zu lesen.

eldarerathis
quelle
Ich habe es versucht und es scheint, dass sqlite3 die Erlaubnis verweigert hat
es heißt schlechter Modus
@Jason: Du musst root sein, um dieses Verzeichnis lesen zu können (nur suvorher ausführen ).
Eldarerathis
@Jason: Hm, dann benutze chmod 0755 sqlite3. Vielleicht chmodmag die Lager- Binärdatei den +xParameter nicht.
Eldarerathis
sobald ich su ausführe. Es tut so, als gäbe es keine Befehle
3

Dank des schönen Hinweises von eldarerathis mache ich es einfach

DB=/data/data/com.android.providers.telephony/databases/mmssms.db
echo 'select address,body from sms;' | ./sqlite3 -csv $DB 

um meine SMS von meinem root Prompt aus zu lesen.

Da ich nicht sqlite3 hatte, musste ich zuerst herunterladen es mit

curl http://dl.dropbox.com/u/16958605/sqlite3
chmod a+x sqlite3

Oder sehen Sie sich das SQLite3-Installationsprogramm bei Google Play an (wenn Sie der Dropbox-Quelle nicht vertrauen).

user23548
quelle
1
Eine dl.dropbox.com-URL für diese Binärdatei fühlt sich nicht sicher an. Können Sie eine offizielle Quelle angeben?
pzkpfw
1

Für den Fall, dass Sie mehr Details als nur Absender und Nachricht (wie in dieser Antwort ) interessiert sind , habe ich gerade einen schönen Artikel zum Thema gefunden: Lesen Sie SMS direkt aus der SQLite-Datenbank in Android . Siehe auch: Die Nachrichtendatenstruktur .

Noch besser, schauen Sie sich Github an: ANDROID-SMS ist ein in Python geschriebenes Tool, das alle SMS-Nachrichten wiederherstellt und sie in SMS-Konversationen mit bereitgestellten Statistiken organisiert. Es erholt sich auch alle MMS - Nachrichten und organisiert sie in MMS Gespräche mit den jeweiligen Dateien. Ich habe es (noch) nicht selbst ausprobiert (habe es erst vor ein paar Minuten gefunden), aber es klingt ziemlich ordentlich.

Natürlich funktioniert dieses Programm nicht direkt auf dem Android-Gerät, sondern auf Ihrem Computer (wo Python 2.7 mit SQLite3 für Python erforderlich ist). Sie müssen also zuerst die Datenbank vom Gerät abrufen. Alle erforderlichen Schritte werden auf der Github-Hauptseite des Projekts beschrieben.

Izzy
quelle
0

Eine andere Lösung, die ich erfunden habe, verwendet eine App auf dem Telefon, die auf SMS reagiert und diese in einer Datei speichert, die Sie mit ADB lesen können.

  • Installieren Sie eine Tasker-ähnliche App, die ich mit E-Robot erstellt habe
  • Neuen Befehl erstellen
  • Ereignis hinzufügen Contact=>SMS
  • Aktion hinzufügen Memory=>Write file, dort können Sie SMS jedes Mal in eine neue Datei oder in dieselbe mit Trennzeichen speichern. Speichern Sie es auf jeden Fall auf / sdcard oder auf einem über ADB zugänglichen Pfad.
  • Überwachen Sie diesen Pfad mit ADB und lesen Sie den SMS-Inhalt.
Fr0sT
quelle