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.


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.


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,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.