Відновлення даних з внутрішньої пам'яті на Android для чайників

Зараз все більше смартфонів йдуть без слота для sd-card, та інформацію доводиться зберігати на вбудованої пам'яті з доступом до неї по MTP. Такий режим підключення не дозволяє стандартними засобами відновити дані телефону після waip'а або випадкового видалення.
 
Сьогодні на прикладі зв'язки Xiaomi Mi2s і Windows 8.1 я постараюся розповісти, як можна відновити загублені дані, кому цікаво, ласкаво просимо під кат.
 
Слід зауважити, що якщо ви помилково отформатировали внутрішню пам'ять смартфона / планшета / смартпеда, то не варто засмучуватися, а головне, ні в якому разі не потрібно нічого записувати в пам'ять пристрою, так у вас вийде відновити більше даних.
 
Протокол MPT не дозволяє комп'ютеру розпізнати підключений девайс як USB-накопичувач і програми для відновлення не можуть просканувати такий пристрій і врятувати дані, тому нам буде потрібно скопіювати весь внутрішній розділ пам'яті у вигляді образу системи.
 
 

Підготовка PC

Для того, щоб скопіювати розділ системи, нам знадобиться:
 
 Спершу встановлюємо USB-драйвера для вашого пристрою і ADB. Після цього раджу перезавантажити ПК.
 
 
Cygwin
Запускаємо скачав файл. Install from internet & gt; Далі & gt; Далі & gt; Direct connection (якщо ви не використовуєте проксі і VPN) & gt; вибираємо сервер, з якого будуть гойдатися модулі (я качав з box-soft.com) & gt; Далі відбудеться завантаження списку модулів і відкриється вікно з доступними для скачування & gt; Нам знадобиться пункт Devel, а в ньому все підпункти, назва яких починається з букв gcc & gt; Далі почнеться завантаження вибраних модулів і подальша їх установка.
 
 
 
 
VHDtool
Створюємо папку з адресою C: \ cygwin64 \ 000 (ім'я не має значення, не варто тільки використовувати букви відмінні від латиниці), тут буде лежати наш образ. Копіюємо в папку VHDtool.exe.
 
 
Netcat
Скачаний архів розпаковуємо в папку C: \ cygwin64 \
 
 
FileZilla
В ході інсталяції погоджуємося на всі стандартні установки.
Після установки FileZilla запуститься автоматом, але з програми необхідно вийти і запустити її від імені Адміністратора .
При запуску FileZilla запитає ім'я сервера, залишаємо все як є.
 
 
 
Далі заходимо Edit — Settings і робимо наступні настройки:
 
listen on those ports 40
timeout settings — за умовчанням коштує 120, 60, 60, а ми ставимо всюди 0 і натискаємо ОК.
Заходимо в edit — users. У віконці users створюємо нового юзера. У моєму випадку це юзер qwer.
Натискаємо Add — пишемо ім'я — натискаємо ОК.
 
Пароль pass.
 
Далі в тому ж меню Users, зліва вибираємо закладку Shared folders. Заходимо туди і додаємо папку в яку буде заливатися наш блок. Натискаємо Add і додаємо папку C: \ cygwin64 \ 000. У віконці з'явиться шлях до цієї папки. Якщо зліва від напису C: \ cygwin64 \ 000 НЕ БУДЕ букви H, то потрібно натиснути Set as home dir. Потім виділивши рядок C: \ cygwin64 \ 000 потрібно відзначити права Read і Write галочками. Потім натиснути ОК.
 
 
 
 
ADB
Нам знадобляться наступні файли:
 
     
  • adb.exe
  •  
  • AdbWinApi.dll
  •  
  • adb-windows.exe
  •  
  • AdbWinUsbApi.dll
  •  
  • fastboot.exe
  •  
 
Завантажити їх можна на 4pda .
Або витягнути з дистрибутива Android SDK.
 
Копіюємо їх в папку C: \ cygwin64 \ bin
 
 Відключаємо інтернет повністю, якщо ви використовуєте ноутбук, то скористайтеся режимом польоту.
 
 

Підготовка Android-пристрої

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

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

Нам знадобиться підключити апарат по USB до вашого ПК і включити режим модему по USB. Я використовую CyanogenMod 11 і у мене цей режим знаходиться по дорозі: Налаштування & gt; Бездротові мережі & gt; Ще… & gt; Режим модему & gt; USB-модем
 Скріншот
Тепер нам необхідно дізнатися, який IPv4 адреса отримав ваш комп'ютер.
Йдемо шляхом: Панель керування \ Мережа та Інтернет \ Центр управління мережами і загальним доступом
 
 
 
Кількома по напису 'Підключення по локальній мережі' далі Відомості і копіюємо адресу IPv4.
 
 
 
В моєму випадку це 192.168.42.79
 
 Важливо! При кожному перепідключенні USB кабелю і вкл / викл режиму модему IPv4 буде змінюватися.
 
 

Який блок пам'яті нам потрібен?

Вся пам'ять у вашому пристрої ділиться на логічні блоки, нам не потрібно качати все, досить зрозуміти, який розділ містить стерту інформацію.
 
Для цього підключаємо ваш апарат до ПК USB-шнурком і від імені адміністратора запускаємо Cygwin.bat в папці C: \ cygwin64 \
 
Вводимо команду:
 
 
adb devices

 
У список підключених девайсів не повинен бути порожній, якщо після строчки List of devices attached пусто, то ви не встановили USB-драйвера або не включили налагодження по USB.
 
Коли все йде добре, консоль виглядає так:
 
 
 
20352f2c — мій Xiaomi Mi2s
 
Тепер нам необхідно подивитися список блоків пам'яті, для цього вводимо через підрядник наступні команди:
 
 
adb shell
su
find /dev/block/platform/ -name 'mmc*' -exec fdisk -l {} \; > /sdcard/list_of_partitions.txt

 Hint: якщо вам ліньки вручну переписувати команди або ви боїтеся допустити помилку, то можна скористатися копіюванням, але вставити звичним способом строчку в консоль вийде, тому необхідно натиснути правою кнопкою миші по вікну консолі, далі вибрати змінити & gt; вставити.
 
 
 
Після чого у внутрішній пам'яті з'явиться файл 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 — копійований блок пам'яті (у вас свій)
 
 
 
Відкриваємо друге вікно Cygwin.bat і вводимо команди:
 
 
adb shell
su
dd if=/dev/block/mmcblk0p27 of=/cache/myfifo

 Не забудьте виправити mmcblk0p27 на номер свого блоку!
 
Дивимося у вікно FileZilla і бачимо, що викачування mmcblk0p27.raw в папку C: \ cygwin64 \ 000 почалося, тепер можна закрити вікна cygwin і зробити перерву на чай.
 
 
 
 

Конвертуємо і відновлюємо

Повернулися? Файл скачали? Відмінно. Відключаємо телефон, підключаємо інтернет. Запускаємо Cygwin.bat і вводимо наступні команди.
 
 
cd /000/
VhdTool.exe /convert mmcblk0p27.raw

 Не забудьте виправити mmcblk0p27 на номер свого блоку!
 
У мене конвертування зайняло пару секунд. На виході у нас виходить все той же файл mmcblk0p27.raw в папці C: \ cygwin64 \ 000, але вже трохи інший. Цей сконвертовані файл можна змонтувати як віртуальний диск, або, наприклад через R-studio, провести відновлення даних безпосередньо з нашого образу. Я так і вчинив.
 
 
 Hint: важливі моменти позначив жовтим.
 
 

Підсумки

Моєю метою було популярним мовою пояснити спосіб копіювання системного розділу з android-девайса на ПК, можливо, деякі дорікнуть мене в складнощах, пов'язаних з USB-модемом і ftp, і скажуть, що напевно можна було простіше витягнути образ. Відповім так: я пробував іншими способами, описаними на 4pda і xda-developers, у мене не вийшло, зате з ftp вийшло з другої спроби, а вході написання статті все взагалі пройшло як по маслу.
 
У мене вийшло відновити всі втрачені фото без втрат в якості і навіть те, що я і не думав відновити. В ході відновлення виявилися фотографії, які робив у серпні минулого року, коли тільки купив телефон і тестував камеру.
 
На завершення хочеться також згадати ще одну невелику утиліту, яка відновлює дані — DiskDigger undelete . Вона безкоштовна, непоганий функціонал, але на жаль, після 40% вона у мене вивалилася з помилкою.
 
 P.S. Тепер буду частіше робити бекап…

Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.