Восстановление данных из внутренней памяти на Android для чайников

в 7:02, , рубрики: android, big data, Восстановление данных, чайник - чайнику

Сейчас всё больше смартфонов идут без слота для sd-card, и информацию приходится хранить на встроенной памяти с доступом к ней по MTP. Такой режим подключения не позволяет стандартными средствами восстановить данные телефона после waip’а или случайного удаления.

Сегодня на примере связки Xiaomi Mi2s и Windows 8.1 я постараюсь рассказать, как можно восстановить утерянные данные, кому интересно, добро пожаловать под кат.

Следует заметить, что если вы по ошибке отформатировали внутреннюю память смартфона/планшета/смартпэда, то не стоит расстраиваться, а главное, ни в коем случае не нужно ничего записывать на память, так у вас получится восстановить больше данных.

Протокол MPT не позволяет компьютеру распознать подключенный девайс как USB-накопитель и программы для восстановления не могут просканировать такое устройство и спасти данные, поэтому нам потребуется скопировать весь внутренний раздел памяти в виде образа системы.

Подготовка PC

Для того, чтобы скопировать раздел системы, нам понадобится:

Сперва устанавливаем USB-драйвера для вашего устройства и ADB. После этого советую перезагрузить ПК.

Cygwin

Запускаем скаченный файл. Install from internet > Далее > Далее > Direct connection (если вы не используете прокси и VPN) > выбираем сервер, с которого будут качаться модули (я качал с box-soft.com) > Далее произойдет загрузка списка модулей и откроется окно с доступными для скачивания > Нам понадобится пункт Devel, а в нём все подпункты, название которых начинается с букв gcc > Далее начнется загрузка выбранных модулей и дальнейшая их установка.

Восстановление данных из внутренней памяти на Android для чайников

VHDtool

Создаём папку с адресом C:cygwin6400 (имя не имеет значения, не стоит только использовать буквы отличные от латиницы), здесь будет лежать наш образ. Копируем в папку VHDtool.exe.

Netcat

Скачанный архив распаковываем в папку C:cygwin64

FileZilla

В ходе инсталяции соглашаемся на все стандартные установки.
После установки FileZilla запустится автоматом, но из программы необходимо выйти и запустить её от имени Администратора.
При запуске FileZilla спросит имя сервера, оставляем всё как есть.

Восстановление данных из внутренней памяти на Android для чайников

Далее заходим Edit — Settings и делаем следующие настройки:

listen on those ports 40
timeout settings — по умолчанию стоит 120, 60, 60, а мы ставим везде 0 и нажимаем ОК.
Заходим в edit — users. В окошке users создаем нового юзера. В моем случае это юзер qwer.
Нажимаем Add — пишем имя — нажимаем ОК.

Пароль pass.

Далее в том же меню Users, слева выбираем закладку Shared folders. Заходим туда и добавляем папку в которую будет заливаться наш блок. Нажимаем Add и добавляем папку C:cygwin6400. В окошке появится путь к этой папке. Если слева от надписи C:cygwin6400 не будет буквы H, то нужно нажать Set as home dir. Затем выделив строчку C:cygwin6400 нужно отметить права Read и Write галочками. Затем нажать ОК.

Восстановление данных из внутренней памяти на Android для чайниковВосстановление данных из внутренней памяти на Android для чайников

ADB

Нам понадобятся следующие файлы:

  • adb.exe
  • AdbWinApi.dll
  • adb-windows.exe
  • AdbWinUsbApi.dll
  • fastboot.exe

Скачать их можно на 4pda.
Или вытащить из дистрибутива Android SDK.

Копируем их в папку C:cygwin64bin

Отключаем интернет полностью, если вы используете ноутбук, то воспользуйтесь режимом полёта.

Подготовка Android-устройства

Вам понадобится root.
Свежий BusyBox.
И включенная отладка по USB.

Режим модема по USB

Нам понадобится подключить аппарат по USB к вашему ПК и включить режим модема по USB. Я использую CyanogenMod 11 и у меня этот режим находится по пути: Настройки > Беспроводные сети > Ещё… > Режим модема > USB-модем

Скриншот

Восстановление данных из внутренней памяти на Android для чайников

Теперь нам необходимо узнать, какой IPv4 адрес получил ваш компьютер.
Идем по пути: Панель управленияСеть и ИнтернетЦентр управления сетями и общим доступом

Восстановление данных из внутренней памяти на Android для чайников

Кликаем по надписи ’Подключение по локальной сети’ далее Сведения и копируем адрес IPv4.

Восстановление данных из внутренней памяти на Android для чайников

В моём случае это 192.168.42.79

Важно! При каждом переподключении USB кабеля и вкл/выкл режима модема IPv4 будет меняться.

Какой блок памяти нам нужен?

Вся память в вашем устройстве делится на логические блоки, нам не нужно качать все, достаточно понять, какой раздел содержит стёртую информацию.

Для этого подключаем ваш аппарат к ПК USB-шнурком и от имени администратора запускаем Cygwin.bat в папке C:cygwin64

Вводим команду:

adb devices

В список подключенных девайсов не должен быть пуст, если после строчки List of devices attached пусто, то вы не установили USB-драйвера или не включили отладку по USB.

Когда всё идет хорошо, консоль выглядит так:

Восстановление данных из внутренней памяти на Android для чайников

20352f2c – мой Xiaomi Mi2s

Теперь нам необходимо посмотреть список блоков памяти, для этого вводим построчно следующие команды:

adb shell
su
find /dev/block/platform/ -name 'mmc*' -exec fdisk -l {} ; > /sdcard/list_of_partitions.txt

Hint: если вам лень вручную переписывать команды или вы боитесь допустить ошибку, то можно воспользоваться копированием, но вставить привычным способом строчку в консоль не выйдет, поэтому необходимо кликнуть правой кнопкой мыши по окну консоли, далее выбрать изменить > вставить.

Восстановление данных из внутренней памяти на Android для чайников

После чего во внутренней памяти появится файл list_of_partitions.txt, который нам необходимо скопировать на ПК и изучить.

Мой файл имеет вид

Disk /dev/block/platform/msm_sdcc.1/mmcblk0p27: 25.6 GB, 25698483712 bytes
4 heads, 16 sectors/track, 784255 cylinders
Units = cylinders of 64 * 512 = 32768 bytes

Disk /dev/block/platform/msm_sdcc.1/mmcblk0p27 doesn't contain a valid partition table

Disk /dev/block/platform/msm_sdcc.1/mmcblk0p26: 3758 MB, 3758096384 bytes
4 heads, 16 sectors/track, 114688 cylinders
Units = cylinders of 64 * 512 = 32768 bytes

Disk /dev/block/platform/msm_sdcc.1/mmcblk0p26 doesn't contain a valid partition table

Disk /dev/block/platform/msm_sdcc.1/mmcblk0p25: 402 MB, 402653184 bytes
4 heads, 16 sectors/track, 12288 cylinders
Units = cylinders of 64 * 512 = 32768 bytes

Disk /dev/block/platform/msm_sdcc.1/mmcblk0p25 doesn't contain a valid partition table

итд…

Внутренней памяти в моём аппарате 32 GB. Поэтому я ищу самый большой раздел, в моём случае это mmcblk0p27 размером 25,6 GB, у вас он скорее всего будет иметь другое имя, или вообще не будет иметь приписки p**. Безусловно, никто не гарантирует что именно самый большой раздел окажется тем самым на котором еще совсем недавно лежали ваши фото, видео, документы и тд., но в 90% случаев это оказывается именно тот раздел памяти который нам нужен. В противном случае вам придется по порядку копировать все образы и проверять каждый из них.

Копируем раздел памяти на ПК.

Если вы уже закрыли окно Cygwin, то запускаем его снова от имени администратора через Cygwin.bat

Вводим команды построчно:

adb shell
su
mkfifo /cache/myfifo
ftpput -v -u qwer -p pass -P 40 192.168.42.79 mmcblk0p27.raw /cache/myfifo

Не забудьте внести соответствующие корректировки в код!

Расшифруем написанное:

qwer – имя учетной записи в FileZilla (у вас свой если меняли)
pass – пароль от учетной записи в FileZilla (у вас свой если меняли)
40 – порт сервера FileZilla
192.168.42.79 – адрес сервера FileZilla (у вас свой)
mmcblk0p27.raw – копируемый блок памяти (у вас свой)

Восстановление данных из внутренней памяти на Android для чайников

Открываем второе окно Cygwin.bat и вводим команды:

adb shell
su
dd if=/dev/block/mmcblk0p27 of=/cache/myfifo

Не забудьте исправить mmcblk0p27 на номер своего блока!

Смотрим в окно FileZilla и видим, что скачивание mmcblk0p27.raw в папку C:cygwin6400 началось, теперь можно закрыть окна cygwin и сделать перерыв на чай.

Восстановление данных из внутренней памяти на Android для чайников

Конвертируем и восстанавливаем

Вернулись? Файл скачался? Отлично. Отключаем телефон, подключаем интернет. Запускаем Cygwin.bat и вводим следующие команды.

cd /000/
VhdTool.exe /convert mmcblk0p27.raw

Не забудьте исправить mmcblk0p27 на номер своего блока!

У меня конвертирование заняло пару секунд. На выходе у нас получается всё тот же файл mmcblk0p27.raw в папке C:cygwin6400, но уже немного другой. Этот сконвертированный файл можно смонтировать как виртуальный диск, или, например через R-studio, произвести восстановление данных непосредственно из нашего образа. Я так и поступил.

Восстановление данных из внутренней памяти на Android для чайников
Hint: важные моменты пометил желтым.

Итоги

Моей целью было популярным языком объяснить способ копирования системного раздела с android-девайса на ПК, возможно, некоторые упрекнут меня в сложностях, связанных с USB-модемом и ftp, и скажут, что наверняка можно было проще вытащить образ. Отвечу так: я пробовал другими способами, описанными на 4pda и xda-developers, у меня не вышло, зато с ftp получилось со второй попытки, а входе написания статьи всё вообще прошло как по маслу.

У меня получилось восстановить все утерянные фото без потерь в качестве и даже то, что я и не думал восстановить. В ходе восстановления обнаружились фотографии, которые делал в августе прошлого года, когда только купил телефон и тестировал камеру.

В завершении хочется также упомянуть еще одну небольшую утилиту, которая восстанавливает данные — DiskDigger undelete. Она бесплатная, неплохой функционал, но к сожалению, после 40% она у меня вывалилась с ошибкой.

P.S. Теперь буду чаще делать бэкап...

Автор: bzz11g

Источник


  1. MrDevis:

    автору статьи РЕСПЕКТ !!!
    проделал все указанные операции, было увлекательно пройти этот квест, по итогам
    немного добавлю , может кому поможет на наступить на мои грабли (на хабре нельзя комментировать):
    – не во всех моделях смартфонов напрямую понимаются команды – mkfifo , find , fdisk, ftpput и т п , в этом случае нужно добавить busybox и команда сработает
    – не понял зачем cygwin64 ставить , adb работает без него, VhdTool также в нем не нуждается и конвертит образ, НО R-Studio без конвертации понимает скачанный *.raw и распознает его
    – для работы процесса передачи файла через ftp необходимо временно отключить брэндмауэр windows, а также заодно и антивирус , у меня последний KIS он вообще лютует и все подозрительное рубит не спрашивая.
    – шаманство с транспортом по ftp образа диска смартфона оказалось проще сделать обычным копированием при помощи plugin для Far – FarDroid в native режиме c включенной отладкой по USB на смартфоне, заходим в папку /dev/block и копируем mmc* блоки.

    • Лев Багин:

      Класс, получилось, спасибо. Только дольше в несколько раз, чем FilleZilla

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js