Khôi phục nội dung bị xóa khỏi phân vùng userdata?


23

Vì vậy, nó đã đi qua, rằng Amanda đã có một khoảnh khắc tóc vàng và xóa tất cả các chủ đề của mình trong ứng dụng SMS do nhầm lẫn. Vâng, "Xóa tất cả các chủ đề" có lẽ không nên quá dễ dàng để gọi.

Điện thoại ZTE Blade, với tất cả dữ liệu người dùng được lưu trữ bất tiện trên hệ thống tệp YAFFS2.

Tôi có một bản sao lưu cũ, nhưng SMS tôi cần khôi phục là từ đó. Có thể có một số trên thẻ SIM, vì vậy tôi đã đặt mua đầu đọc SIM. Dù sao, tôi nghi ngờ rằng hai mươi hoặc hơn thế nó chủ yếu là thư rác của nhà mạng.

Vì vậy, tôi nguyền rủa kế hoạch sao lưu không hiệu quả của mình và thề sẽ sao lưu SMS vào GMail trong tương lai.

Trong khi đó, tôi quyết định khôi phục mmssms.db hoặc những gì còn lại của nó.

Trước tiên, tôi kết nối adb và kiểm tra các mount, sau đó cố gắng sao chép khối vào một hình ảnh trên thẻ SD:

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

Không có may mắn như vậy. Tôi cho rằng việc tháo gỡ cưỡng bức sẽ là một ý tưởng tồi và có lẽ sẽ không hoạt động trong mọi trường hợp.

Vì vậy, tôi tải lên một bản sao của busybox được liên kết tĩnh với thẻ SD và sử dụng tùy chọn conv = noerror.

Điều tôi đã kết thúc là một tập tin tiếp tục tăng kích thước cho đến khi thẻ SD đầy.

Tôi đang làm gì sai? ClockworkMod có lấy một hình ảnh theo đúng nghĩa hay nó chỉ sao lưu các tập tin và đóng gói chúng thành một hình ảnh? Có chương trình phục hồi YAFFS2 không? (Hai bài báo tôi đã đọc làm cho nó có vẻ khả thi nhưng tôi chưa thấy mã PoC)

Bất kỳ manh mối nào nhận được /

Chỉnh sửa: Điện thoại đã được root. Rất rễ

Chỉnh sửa thêm:

Hầu hết các tin nhắn được tìm thấy trong 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

Với bất kỳ may mắn nào, SMS Backup & Restore sẽ cho phép hợp nhất.


Là lưỡi của bạn bắt nguồn từ?
t0mm13b

@Mandy: Liên quan đến câu hỏi khác của bạn: Yaffs2 là một hệ thống tệp flash có chức năng bảo vệ cân bằng hao mòn cho bộ lưu trữ flash bên dưới (nó có một mô hình dữ liệu được ghi lại trong đó ghi không ở vị trí mà thay vào đó luôn đi đến đuôi của "nhật ký" và không gian cũ không sử dụng được lấy lại từ đầu. Giải thích rất đơn giản). Nếu bạn không viết quá nhiều, có lẽ bạn có thể tìm thấy các tệp cũ hơn. Bằng cách bỏ qua phần đuôi từ ngay trước khi xóa, bạn có thể gặp may mắn. Chưa thực hiện khắc tệp cho YAFFS2 cho đến nay tho.
ce4

Câu trả lời:


19

Cơ sở dữ liệu sms được lưu trữ trong /data/data/com.android.providers.telephony/databases/mmssms.dbđó là những gì bạn muốn làm.

Điều tốt nhất để làm là đây, chưa cắm cáp USB:

  1. Khởi động lại vào ClockWorkmod Recovery.
  2. Đi vào Mounts và lưu trữ
  3. Lựa chọn mount /data
  4. Cắm USB
  5. Từ shell lệnh windows hoặc terminal, adb shell
  6. Vì bạn đang ở trong ClockworkMod Recovery, bạn đã root theo mặc định, bây giờ hãy làm điều này cp /data/data/com.android.providers.telephony/databases/mmssms.db /sdcard/MySmsDatabase.db
  7. thoát ra khỏi adb shellbằng cách gõ vào đây:exit
  8. Bây giờ cơ sở dữ liệu của bạn được sao chép vào Thẻ SD.
  9. Thoát khỏi phục hồi ClockworkMod và chỉ cần khởi động lại, phục hồi sẽ unmount /datacho bạn.

Ở giai đoạn này cơ sở dữ liệu của bạn bây giờ được sao chép qua. Và có thể được trích xuất một cách an toàn thông qua việc sử dụng một cái gì đó như SqliteMan . HTH.

Chỉnh sửa: OP đã quan tâm để biết làm thế nào một bãi chứa có thể được thực hiện. - Đọc tiếp :)

Khi bạn gọi điều này (với USB được cắm vào và bên trong 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"

Biết phân vùng nào là chìa khóa .. Vì vậy, ví dụ từ Blade của tôi, tôi có thể thấy userdata nằm trên phân vùng mtd6, trong đó thông tin phân vùng thực tế có thể được tìm thấy trong /dev/mtd/mtdXđó vì vậy vấn đề của việc này là sử dụng cat:

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

Và từ đó, lấy /sdcard/myuserdata.dump, tùy thuộc vào hệ thống tập tin được sử dụng trên phân vùng đó, nó có thể được gắn kết thông qua loop-back. Số dặm sẽ thay đổi và tất nhiên, tình huống gà và trứng của nó, để làm tất cả điều đó, thiết bị cầm tay cần phải được root.


Điều đó hữu ích nhất, tất cả (hoặc ít nhất là hầu hết) các tin nhắn SMS đã xóa đều ở mmssms.db-wal: Rất cám ơn về con trỏ hữu ích!
Mandy

Tuy nhiên, câu hỏi của tôi là - có thể bỏ hình ảnh nếu tình huống yêu cầu không?
Mandy

Có, tôi sẽ sửa đổi câu trả lời ... :)
t0mm13b

@ t0mm13b Bây giờ đây là một câu trả lời tuyệt vời :) +1
Zuul

1
Bạn, thưa ngài, là '# @!% Ing tuyệt vời. Tự đá mình vì đã không kiên trì với find -iname và grep, nhưng hoảng loạn làm điều đó với bạn. Ngoài ra, tôi đã xem xét một cách dễ dàng để chuyển tất cả tin nhắn SMS của tôi thành chuỗi và ít hơn để đọc chúng, vì vậy xin cảm ơn một lần nữa;)
Mandy
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.