Pulihkan konten yang dihapus dari partisi data pengguna?

23

Maka terjadilah, bahwa Amanda memang memiliki momen pirang dan menghapus semua utasnya di aplikasi SMS secara tidak sengaja. Ya, "Hapus semua utas" mungkin seharusnya tidak terlalu mudah untuk dipanggil.

Ponsel ini adalah ZTE Blade, dengan semua data penggunanya disimpan secara tidak nyaman di sistem file YAFFS2.

Saya memiliki cadangan lama, tetapi SMS yang perlu saya pulihkan adalah sejak saat itu. Mungkin ada beberapa di kartu SIM, jadi saya sudah memesan pembaca SIM. Saya menduga bahwa dua puluh atau lebih itu sebagian besar adalah spam operator jaringan.

Jadi, saya mengutuk rencana cadangan tidak efektif saya dan bersumpah untuk mencadangkan SMS ke GMail di masa depan.

Sementara itu, saya memutuskan untuk memulihkan mmssms.db, atau apa yang tersisa.

Pertama, saya menghubungkan adb dan memeriksa tunggangan, kemudian mencoba untuk menyalin blok ke gambar pada kartu SD:

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

Tidak beruntung. Saya alasan turun secara paksa akan menjadi ide yang buruk, dan mungkin tidak akan berhasil dalam hal apapun.

Jadi, saya mengunggah salinan busybox yang terhubung secara statis ke kartu SD dan menggunakan opsi conv = noerror.

Yang akhirnya saya dapatkan adalah file yang terus bertambah ukurannya hingga kartu SD terisi.

Apa yang saya lakukan salah? Apakah ClockworkMod mengambil gambar dalam arti sebenarnya atau hanya mencadangkan file dan mengemasnya menjadi gambar? Apakah ada program pemulihan YAFFS2? (Dua makalah yang saya baca membuatnya tampak layak tetapi saya belum melihat kode PoC)

Semua petunjuk dengan penuh terima kasih diterima /

Sunting: Telepon di-root. Berakar sangat :)

Sunting lebih lanjut:

Sebagian besar pesan ditemukan di 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

Dengan sedikit keberuntungan, SMS Backup & Restore akan memungkinkan penggabungan.

Mandy
sumber
Apakah bilah Anda sudah di-root?
t0mm13b
@Mandy: Mengenai pertanyaan Anda yang lain: Yaffs2 adalah sistem file flash yang telah memakai perlindungan leveling untuk penyimpanan flash yang mendasarinya (ia memiliki model data yang diilhami log di mana penulisan tidak ada di tempat tetapi sebaliknya selalu menuju ke ujung "log" dan ruang lama yang tidak digunakan direklamasi dari kepala. Jika Anda tidak menulis terlalu banyak, Anda mungkin dapat menemukan contoh file yang lebih lama. Dengan mengabaikan bagian dari ekor sebelum penghapusan Anda bisa beruntung. Belum selesai mengukir file untuk YAFFS2 sejauh ini.
ce4

Jawaban:

19

Basis data sms disimpan di /data/data/com.android.providers.telephony/databases/mmssms.dbtempat yang ingin Anda lakukan.

Hal terbaik untuk dilakukan, apakah ini, jangan tancapkan kabel USB dulu:

  1. Reboot ke Pemulihan ClockWorkmod.
  2. Pergilah ke Mounts and Storage
  3. Memilih mount /data
  4. Tancapkan USB
  5. Dari shell perintah atau terminal windows, adb shell
  6. Karena Anda berada di ClockworkMod Recovery, Anda secara default root, lakukan ini cp /data/data/com.android.providers.telephony/databases/mmssms.db /sdcard/MySmsDatabase.db
  7. keluar dari adb shelldengan mengetikkan ini:exit
  8. Sekarang basis data Anda disalin ke SD-Card.
  9. Kembali dari pemulihan ClockworkMod dan baru saja reboot, pemulihan akan unmount /datauntuk Anda.

Pada tahap ini basis data Anda sekarang disalin. Dan dapat diekstraksi dengan aman menggunakan sesuatu seperti SqliteMan . HTH.

Sunting: OP tertarik untuk mengetahui bagaimana dump dapat dilakukan. - Baca terus :)

Ketika Anda menjalankan ini (dengan USB dicolokkan ke dalam dan di dalam 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"

Mengetahui yang partisi adalah kuncinya .. Jadi misalnya dari pisau saya, saya dapat melihat bahwa userdata adalah pada partisi mtd6, di mana informasi partisi yang sebenarnya dapat ditemukan dalam /dev/mtd/mtdXjadi masalah melakukan ini dengan menggunakan cat:

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

Dan dari sana, mengambil /sdcard/myuserdata.dump, tergantung pada sistem file yang digunakan pada partisi itu, dapat dipasang melalui loop-back. Jarak tempuh akan bervariasi dan tentu saja, ini situasi ayam dan telur, untuk melakukan semua itu, handset harus di-root.

t0mm13b
sumber
Itu sangat membantu, semua (atau paling tidak sebagian besar) dari SMS yang dihapus berada di mmssms.db-wal: Terima kasih banyak untuk pointer yang berguna!
Mandy
Pertanyaan saya tetap ada - apakah mungkin untuk membuang gambar jika situasi menuntutnya?
Mandy
Ya, saya akan mengubah jawabannya ... :)
t0mm13b
@ t0mm13b Sekarang ini jawaban yang bagus :) +1
Zuul
1
Anda, Tuan, benar-benar luar biasa. Menendang diriku sendiri karena tidak bertahan dengan menemukan-nama dan grep, tetapi panik melakukan itu untukmu. Juga, saya akan melihat eejit yang tepat mem-pipkan semua SMS saya ke string dan lebih sedikit untuk membacanya, jadi terima kasih lagi;)
Mandy