Recuperare contenuti cancellati dalla partizione userdata?


23

Quindi è successo che Amanda ha avuto un momento biondo e ha cancellato tutti i suoi thread nell'app SMS per errore. Sì, "Elimina tutti i thread" probabilmente non dovrebbe essere così facile da invocare.

Il telefono è un ZTE Blade, con tutti i suoi dati utente memorizzati in modo scomodo su un filesystem YAFFS2.

Ho un vecchio backup, ma da allora gli SMS che devo recuperare. Probabilmente ce ne sono alcuni sulla carta SIM, quindi ho ordinato un lettore SIM. Ho il sospetto che una ventina di quelli che detengono siano per lo più spam di operatori di rete, comunque.

Quindi, maledico il mio piano di backup inefficace e prometto di eseguire il backup di SMS su GMail in futuro.

Nel frattempo, decido di recuperare mmssms.db, o ciò che ne rimane.

Innanzitutto, collego adb e controllo i montaggi, quindi provo a copiare il blocco su un'immagine sulla scheda SD:

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

Non molta fortuna. Credo che smontare forzatamente sarebbe una cattiva idea e probabilmente non funzionerà in nessun caso.

Quindi, carico una copia staticamente collegata di busybox sulla scheda SD e utilizzo l'opzione conv = noerror.

Quello che ho finito è stato un file che ha continuato ad aumentare di dimensioni fino a riempire la scheda SD.

Che cosa sto facendo di sbagliato? ClockworkMod acquisisce un'immagine nel vero senso della parola o esegue semplicemente il backup dei file e li comprime in un'immagine? Esiste un programma di recupero YAFFS2? (I due articoli che ho letto sembrano fattibili ma non ho visto nemmeno il codice PoC)

Eventuali indizi ricevuti con gratitudine /

Modifica: il telefono è rootato. Molto radicato :)

Ulteriore modifica:

La maggior parte dei messaggi trovati 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

Con un po 'di fortuna, SMS Backup & Restore consentirà una fusione.


La tua lama è radicata?
t0mm13b,

@Mandy: per quanto riguarda l'altra tua domanda: Yaffs2 è un file system flash che ha una protezione del livellamento dell'usura per l'archiviazione flash sottostante (ha un modello di dati strutturato in log in cui le scritture non sono in atto ma invece vanno sempre alla coda del "log" e il vecchio spazio inutilizzato viene recuperato dalla testa. Molto semplicemente spiegato). Se non hai scritto troppo puoi probabilmente trovare vecchie istanze di file. Ignorando la parte della coda appena prima dell'eliminazione potresti essere fortunato. Fino ad ora non ho ancora finito di intagliare i file per YAFFS2.
Ce4

Risposte:


19

Il database sms è memorizzato in /data/data/com.android.providers.telephony/databases/mmssms.dbcui è quello che vuoi fare.

La cosa migliore da fare, è questa, non collegare ancora il cavo USB:

  1. Riavvia in ClockWorkmod Recovery.
  2. Vai su Supporti e archiviazione
  3. Selezionare mount /data
  4. Collega l'USB
  5. Dalla shell o dal terminale dei comandi di Windows, adb shell
  6. Dato che sei in ClockworkMod Recovery, sei root per impostazione predefinita, ora fai questo cp /data/data/com.android.providers.telephony/databases/mmssms.db /sdcard/MySmsDatabase.db
  7. uscire adb shellda digitando questo:exit
  8. Ora il tuo database viene copiato sulla scheda SD.
  9. Esci dal ripristino di ClockworkMod e riavvia semplicemente, il ripristino sarà unmount /dataper te.

A questo punto il tuo database è ora copiato. E può essere estratto in sicurezza usando qualcosa come SqliteMan . HTH.

Modifica: l'OP era interessato a sapere come si può fare un dump. - Continuare a leggere :)

Quando lo invochi (con USB collegato e all'interno di 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"

Conoscere quale partizione è la chiave .. Quindi, ad esempio dal mio Blade, posso vedere che userdata si trova sulla partizione mtd6, in cui è possibile trovare le informazioni sulla partizione effettiva, /dev/mtd/mtdXquindi è una questione di farlo usando cat:

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

E da lì, prendendo il /sdcard/myuserdata.dump, a seconda del filesystem utilizzato su quella partizione, può essere montato tramite loop-back. Il chilometraggio varierà e, naturalmente, è una situazione da gallina e uovo, per fare tutto ciò, il portatile deve essere radicato.


È stato molto utile, tutti (o almeno la maggior parte) degli SMS eliminati erano in mmssms.db-wal: Mille grazie per l'utile puntatore!
Mandy,

La mia domanda rimane, però: è possibile scaricare un'immagine se la situazione lo richiedeva?
Mandy,

Sì, modificherò la risposta ... :)
t0mm13b,

@ t0mm13b Questa è un'ottima risposta :) +1
Zuul,

1
Signore, sei '# @!% Ing fantastico. Calciami per non persistere con find -iname e grep, ma il panico ti fa questo. Inoltre, avrei cercato un vero eejit che reindirizzava tutti i miei SMS in stringhe e meno per leggerli, quindi grazie ancora;)
Mandy,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.