Я хочу знать, возможно ли получить «образ диска» для хранения на устройствах Android, когда они не используют внешнее хранилище, такое как SD-карты.
Меня больше всего интересует, потому что мои дети сбросили заводские настройки моего Kindle Fire HDX, и я надеялся, что смогу получить образ диска (используя что-то вроде dd в Linux), а затем попытаться восстановить некоторые пользовательские данные, такие как фотографии и видео (используя что-то вроде PhotoRec, http://www.cgsecurity.org/wiki/PhotoRec ). Я проделывал это много раз с SD-картами и жесткими дисками, просто подключая запоминающее устройство к рабочему столу с Debian и выполняя что-то вроде:
# dd if=/dev/sdb1 of=image.iso
Затем вы можете использовать PhotoRec и/или TestDisk, в зависимости от того, что вы хотите, чтобы получить что-то полезное из файла изображения.
Кажется, что даже некоторые из моих очень старых Android-устройств позволяют монтировать запоминающее устройство таким образом (без извлечения SD-карты из телефона) и следовать этому процессу. К сожалению, похоже, что многие новые устройства, у которых нет съемного хранилища (например, мой Kindle Fire HDX и мой Nexus 5), позволяют вам взаимодействовать с компьютером только с использованием протокола передачи мультимедиа (MTP) и протокола передачи изображений (PTP).
Могу ли я использовать эти протоколы для получения побитовой копии хранилища в устройстве? Есть ли способ добавить возможности старых устройств хранения данных в новые телефоны?
Проведя еще несколько исследований, я думаю, что нашел здесь частичное решение:
http://forum.xda-developers.com/showthread.php?t=2450045
Во-первых, вам нужно настроить ADB на вашем компьютере. В линуксе это довольно просто. Что-то вроде запуска # apt-get install android-tools-adb
или загрузки и извлечения каталога.
Найдите свои разделы. Запустите что-то вроде: adb shell
cat /proc/partitions
В ссылке есть другие варианты, как найти и идентифицировать все разделы.
Скопируйте данные. Должен быть доступен инструмент dd. Вы можете запустить что-то вродеdd if=/dev/block/mmcblk0p9 of=/sdcard/image.img
К сожалению, у меня есть две проблемы с этим. Во-первых, для разрешений на разделы устройств может потребоваться root-доступ. Во-вторых, Kindle Fire HDX и многие другие современные устройства, не имеющие USB Mass Storage, также не используют SD-карты. Таким образом, нет простого места для записи изображения, которое вы хотите, которое еще не используется для чего-то еще на устройстве.
Я пытаюсь найти способ монтировать сетевые устройства или передавать данные через USB между устройством и компьютером (насколько я могу судить, adb push и adb pull не сделают то, что нужно). Я обновлю это, если найду хорошее решение. В противном случае я задам некоторые другие вопросы об этом.
Изменить: на этой странице есть отличное описание, аналогичное тому, что у меня есть выше: http://www.df.lth.se/~jokke/androidfilerecovery/
Как отмечено ниже, root необходим, но обычно есть много способов легко его получить. К сожалению, я работал с Fire HDX 8.9. На полпути к моему копированию данных в файл изображения эта штука автоматически загружает обновление до 4.1.1. Следующее, что я знаю, root-доступ исчезает, и я не думаю, что для этого еще есть эксплойт. Я, вероятно, потерял все восстанавливаемые данные после того, как обновление было записано во внутреннюю память. В последнее время я так разочаровался в Amazon...
dd
дамп без root-доступа. Что касается копирования, то, насколько мне известно, есть способы «подключить» его через USB к другому концу: я где-то видел статью, описывающую это, но не помню, где это было :( В основном: перенаправление вывода dd
вроде adb shell "dd ..." > /localdir/file.dump
, где localdir
находится на вашем компьютере.Джошуа в значительной степени ответил на вопрос. Тем не менее, Иззи дал дополнительную информацию, чтобы решить странные/редкие варианты одной и той же проблемы.
Я хотел бы внести свой вклад (мой первый пост за более чем 10 лет) для тех, кто наткнется на тот же сценарий, что и я. В любом случае, через 24 часа, с настойчивостью и решимостью, следующая команда прольет некоторый свет (при условии, что у вас уже есть промежуточные/продвинутые навыки).
Кстати, я не буду объяснять это, так как сама команда довольно очевидна.
adb shell "dd if=/dev/block/mmcblk0p37 of=/dev/pts/0" > part37-img-dump.dd
Это инструменты, которые я использовал для выполнения работы.
C:\HTCOneRoot\
|--\adb.exe (version 1.0.31 21/05/2013, latest was buggy)
|--\fastboot.exe (version fc2a139a55f5-android 24/04/2016)
|--\AdbWinApi.dll
|--\AdbWinUSBApi.dll
|--\part37-img-dump.dd (output from the 'adb' command)
Примечание:
- dd будет выводить статистику на стандартный вывод после завершения (связано с BusyBox)
- найти инструмент для обрезки нежелательных смещений в EOF (не обязательно)
- смонтируйте образ, используя предпочтительное программное обеспечение для восстановления данных или что-то еще
- /dev/pts/0 должен работать сразу, но если вы запускаете несколько команд оболочки adb с нескольких консолей/терминалов, будьте осторожны с номером ссылки указателя dev, так как он будет другим. Используя следующую команду, вы можете просто выяснить, какой из них: pts:0, pts:1, ...
adb shell "ps -l"
adb shell su -c "dd if=/dev/block/mmcblk0" | pv > backup.dd
... если нет pv... apt-get install pv
или удалить строкуЭта строка: adb pull /Dev/block/device-by-name/userdata data.img
должна работать. Я не проверял это, но должно быть близко. Это приведет к извлечению всего образа, который вы можете прошить или, возможно, нажать позже в процессе восстановления. Это работает, только если вы рутированы. Я не буду работать, когда тебя нет. Ошибка разрешений. Я предполагаю, что если вы выполнили быструю загрузку с TWRP и не получили root-права, если у вас работает расшифровка, вы можете скопировать образ таким образом. Я избегаю рутирования прямо сейчас. Кажется, более стабильно с Android 10
Ирфан Латиф