Как восстановить данные из адаптивного хранилища, если рутированный телефон завис при загрузке?

Итак, я использую Galaxy Mega (i9152) с прошивкой CM13, которую я прошил через TWRP. Ради запуска PoGO я отключил root через настройки приложения SuperSu в CM13 (игра все равно не запускалась, постоянно срабатывала защитная сетка). Телефон работал нормально до 2 дней назад, после чего начал уходить в бутлуп.

Итак, я погуглил, как разрешить цикл загрузки, и увидел, что исправление прав доступа к файлам через TWRP может решить проблему. Я сделал это, НО я также рутировал телефон, когда TWRP предложил мне установить SuperSU, сославшись на то, что телефон не был рутирован. После этого телефон застрял в Boot Animation (лицо CM android), возможно, потому, что я рутировал телефон через TWRP.

Я отформатировал свою SD-карту как внутреннюю, что означало, что она не будет работать ни на одном другом устройстве. Все мои фото и прочее теперь на этой SD-карте. Я тщательно исследовал Google, чтобы найти способ расшифровать зашифрованную SD-карту, и обнаружил, что я могу расшифровать ее через Linux. Я также восстановил файл .key из папки /data/misc/vold и преобразовал код в соответствующий 16-байтовый формат с помощью команд терминала.

У меня есть система Linux, и я пытался ее расшифровать. вот что происходит, когда я запускаю parted -l. (я также хотел опубликовать вывод fdisk -l , но моя оценка репутации не позволяет мне публиковать более 2 ссылок)

когда я запускаю parted -l

поскольку имена «android_expand» и «android_meta» все еще отображаются, у меня есть надежда и веские основания полагать, что мои данные все еще не повреждены!

но когда я пытаюсь смонтировать его...

когда я пытаюсь расшифровать SD-карту и смонтировать ее

я не знаю, что теперь делать, так как это все, что я знал, все, что у меня было :/, я понятия не имею, в какой файловой системе находится зашифрованная карта. Я попробовал ext4, как описано в руководстве. может быть, если бы был какой-то способ, я мог бы заставить файл fstab циклически проходить через ВСЕ возможные файловые системы, выбирая нужную и, наконец, монтируя мою SD-карту. может быть, функция монтирования имеет такую ​​функцию «автоматического» для автоматического обнаружения файловых систем?

Я попытался перепрошить ЖЕ ПЗУ без сброса к заводским настройкам, но это дало мне сообщение об ошибке: «ошибка выполнения двоичного файла обновления», а также «невозможно установить поверх несовместимых данных».

Я очищал кэш и Dalvik Cache НЕСКОЛЬКО раз.

Я сделал резервную копию части ДАННЫХ через TWRP, используя ДРУГУЮ SD-карту в телефоне. Также я сделал резервную копию раздела SYSTEM во внутренней памяти телефона. Я просто беспокоюсь о своих фотографиях и прочем на SD-карте. Я не вижу свою зашифрованную SD-карту в TWRP, она просто показывает мне О МБ в опции SD-карты в TWRP, возможно, потому, что SD-карта зашифрована. я понятия не имею, как получить доступ к моим файлам на зашифрованной SD-карте через файловый менеджер TWRP. я не хочу терять свои данные. просто, пожалуйста, помогите мне восстановить данные с этой SD-карты, которая была зашифрована Android Marshmallow. я не знаю, будет ли моя SD-карта обнаружена в ОС, как раньше, если я смогу каким-то образом перепрошить ТОЧНО ЖЕ ПЗУ, которое я использовал до этой катастрофы.

Просто чтобы уточнить, я использую встроенное устройство чтения SD-карт моего ноутбука для чтения карт с Linux (у меня Ubuntu 16.04 LTS) с адаптером SD-карты, поставляемым с картой (это Kingston 16 ГБ, SDHC класс 4)

если я смогу каким-то образом получить доступ к своей SD-карте и получить с нее все свои данные, моя проблема будет решена. Пожалуйста, помогите мне.

PS: также, в САМОМ начале этого испытания, по ошибке, я МОЖЕТ создать разделы на SD-карте, используя fdisk. Я надеюсь, что не стер данные с SD-карты и не повредил ее. я CTRL + C вышел из утилиты без сохранения изменений ... так что это может иметь некоторую надежду.

РЕДАКТИРОВАТЬ (1 декабря 2019 г.): это НЕ дубликат, как видно из приведенного ниже решения. Этот вопрос представляет собой гораздо более серьезный случай с принятым хранилищем, когда у вашего телефона возникают проблемы с загрузкой или ваша ОС повреждена. Пожалуйста, оставьте этот вопрос как есть, так как он окажется полезным для опытных пользователей и других, чьи файлы застряли в принятом хранилище, но сталкиваются с трудностями при доступе к операционной системе своего телефона.

Вы уверены, что /dev/mmcblk0p2 существует на вашем Linux-устройстве? Запустите dmesg, чтобы увидеть точное сообщение об ошибке. Вы можете попробовать запустить 'blockdev --getsize /dev/...' как отдельную команду, чтобы получить размер и увидеть все ошибки.
Также попробуйте запустить dmeset с флагом -v, чтобы получить дополнительную информацию о том, что происходит.
@NikolayElenkov, спасибо за ответ! Я решил проблему, отчасти благодаря вашему руководству и благодаря своей интуиции. Я учусь на последнем курсе CIS (Computer Engg) и хотел бы оставаться на связи. Где вас можно легко найти?
@NikolayElenkov, я сделал резервную копию данных на своем компьютере. Теперь проблема, с которой я сталкиваюсь, заключается в том, что я хочу, чтобы мой мобильный телефон распознавал SD-карту как есть. Я пробовал это, очистив данные, систему, кеш, dalvik и ЗАТЕМ перепрошивку новой прошивки. а потом положил файл .key в папку vold, потом перезагрузил телефон. И, телефон распознает карту (не просит переформатировать карту), но не распознает данные, не видит ни файла, ни картинки внутри данных, хотя показывает, что 1,63 Гб из 14,55 Гб на SD-карте занято. могу ли я получить некоторую помощь по этому поводу?
@Irfan Latif нет, это точно не дубликат. Это может быть похоже, но этот вопрос (и последующий ответ) представляет собой гораздо более серьезный случай, когда у вас нет тривиального способа доступа к вашим файлам или даже загрузки телефона после анимации загрузки. Пожалуйста, учитывайте разницу в случаях, прежде чем помечать как дубликат.
@MuhammadYasir пометка дубликата не означает, что ваш вопрос или ответ не являются хорошим вкладом в сообщество. Пометка дубликатов или слияние предназначена для того, чтобы больше посетителей могли получить доступ к полезному материалу, который вы разместили здесь после исследования, и воспользоваться им. На мой взгляд, этот вопрос следует объединить с другим. По сути вопрос тот же, с хорошими деталями. И ответ гораздо более подробный, но он не привлекает столько внимания, сколько должен был бы. Но, очевидно, одного моего мнения недостаточно, требуется больше голосов и/или вмешательство модератора.
@NikolayElenkov (не по теме) недавно мы выяснили, как сбросить счетчик неудачных расшифровок в нижнем колонтитуле fde crypto. Приглашаем присоединиться к нашей беседе на xda (ссылка в комментариях) android.stackexchange.com/q/230892

Ответы (1)

перед началом я бы порекомендовал сделать ПОЛНУЮ резервную копию вашей SD-карты с помощью необработанного образа (погуглите команду «dd» в Linux)

я следил за руководством здесь; Поврежденная SD-карта, отформатированная как внутренняя память

НО с некоторыми ВАЖНЫМИ МОДИФИКАЦИЯМИ!

  1. Телефон застрял в BOOTLOOP, а затем в BOOT Animation, без доступа к какой-либо обычной утилите файлового менеджера. Имейте в виду, это ОЧЕНЬ тяжелая ситуация, поскольку нет простого способа получить доступ к вашей SD-карте (она отображается как 0 МБ в файловом менеджере TWRP) для резервного копирования ваших ценных данных, фотографий и воспоминаний. Кроме того, это единственная часть, которая немного шатается, так как я не совсем уверен, был ли мой телефон рутирован или нет (поскольку моя проблема изменилась с bootloop на загрузочную анимацию, когда я пытался установить SuperSu через TWRP) и получение ключа шифрования занимает центральное место в решении этой проблемы. Мне нужно было получить файл .key , так как он имел решающее значение для взлома шифрования SD-карты. Итак, несмотря на всю панику, я смог просмотреть через файловый менеджер TWRP папку /data/misc/vold и найти файл .key. Это был ГЛАВНЫЙ прорыв!

  2. Далее, чтобы извлечь файл. Я использовал другую НЕЗАШИФРОВАННУЮ SD-карту и перенес файл .key на эту карту через файловый менеджер TWRP, прочитал эту SD-карту в ноутбук и получил файл .key на Ubuntu (16.04). Расшифровал файл .key и получил 16-байтовый ключ. есть 2 способа сделать это ... либо открыть файл через шестнадцатеричный редактор (я использовал BLESS) и скопировать 16 пар шестнадцатеричных цифр, которые вы видите, ИЛИ использовать эту команду;

hexdump -e '1/1 "%.2x"' expand_8838e738a18746b6e435bb0d04c15ccd.key

убедитесь, что вы находитесь в том же каталоге, что и файл .key при выполнении этой команды (продвинутые пользователи Linux смогут обойти это, но я хочу, чтобы это было максимально удобно для новичков)

Итак, я получил 32-значный / 16-байтовый ключ.

  1. ДАЛЕЕ, расшифровывая SD-карту И заставляя Linux распознавать ее. когда я прочитал его через устройство чтения карт, он не отображался в Nautilus (файловый менеджер Ubuntu), но после запуска fdisk-l и parted -l я увидел

"parted -l вывод"

http://pasteboard.co/5klviklR8.jpg

"fdisk -l вывод"

http://pasteboard.co/POGvyBOxO.png

обратите внимание на android_meta и android_expand , эти имена дали мне надежду, что мои данные все еще не повреждены. ОСОБЕННО, так как в начале проблемы я создал разделы и таблицы разделов на SD-карте с помощью утилиты fdisk (но я нажал ctrl+c, поэтому возможно, что изменения не были записаны, УФУУУУ!)

неизвестная файловая система была самой большой проблемой во всем этом фиаско ... поскольку, согласно нескольким руководствам и обсуждениям по этой проблеме, SD-карты, отформатированные как внутренние зефиром, должны были быть файловой системой ext4. но это было не так, по крайней мере здесь.

  1. Итак, чтобы расшифровать карту, я использовал
dmsetup create crypt1 --table "0 `blockdev --getsize /dev/mmcblk0p2` crypt aes-cbc-essiv:sha256 "insert your 16-byte key here w/out double quotes" 0 /dev/mmcblk0p2 0"

если вы получаете какую-либо ошибку, связанную с ioctl, используйте вместо этого этот формат (это ТОЧНЫЙ формат, который я использовал сегодня, с моим ключом и всем остальным)

dmsetup create crypt7 --table "0 `blockdev --getsize /dev/mmcblk0p2` crypt aes-cbc-essiv:sha256 07147CFFB77F249A5DBD2AD204610E7D  0 /dev/mmcblk0p2 0"

обратите внимание, что утилита dmsetup должна быть установлена ​​в Linux. (погугли это ) . также обратите внимание, что я выбрал раздел «mmcblk0p2», так как он был больше по размеру и имел очевидный вывод о том, что он содержит все данные!

это прошло хорошо, завершено без ошибок. следующий бит, тем не менее, АБСОЛЮТНО сводил меня с ума, и потребовалось около 20 часов (включая время сна), чтобы правильно решить.

  1. файловая система ГАДДАМН! ВЕЗДЕ было написано, что адаптивное хранилище отформатировано как ext4, поэтому, когда я запускал команду

# mount -t ext4 /dev/mapper/crypt1 /mnt/1/

(обратите внимание, что mnt/1/ должен существовать как каталог в вашей корневой папке, если нет, используйте mkdir для его создания)

это дало чертову ошибку

неправильная фс или плохой вариант.

и это заставило меня задуматься ... если SD-карта НЕ типа ext4, то КАК я должен знать, какая это файловая система из всех возможных!

я искал и искал команду, которая могла бы принудительно перебирать ВСЕ возможности методом грубой силы, или любую запись, которую я мог сделать в файле /etc/fstab, которая могла бы каким-то образом АВТОМАТИЧЕСКИ определять файловую систему, но безрезультатно...

5 . В конце концов, я вспомнил... что, может быть, просто МОЖЕТ БЫТЬ, что файловая система была f2fs (flash-friendly файловая система). И это оказалось красноречивым воспоминанием...

для этого кода;

mount -t f2fs /dev/mapper/crypt1 /mnt/1

оказался ПОБЕДНЫМ ГОЛОМ!

Затем я смог перейти в /mnt/1 и увидел несколько очень знакомых файлов в стиле Android, и с этого момента это было Eternal BLISS!

и ext4, и f2fs имеют суперблок, который идентифицирует файловую систему. если вы посмотрите на первые байты раздела, вы можете легко определить используемую файловую систему.
@NikolayElenkov ах .. спасибо ! это расширяет мои знания, и я буду иметь в виду, когда в следующий раз буду иметь дело с файловыми системами! а пока не могли бы вы взглянуть сюда ; android.stackexchange.com/questions/172347/… также я сделал подробный пост об этом здесь: forum.xda-developers.com/… <-- здесь я подробно и шаг за шагом описал проблему. Я был бы признателен, если бы вы взглянули на него и выручили меня!