Восстановить удаленный контент из раздела userdata?

23

Так получилось, что у Аманды был момент блондинки и она по ошибке удалила все свои темы в приложении SMS. Да, "Удалить все темы", вероятно, не так легко вызвать.

Телефон ZTE Blade, все пользовательские данные которого неудобно хранятся в файловой системе YAFFS2.

У меня есть старая резервная копия, но с тех пор мне нужно восстановить смс. Возможно, на SIM-карте их есть, поэтому я заказал устройство для чтения SIM-карт. Я подозреваю, что двадцать или около того это в основном спам оператора сети, так или иначе.

Итак, я проклинаю свой неэффективный план резервного копирования и обещаю в будущем создать резервную копию 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 Backup & Restore позволит объединить.

Мэнди
источник
Ваш клинок укоренен?
t0mm13b
@Mandy: Относительно вашего другого вопроса: Yaffs2 - это файловая система флеш-памяти, которая имеет защиту от износа для базового флеш-хранилища (у нее есть модель данных с структурированным журналом, где записи не выполняются, а вместо этого всегда идут в конец «журнала»). и старое неиспользуемое пространство восстанавливается из головы. Очень просто объяснил). Если вы не писали слишком много, вы, вероятно, можете найти более старые экземпляры файлов. Игнорируя часть хвоста непосредственно перед удалением, вам может повезти. До сих пор не делали вырезку файлов для YAFFS2.
ce4

Ответы:

19

База данных смс хранится в /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, вы по умолчанию являетесь пользователем root, теперь сделайте это cp /data/data/com.android.providers.telephony/databases/mmssms.db /sdcard/MySmsDatabase.db
  7. выйти из adb shell, набрав в этом:exit
  8. Теперь ваша база данных скопирована на SD-карту.
  9. Вернитесь из восстановления ClockworkMod и просто перезагрузитесь, восстановление будет unmount /dataдля вас.

На этом этапе ваша база данных теперь скопирована. И может быть безопасно извлечен с помощью чего-то вроде SqliteMan . НТН.

Изменить: ОП было интересно узнать, как сделать дамп. - Читать дальше :)

Когда вы вызываете это (с подключенным 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, в зависимости от файловой системы, используемой на этом разделе, он может быть смонтирован с помощью обратной петли. Пробег будет варьироваться, и, конечно же, это ситуация с курицей и яйцом, чтобы сделать все это, трубку нужно укоренить.

t0mm13b
источник
Это было очень полезно, все (или, по крайней мере, большинство) из удаленных SMS были в mmssms.db-wal: Большое спасибо за полезный указатель!
Мэнди
Однако мой вопрос стоит - возможно ли сбросить изображение, если того потребовала ситуация?
Мэнди
Да, я
исправлю
@ t0mm13b Теперь это отличный ответ :) +1
Zuul
1
Вы, сэр, удивительно. Пинаю себя за то, что не настаиваю на поиске -iname и grep, но паника делает это с вами. Кроме того, я бы посмотрел правильное приложение eejit, в котором все мои SMS-сообщения были бы разбиты на строки и меньше, чтобы прочитать их, поэтому еще раз спасибо;)
Мэнди,