Монтування внутрішньої пам'яті Android як Mass Storage і відновлення даних

Відновлення даних, віддалених фото і відео, документів та інших елементів з внутрішньої пам'яті сучасних Android телефонів і планшетів стало складним завданням, оскільки внутрішнє сховище підключається по протоколу MTP, а не Mass Storage (як флешка) і звичні програми для відновлення даних не можуть знайти і відновити файли в цьому режимі.

Існуючі популярні програми для відновлення даних на Android (див. Відновлення даних на Android) пробують обійти це: в автоматичному режимі отримати root-доступ (або надаючи зробити це користувачеві), а потім - прямий доступ до сховища пристрою, але це працює не для всіх пристроїв.

Однак, існує спосіб вручну змонтувати (підключити) внутрішнє сховище Android як флешку (Mass Storage Device) за допомогою команд ADB, а потім використовувати будь-яку програму відновлення даних, що працює з файловою системою ext4, що використовується на цьому сховищі, наприклад, PhotoRec або R-Studio . Про підключення внутрішнього сховища в режимі Mass Storage і наступному відновленні даних з внутрішньої пам'яті Android, в тому числі після скидання на заводські настройки (хард ресета) і піде мова в даній інструкції.

попередження: описуваний спосіб не для початківців. Якщо ви відносите себе до них, то якісь пункти можуть виявитися незрозумілими, а результат дій не обов'язково буде очікуваним (теоретично, можна зробити гірше). Використовуйте викладене тільки під свою відповідальність і з готовністю до того, що щось піде не так, а ваше Android пристрій більше не включиться (але, якщо все робити, розуміючи процес і без помилок, цього статися не повинно).

Підготовка до підключення внутрішнього сховища

Всі дії, описані нижче можна виконати в Windows, Mac OS і Linux. У моєму випадку використовувалася Windows 10 з встановленої в ній підсистемою Windows для Linux і Ubuntu Shell з магазину додатків. Установка компонентів Linux не обов'язкова, всі дії можна провести і в командному рядку (і відрізнятися вони не будуть), але я обрав саме цей варіант, так як при використанні ADB Shell в командному рядку виникли проблеми з відображенням спецсимволов, які не впливають на роботу способу, але що представляють незручності.

Перш ніж почати підключення внутрішньої пам'яті Android як флешки в Windows виконайте наступні кроки:

  1. Скачайте і розпакуйте Android SDK Platform Tools в папку на вашому комп'ютері. Завантаження доступна на офіційному сайті https://developer.android.com/studio/releases/platform-tools.html
  2. Відкрийте параметри системних змінних середовища (наприклад, почавши в пошуку Windows вводити "змінних", а потім у вікні властивостей системи натиснувши "Змінні середовища". Другий спосіб: відкрити Панель управління - Система - Додаткові параметри системи - "Змінні середовища" на вкладці " додатково ").
  3. Виберіть змінну PATH (не важливо, системну або призначену для користувача) і натисніть "Змінити".
  4. У наступному вікні натисніть "Створити" і вкажіть шлях до папки з Platform Tools з 1-го кроку і застосуєте зроблені зміни.

Якщо ви робите зазначені дії в Linux або MacOS, то пошукайте в Інтернеті, як в цих ОС додати папку з Android Platform Tools в PATH.

Підключення внутрішньої пам'яті Android як Mass Storage Device

Тепер приступаємо до основної частини цього керівництва - безпосередньо підключення внутрішньої пам'яті Android як флешки до комп'ютера.

  1. Перезавантажте ваш телефон або планшет в режимі Recovery. Зазвичай для цього потрібно вимкнути телефон, потім затиснути і утримувати кнопку живлення і "гучність вниз" протягом деякого часу (5-6) секунд, а після появи екрану fastboot вибрати Recovery Mode за допомогою кнопок гучності і завантажитися в нього, підтвердив вибір коротким натисканням кнопки живлення. Для деяких пристроїв спосіб може відрізнятися, але легко знаходиться в Інтернеті за запитом: "модель_устройства recovery mode"
  2. Підключіть пристрій до комп'ютера через USB і почекайте якийсь час, поки воно не буде налаштоване. Якщо після закінчення настройки в диспетчері пристроїв Windows пристрій буде відображатися з помилкою, знайдіть і встановіть ADB Driver саме для вашої моделі пристрою.
  3. Запустіть Ubuntu Shell (в моєму прикладі використовується саме оболонка Ubuntu під Windows 10), командний рядок або термінал Mac і введіть adb.exe devices (Примітка: з-під Ubuntu в Windows 10 я використовую adb для Windows. Можна було б встановити adb для Linux, але тоді б він не "бачив" підключених пристроїв - обмеження функцій підсистеми Windows для Linux).
  4. Якщо в результаті виконання команди ви бачите зі списку під'єднаний пристрій - можна продовжувати. Якщо немає - введіть команду fastboot.exe devices
  5. Якщо в цьому випадку пристрій відобразилося, значить все підключено правильно, але рекавери не дозволяє використовувати команди ADB. Ймовірно, доведеться встановити кастомний рекавери (рекомендую знайти TWRP для вашої моделі телефону). Детальніше: Установка кастомними рекавери на Android.
  6. Після установки кастомними рекавери, зайдіть в нього і повторіть команду adb.exe devices - якщо пристрій став видним, можна продовжувати.
  7. Введіть команду adb.exe shell і натисніть Enter.

У ADB Shell по порядку виконуємо наступні команди.

mount | grep / data

В результаті отримуємо ім'я пристрою block, яке буде використовувати далі (не втрачаємо його з виду, запам'ятовуємо).

Наступною командної размонтіруем розділ data на телефоні, щоб мати можливість підключити його як Mass Storage.

umount / data

Далі знаходить індекс LUN потрібного розділу, відповідного Mass Storage Device

find / sys -name lun *

Буде відображено кілька рядків, нас цікавлять ті, які мають в дорозі f_mass_storage, Але поки ми не знаємо, яка саме (зазвичай, закінчуються на просто lun або lun0)

У наступній команді використовуємо ім'я пристрою з першого кроку і один із шляхів з f_mass_storage (один з них відповідає внутрішньої пам'яті). Якщо буде введений невірний, ви отримаєте повідомлення про помилку, тоді пробуємо наступний.

echo / dev / block / mmcblk0p42> / sys / devices / virtual / android_usb / android0 / f_mass_storage / lun / file

Наступний крок - створюємо скрипт, що включає карту пам'яті до основної системи (все, що нижче - одна довга рядок).

echo "echo 0> / sys / devices / virtual / android_usb / android0 / enable && echo \" mass_storage, adb \ "> / sys / devices / virtual / android_usb / android0 / functions && echo 1> / sys / devices / virtual / android_usb / android0 / enable "> enable_mass_storage_android.sh

виконуємо скрипт

sh enable_mass_storage_android.sh

У цей момент сесія ADB Shell буде закрита, а до системи буде підключений новий диск ( "флешка"), що представляє собою внутрішню пам'ять Android.

При цьому, в разі Windows вас можуть попросити відформатувати накопичувач - не робіть цього (просто Windows не вміє працювати з файлової системою ext3 / 4, але багато програм для відновлення даних вміють).

Відновлення даних з підключеного внутрішнього сховища Android

Тепер, коли внутрішня пам'ять підключена як звичайний накопичувач, ми можемо використовувати будь-яку програму для відновлення даних, яка вміє працювати з розділами Linux, наприклад, безкоштовну PhotoRec (доступну для всіх поширених ОС) або платну R-Studio.

Я пробую виконати дії з PhotoRec:

  1. Завантажуємо і розпаковуємо PhotoRec з офіційного сайту https://www.cgsecurity.org/wiki/TestDisk_Download
  2. Запускаємо програму, для Windows і запуску програми в графічному режимі запустіть файл qphotorec_win.exe (докладніше: відновлення даних в PhotoRec).
  3. У головному вікні програми вгорі вибираємо пристрій Linux (той новий диск, який ми підключили). Нижче вказуємо папку для відновлення даних, а також вибираємо тип файлової системи ext2 / ext3 / ext Якщо вам потрібні файли лише певного типу, рекомендую вказати їх вручну (кнопка "Формати файлів"), так процес піде швидше.
  4. Ще раз переконаєтеся, що обрана потрібна файлова система (іноді перемикається "сама").
  5. Запустіть пошук файлів (перебувати вони почнуть на другому проході, перший - в назвах файлів). При знаходженні, вони автоматично будуть відновлені в зазначену вами папку.

У моєму експерименті з 30 віддалених з внутрішньої пам'яті фотографій в ідеальному стані було відновлено 10 (краще, ніж нічого), для інших - тільки мініатюри, також були знайдені скріншоти png, зроблені ще до хард-ресета. R-Studio показала приблизно той же результат.

Але, так чи інакше, це не проблема способу, який працює, а проблема ефективності відновлення даних як такої в деяких сценаріях. Так само зазначу, що DiskDigger Photo Recovery (в режимі глибокого сканування з root) і Wondershare Dr. Fone for Android показали сильно найгірший результат на тому ж пристрої. Звичайно, ви можете спробувати і будь-які інші засоби, що дозволяють відновлювати файли з розділів з файловою системою Linux.

Після закінчення процесу відновлення, витягніть підключений USB пристрій (використовуючи відповідні способи вашої операційної системи).

Потім можна просто перезавантажити телефон, вибравши відповідний пункт в меню рекавери.