Как расшифровать поврежденную SD-карту, отформатированную как внутреннее хранилище?

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

Подключив его к GParted, я вижу 16 МБ FAT32, а остальное — нераспознанная файловая система. Он не отформатирован, просто не распознан.

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

Это Samsung i9505, работающий на ночной сборке Cyanogenmod 13.

РЕДАКТИРОВАТЬ: я обнаружил, что нераспознанные разделы представляют собой статический зашифрованный AES-128 бит ext4. Сейчас попробую расшифровать и восстановить.

EDIT2: я передумал и не буду беспокоиться. На этот раз форматирование как внешнее хранилище.

Насколько это распространено?

Ответы (1)

Даже это не полностью отвечает на вопрос, вот инструкция по расшифровке внешнего хранилища, отформатированного как внутреннее. Однако вам нужно быть root на вашем телефоне.

Суть в том, что мы ищем строки, включающие ключевое слово expandи заканчивающиеся .keyвнутри , voldиспользуя:

$ strings vold|grep -i expand
--change-name=0:android_expand
%s/expand_%s.key
/mnt/expand/%s

Он возвращает 16-байтовый ключ.

expand_8838e738a18746b6e435bb0d04c15ccd.key

Затем вы передаете ключ этому плохому мальчику:

# dmsetup create crypt1 --table "0 `blockdev --getsize /dev/sdb2` crypt \
aes-cbc-essiv:sha256 00010203040506070809010a0b0c0d0e0f 0 /dev/sdb2 0"

И смонтируйте это в:

# mount -t ext4 /dev/mapper/crypt1 /mnt/1/
# cd /mnt/1
# find ./ -type d

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

Вы можете использовать hexdump -e '1/1 "%.2x"' expand_8838e738a18746b6e435bb0d04c15ccd.keyдля преобразования двоичного в шестнадцатеричный.
Где именно вы запускаете эту команду?
@Royi Вы подключаете свою SD-карту к компьютеру с Linux.
Чтобы быть точным, ключ расширенного хранилища named expand_8838e738a18746b6e435bb0d04c15ccd.key(фактическое шестнадцатеричное число зависит от вашего расширенного запоминающего устройства) необходимо получить или прочитать с телефона. Файл обычно находится в каталоге /data/misc/vold, и каталог может содержать несколько ключей, если использовалось несколько SD-карт. Обратите внимание, что у вас должен быть rootдоступ к вашему телефону, чтобы увидеть содержимое файлов ключей и извлечь необходимый ключ шифрования.