Odzyskać skasowaną zawartość z partycji danych użytkownika?

23

Tak się stało, że Amanda miała blond chwilę i przez pomyłkę usunęła wszystkie swoje wątki w aplikacji SMS. Tak, „Usuń wszystkie wątki” prawdopodobnie nie powinno być tak łatwe do wywołania.

Telefon jest ZTE Blade, a wszystkie dane użytkownika są niewygodnie przechowywane w systemie plików YAFFS2.

Mam starą kopię zapasową, ale od tego czasu muszę odzyskać SMS-y. Prawdopodobnie są jakieś na karcie SIM, więc zamówiłem czytnik SIM. Podejrzewam, że dwadzieścia mniej więcej to w większości spam spamowy operatora sieci.

Dlatego przeklinam mój nieskuteczny plan tworzenia kopii zapasowych i przysięgam, że w przyszłości wykonam kopię zapasową SMS-a na Gmailu.

Tymczasem postanawiam odzyskać mmssms.db lub to, co z niego zostało.

Najpierw podłączam adb i sprawdzam mocowania, a następnie próbuję skopiować blok do obrazu na karcie SD:

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

Nie ma takiego szczęścia. Uważam, że wymuszanie zsiadania byłoby złym pomysłem i prawdopodobnie i tak nie zadziała.

Przesyłam więc statycznie połączoną kopię busybox na kartę SD i używam opcji conv = noerror.

Skończyło się to plikiem, który powiększał się aż do zapełnienia karty SD.

Co ja robię źle? Czy ClockworkMod bierze obraz w prawdziwym sensie, czy po prostu tworzy kopię zapasową plików i pakuje je w obraz? Czy istnieje program odzyskiwania YAFFS2? (Dwa artykuły, które przeczytałem, sprawiają, że wydaje się to wykonalne, ale nie widziałem nawet kodu PoC)

Wszelkie wskazówki otrzymane z wdzięcznością /

Edycja: telefon jest zrootowany. Bardzo zakorzeniony :)

Dalsza edycja:

Większość wiadomości znalezionych w 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

Przy odrobinie szczęścia SMS Backup & Restore pozwoli na scalenie.

Mandy
źródło
Czy twoje ostrze jest zakorzenione?
t0mm13b
@Mandy: Jeśli chodzi o twoje inne pytanie: Yaffs2 to system plików flash, który ma funkcję ochrony przed zużyciem dla bazowej pamięci flash (ma model danych o strukturze dziennika, w którym zapisy nie są na miejscu, ale zamiast tego zawsze przechodzą do końca „dziennika” a stara nieużywana przestrzeń jest odzyskiwana z głowy. Bardzo prosto wyjaśnione). Jeśli nie napisałeś zbyt wiele, prawdopodobnie znajdziesz starsze wystąpienia plików. Ignorując część ogona tuż przed usunięciem, możesz mieć szczęście. Jak dotąd nie wykonałem rzeźbienia plików dla YAFFS2.
ce4

Odpowiedzi:

19

Baza danych SMS jest przechowywana, w /data/data/com.android.providers.telephony/databases/mmssms.dbktórej chcesz to zrobić.

Najlepiej to zrobić, nie podłączaj jeszcze kabla USB:

  1. Uruchom ponownie w ClockWorkmod Recovery.
  2. Idź do wierzchowce i magazyn
  3. Wybierz mount /data
  4. Podłącz USB
  5. Z poziomu powłoki poleceń lub terminala systemu Windows adb shell
  6. Ponieważ jesteś w ClockworkMod Recovery, domyślnie jesteś rootem, teraz zrób to cp /data/data/com.android.providers.telephony/databases/mmssms.db /sdcard/MySmsDatabase.db
  7. wyjdź z adb shellwpisując:exit
  8. Teraz twoja baza danych jest kopiowana na kartę SD.
  9. Wróć do odzyskiwania ClockworkMod i po prostu uruchom ponownie, odzyskiwanie będzie unmount /datadla Ciebie.

Na tym etapie twoja baza danych jest teraz kopiowana. I można go bezpiecznie wyodrębnić za pomocą czegoś takiego jak SqliteMan . HTH.

Edycja: OP był zainteresowany tym, jak zrobić zrzut. - Czytaj :)

Po wywołaniu tego (z podłączonym USB i wewnątrz 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"

Wiedząc, która partycja jest kluczem .. Tak na przykład z mojego Blade, widzę, że userdata jest na partycji mtd6, w której rzeczywiste informacje o partycjach można znaleźć w /dev/mtd/mtdXwięc jego sprawa robi to za pomocą cat:

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

A stamtąd, biorąc pod /sdcard/myuserdata.dumpuwagę system plików używany na tej partycji, można go zamontować za pomocą pętli zwrotnej. Przebieg będzie się różnić i oczywiście jest to sytuacja z kurczakiem i jajami, aby to wszystko zrobić, telefon musi być zrootowany.

t0mm13b
źródło
To było najbardziej pomocne, wszystkie (lub przynajmniej większość) usuniętych SMS-ów były w mmssms.db-wal: Wielkie dzięki za przydatny wskaźnik!
Mandy,
Moje pytanie jednak pozostaje - czy można zrzucić zdjęcie, jeśli sytuacja tego wymaga?
Mandy,
Tak,
zmienię
@ t0mm13b To świetna odpowiedź :) +1
Zuul,
1
Pan, proszę pana, jesteś niesamowity. Kopanie siebie za to, że nie upierałem się przy znajdowaniu -iname i grep, ale panika to robi. Poza tym szukałem właściwego eejita przesyłającego wszystkie moje SMS-y do ciągów, a mniej do ich przeczytania, więc jeszcze raz dziękuję;)
Mandy,