사용자 데이터 파티션에서 삭제 된 컨텐츠를 복구 하시겠습니까?


23

그래서 아만다는 금발의 순간을 보냈고 실수로 SMS 앱의 모든 스레드를 삭제했습니다. 예, "모든 스레드 삭제"는 호출하기가 쉽지 않을 것입니다.

휴대 전화는 ZTE 블레이드이며 모든 사용자 데이터가 YAFFS2 파일 시스템에 불편하게 저장되어 있습니다.

오래된 백업이 있지만 복구해야 할 SMS는 그 이후부터 있습니다. SIM 카드에 일부가있을 수 있으므로 SIM 리더를 주문했습니다. 어쨌든 20 개 정도가 네트워크 운영자 스팸이라고 생각합니다.

그래서 나는 비효율적 인 백업 계획을 저주하고 앞으로 SMS를 GMail에 백업하겠다고 약속합니다.

한편, mmssms.db 또는 남은 것을 복구하기로 결정했습니다.

먼저 adb를 연결하고 마운트를 확인한 다음 블록을 SD 카드의 이미지에 복사하려고 시도합니다.

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

그런 운이 없습니다. 나는 강제로 해체하는 것이 나쁜 생각이라고 생각하며 어쨌든 작동하지 않을 것입니다.

따라서 정적으로 링크 된 busybox 사본을 SD 카드에 업로드하고 conv = noerror 옵션을 사용합니다.

내가 끝내었던 것은 SD 카드가 가득 찰 때까지 크기가 계속 증가하는 파일이었습니다.

내가 무엇을 잘못하고 있지? ClockworkMod는 진정한 의미에서 이미지를 가져 오거나 파일을 백업하여 이미지로 압축합니까? YAFFS2 복구 프로그램이 있습니까? (내가 읽은 두 논문은 그것이 가능해 보이지만 PoC 코드조차 보지 못했다)

감사하게받은 단서 /

편집 : 전화가 루팅되었습니다. 매우 뿌리 :)

추가 편집 :

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

운 좋게도 SMS 백업 및 복원은 병합을 허용합니다.


당신의 칼날은 뿌리입니까?
t0mm13b

@Mandy : 다른 질문과 관련하여 : Yaffs2는 기본 플래시 스토리지에 대한웨어 레벨링 보호 기능이있는 플래시 파일 시스템입니다 ( 쓰기가없는 로그 구조화 된 데이터 모델 이 있지만 항상 "로그"의 꼬리 부분으로 이동) 사용하지 않은 오래된 공간이 헤드에서 재생됩니다. 너무 많이 쓰지 않으면 아마도 오래된 파일 인스턴스를 찾을 수 있습니다. 삭제 직전에 꼬리 부분을 무시하면 운이 좋을 수 있습니다. 지금까지 YAFFS2에 대한 파일 조각을 수행하지 않았습니다.
ce4

답변:


19

SMS 데이터베이스가 저장되어 /data/data/com.android.providers.telephony/databases/mmssms.db원하는 작업을 수행합니다.

가장 좋은 방법은 USB 케이블을 아직 연결하지 않은 것입니다.

  1. ClockWorkmod Recovery로 재부팅하십시오.
  2. 마운트 및 스토리지로 이동
  3. 고르다 mount /data
  4. USB를 연결하십시오
  5. Windows 명령 쉘 또는 터미널에서 adb shell
  6. ClockworkMod Recovery에 있기 때문에 기본적으로 루트입니다. cp /data/data/com.android.providers.telephony/databases/mmssms.db /sdcard/MySmsDatabase.db
  7. 다음 adb shell을 입력하여 종료 하십시오.exit
  8. 이제 데이터베이스가 SD 카드로 복사되었습니다.
  9. ClockworkMod 복구에서 벗어나 재부팅 만하면 복구가 가능 unmount /data합니다.

이 단계에서 이제 데이터베이스가 복사됩니다. 그리고 SqliteMan 과 같은 것을 사용하여 안전하게 추출 할 수 있습니다 . HTH.

편집 : OP는 덤프 수행 방법을 알고 싶어했습니다. - 읽어 :)

당신이 호출 할 때 (USB에와 내 연결 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"

어떤 파티션을 아는 것은 그래서 내 블레이드에서 예를 들어, 내가 그 볼 수 있습니다 .. 열쇠 유저 데이터가 파티션에 mtd6실제 파티션 정보가 내에서 발견 할 수있는, /dev/mtd/mtdX사용이 일의 문제 때문에 cat:

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

거기 /sdcard/myuserdata.dump에서 해당 파티션에 사용 된 파일 시스템에 따라를 사용하여 루프백을 통해 마운트 할 수 있습니다. 주행 거리는 다양하며 당연히 닭과 계란 상황입니다.이 모든 것을 수행하려면 핸드셋을 근절해야합니다.


삭제 된 SMS의 모든 것 (또는 적어도 대부분)은 mmssms.db-wal에있었습니다. 유용한 포인터에 감사드립니다.
Mandy

내 질문은, 상황이 요구하면 이미지를 덤프 할 수 있습니까?
Mandy

그렇습니다, 나는 대답을 수정할 것이다 ... :)
t0mm13b

@ t0mm13b 이제 이것은 좋은 답변입니다 :) +1
Zuul

1
선생님, '# @! % ing 최고입니다. find -iname 및 grep을 유지하지 않고 나 자신을 걷어차지만 패닉은 당신에게 그것을합니다. 또한, 나는 모든 SMS를 문자열로 파이프하고 덜 읽을 수있는 적절한 eejit을 보았습니다. 다시 한번 감사드립니다;)
Mandy
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.