В помощь сражающимся со сбойной памятью.
Пришло тело на Unisoc T612 с ужаренной eMMC. Ошибки чтения по всему объему, но конкретно на userdata их было немного. Super практически не читается, кое-как снятый дамп Кислород не принял.
Экспериментами на таком же рабочем выяснилось, что для успешного извлечения, кроме
GPT+userdata нужны всего два раздела -
uboot_a и
metadata. Остальные могут быть хоть пустыми. В
uboot_a чувствительных данных нет, туда можно записать содержимое
uboot_b или раздел с другого такого устройства. Но он должен быть цел
, содержимое uboot_b Кислород игнорирует. В
metadata лежит зашифрованный
мастер ключ и вспомогательные ключи для работы алгоритма. Потеряли - до свидания.
При отсутствии/повреждении этих разделов Кислород не пытается читать userdata и даже не запрашивает на нее пароль. Шифрование считается разрушенным, бесполезное извлечение молча идет дальше. На моем дампе так и было.
Решение (использовал EFM):
0. Вычитывание нужных разделов на колодке. Userdata - 32 ошибки, на metadata ошибок не было, из uboot_a читался мусор.
1. Создание пустой болванки слегка бОльшего объема -
fsutil file createnew userData.bin 140000000000.
2. Запись туда GPT и повторное открытие болванки уже с таблицей разделов.
3. Запись родных userdata+metadata, uboot_a записал с рабочего телефона.
4. PROFIT.
! Возможно, было достаточно записать в нерабочий дамп донорский uboot_a.
В аттачах скрин сработавшей болванки (серые разделы - пустые), вид keys.json и device.ewc для Unisoc/Spreadtrum, а также содержание metadata (всегда читается Кислородом, если жива).