Gelöschten Inhalt von der Benutzerdatenpartition wiederherstellen?


23

So kam es, dass Amanda einen blonden Moment hatte und versehentlich alle ihre Threads in der SMS-App löschte. Ja, "Alle Threads löschen" sollte wahrscheinlich nicht so einfach aufzurufen sein.

Das Telefon ist ein ZTE-Blade, dessen Benutzerdaten in einem YAFFS2-Dateisystem gespeichert sind.

Ich habe ein altes Backup, aber die SMS, die ich wiederherstellen muss, sind von da an. Da sich wahrscheinlich einige auf der SIM-Karte befinden, habe ich einen SIM-Reader bestellt. Ich vermute, dass es sich bei den ungefähr zwanzig meistens um Netzbetreiber-Spam handelt.

Daher verfluche ich meinen ineffektiven Backup-Plan und gelobe, SMS in Zukunft auf GMail zu sichern.

In der Zwischenzeit beschließe ich, mmssms.db wiederherzustellen, oder was davon übrig ist.

Zuerst verbinde ich adb und überprüfe die Halterungen, dann versuche ich, den Block auf ein Bild auf der SD-Karte zu kopieren:

dd if=/dev/block/mtdblock6 of=/sdcard/data.img 

Kein Glück. Ich denke, ein gewaltsames Absteigen wäre eine schlechte Idee und würde wahrscheinlich auf keinen Fall funktionieren.

Daher lade ich eine statisch verknüpfte Kopie von busybox auf die SD-Karte hoch und verwende die Option conv = noerror.

Am Ende hatte ich eine Datei, die immer größer wurde, bis die SD-Karte voll war.

Was mache ich falsch? Nimmt ClockworkMod ein Bild im eigentlichen Sinne auf oder werden nur die Dateien gesichert und in ein Bild gepackt? Gibt es ein YAFFS2-Wiederherstellungsprogramm? (Die zwei Artikel, die ich gelesen habe, lassen es machbar erscheinen, aber ich habe nicht einmal PoC-Code gesehen.)

Hinweise dankbar erhalten /

Bearbeiten: Das Telefon ist gerootet. Sehr verwurzelt :)

Weitere Bearbeitung:

Die meisten Nachrichten in mmssms.db-wal:

ls -al /data/data/com.android.providers.telephony/databases
drwxrwx--x    1 radio    radio         2048 Jul 17 20:16 .
drwxr-xr-x    1 radio    radio         2048 Oct 26  2011 ..
-rw-rw----    1 root     root         60416 Jul 17 20:16 mmssms.db
-rw-rw----    1 radio    radio        32768 Jul 17 16:18 mmssms.db-shm
-rw-rw----    1 radio    radio       628832 Jun 30 19:23 mmssms.db-wal
-rw-rw-rw-    1 root     root         60416 Jul 17 20:16 mmssms.db.xxx
-rw-rw----    1 radio    radio       132096 Jun 18 13:25 telephony.db
-rw-rw----    1 radio    radio        32768 Jul 16 22:14 telephony.db-shm
-rw-rw----    1 radio    radio       106928 Jul 16 22:14 telephony.db-wal

Mit etwas Glück können Sie SMS Backup & Restore zusammenführen.


Ist deine Klinge verwurzelt?
t0mm13b

@Mandy: In Bezug auf Ihre andere Frage: Yaffs2 ist ein Flash - Dateisystem , das für die zugrunde liegenden Flash - Speicher Wear Leveling Schutz hat (es hat ein Protokoll Structered Datenmodell , wo schreibt nicht vorhanden sind , sondern immer auf den Schwanz des „log“ gehen und alter ungenutzter Raum wird vom Kopf zurückgefordert (sehr einfach erklärt). Wenn Sie nicht zu viel geschrieben haben, können Sie wahrscheinlich ältere Instanzen von Dateien finden. Wenn Sie den Teil des Schwanzes von kurz vor dem Löschen ignorieren, könnten Sie Glück haben. Habe noch kein File Carving für YAFFS2 gemacht.
ce4

Antworten:


19

Die SMS-Datenbank ist in /data/data/com.android.providers.telephony/databases/mmssms.dbdem gespeichert , was Sie tun möchten.

Das Beste ist, das USB-Kabel noch nicht anzuschließen:

  1. Starten Sie ClockWorkmod Recovery neu.
  2. Gehen Sie in Reittiere und Lagerung
  3. Wählen mount /data
  4. Stecken Sie den USB ein
  5. Über die Windows-Befehls-Shell oder das Windows-Terminal adb shell
  6. Da Sie sich in ClockworkMod Recovery befinden, sind Sie standardmäßig als Root angemeldet cp /data/data/com.android.providers.telephony/databases/mmssms.db /sdcard/MySmsDatabase.db
  7. Verlassen Sie das adb shellFenster, indem Sie Folgendes eingeben:exit
  8. Jetzt wird Ihre Datenbank auf die SD-Karte kopiert.
  9. Wenn Sie die ClockworkMod-Wiederherstellung beenden und einfach neu starten, wird die Wiederherstellung unmount /datafür Sie durchgeführt.

Zu diesem Zeitpunkt ist Ihre Datenbank jetzt kopiert. Und kann sicher mit etwas wie SqliteMan extrahiert werden . HTH.

Edit: Das OP war interessiert zu wissen, wie ein Dump gemacht werden kann. - Weiter lesen :)

Wenn Sie dies aufrufen (mit angeschlossenem USB und innerhalb des adb shell)

sh-4.1# cat /proc/mtd
dev:    size   erasesize  name
mtd0: 00500000 00020000 "recovery"
mtd1: 00500000 00020000 "boot"
mtd2: 00120000 00020000 "splash"
mtd3: 00080000 00020000 "misc"
mtd4: 02580000 00020000 "cache"
mtd5: 0d700000 00020000 "system"
mtd6: 0cb80000 00020000 "userdata"
mtd7: 00020000 00020000 "oem"
mtd8: 00180000 00020000 "persist"

Welche Partition zu kennen ist der Schlüssel .. So zum Beispiel von meinem Blade, ich sehe , dass Benutzerdaten auf der Partition ist mtd6, in dem die tatsächlichen Partitionsinformationen innerhalb gefunden werden , /dev/mtd/mtdXso dass ihre Angelegenheit , dies zu tun mit cat:

cat /dev/mtd/mtd6 > /sdcard/myuserdata.dump

Und von dort aus kann es /sdcard/myuserdata.dumpabhängig vom Dateisystem, das auf dieser Partition verwendet wird, per Loopback eingehängt werden. Die Laufleistung variiert und natürlich ist es eine Henne-Ei-Situation. Um all dies zu tun, muss das Mobilteil verwurzelt sein.


Das war sehr hilfreich, alle (oder zumindest die meisten) gelöschten SMS befanden sich in mmssms.db-wal: Vielen Dank für den nützlichen Zeiger!
Mandy

Meine Frage ist jedoch: Ist es möglich, ein Bild zu sichern, wenn die Situation es erfordert?
Mandy

Ja, ich werde die Antwort ändern ... :)
t0mm13b

@ t0mm13b Nun, das ist eine großartige Antwort :) +1
Zuul

1
Sie, Sir, sind großartig. Trete mich dafür, dass ich nicht mit find -iname und grep beharrlich bin, aber Panik tut dir das an. Außerdem hätte ich mir ein ordentliches Eejit angeschaut, das alle meine SMS in Strings und weniger in Strings umleitet, also nochmals vielen Dank;)
Mandy,
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.