Статьи

Восстановление флешки Kingston

Artem Makarov aka Robin
28.05.2010
8113 просмотров

Сегодня хочу продолжить тему восстановления информации с USB флеш дисков и карт памяти и поговорить о новом коварстве производителей, усложняющих процесс восстановления данных с поломанных флешек и делающих восстановление информации с диска более трудоемким и дорогостоящим.

Как я уже упоминал ранее, информация в микросхемах NAND не лежит в линейном виде, как например на CD или DVD, а поделена на фрагменты (блоки и страницы) и зачастую распараллелена между банками в пределах одной стековой или нескольких микросхем памяти. Сделано все это для того, чтобы как можно более увеличить срок службы относительно недолговечных микросхем памяти, а так же увеличить скорость чтениязаписи устройства в целом.

Но в более-менее свежих флешках используется еще один механизм, призванный продлить время работы USB накопителя — этот метод носит названия XOR преобразований в структуре данных. Что такое XOR? Если кратко — это алгоритм удаления корреляции данных, который создает "псевдошум", что приводит к равномерной загрузке переходов у транзисторов и снижает вероятность выхода микросхемы памяти из строя по причине ускоренного "старения" одних банков по отношению к другим. Микросхема "изнашивается" равномернее и служит тем самым дольше. Кроме того, уменьшение взаимовлияния ячеек памяти друг на друга приводит и к уменьшению вероятности появления ошибок чтения.

Алгоритмы формирования XOR для области данных и области служебной информации достаточно разнообразны, разумеется недокументированны для широкой публики и восстановление информации в случаях, когда данные на микросхеме поксорены (а это встречается очень часто на всех флешках с объемом 16 гигабайт и выше) представляет собой очень нетривиальную задачу. Приведу наглядный пример: на восстановление информации принесли USB drive Kingston Data Traveler 16Gb на микроконтроллере SSS6691. Диск определяется в системе, монтируется том (в диспетчере устройств появляется буква) но физического доступа к диску нет. Причина такого поведения — повреждения служебных областей контроллера. Раньше, когда гиговая флешка была роскошью, в таких случаях можно было восстановить информацию, отыскав аналогичный исправный диск и перепаяв микроконтроллер. Сейчас этот метод уже не работает, так как в современных флешках служебные области контроллера хранятся в NAND. Т.е. заменив микроконтроллер вы ничего не измените в состоянии диска.

Поэтому путь для восстановления данных с поломанной USB Kingston в данном случае один — разбирать корпус флехи, выпаивать память и читать на программаторе. Дальше начинается самое интересное — беглый взгляд на полученные дампы позволяет с высокой степенью вероятности определить наличие XOR преобразований. Как XOR визуально отличить от шифрования я расскажу в одной из следующих статей.

Что делать далее? Очевидно — воспроизвести математические преобразования, которые сделал контроллер обратным порядком. Определить этот самый порядок преобразований можно несколькими способами.

Самый простой и очевидный: купить аналогичную исправную флешку, заполнить ее неким паттерном и разобрав и распаяв снять дампы, после чего относительно несложно получить ключ для XOR который подойдет для области данных сектора. Но в секторе есть еще область служебной информации, с номером (амии) маркера, полями ECC коррекции, что является критически важным для построения финальных преобразований тем или иным типом сборщика (сборщики отличаются по типам контроллеров и ряду других признаков). Получение ключа на XOR для служебки гораздо более сложная задача. Это тяжело сделать даже для более-менее изученных контроллеров, а с новыми, еще неопробоваными, вообще можно голову сломать. В итоге нужно сформировать лишь файл-ключ, который учтет всю цикличность ротаций и базового преобразования.

В описанном мной случае я пошел следующим путем: после сохранения дампов с микросхем памяти и сервисной утилитой восстановил транслятор в контроллере. Эта операция деструктивна для данных, если вы отыскали на просторах интернета сервисную программу для форматирования поломанной флешки, то после ее запуска информацию восстановить уже не получится. Получив исправный девайс, я записал всю область пользовательских данных паттерном 77h. В hex редакторе это выглядит следующим образом:

Паттерн 77h Помощь для определения XOR преобразований

Паттерн 77h Помощь для определения XOR преобразований

После чего снова отпаял микросхемы памяти и считал новые дампы. Стройный ряд семерок подвергшихся XOR преобразованию выглядит вот так:

Во что превратился ряд семерок

Во что превратился ряд семерок

Несложно представить себе, как непросто получить ключ к данным, когда нет помогалки в виде паттерн-заготовки. После воссоздания XOR ключа семерки уже видны:

Ключ подобран, ксор устранен

Ключ подобран, ксор устранен

служебная область сектора

Служебка секторов flash памяти

Служебка секторов flash памяти

Теперь, после устранения XOR, можно определять микс, в моем случае это Block pair 0x218000 8576 и применять сборщик, в описанной флешке оказался размер блока 0x430000 и геометрия сектора (512/0/512/46/512/0/512/46/512/0/512/46/512/0/512/46/512/0/512/46/512/0/512/46/512/0/512/46/512/0/512/62)*384/0/1097728. После чего можно корректировать ошибки чтения с помощью ECC кодов коррекции и на выходе получить успешно восстановленные данные.

Оставьте комментарий
x3m
29 мая 2010, 14:20

Спасибо. Познавательная информация. Бывают флэшки используют аппаратное шифрование AES то восстановить вряд ли что получиться. Или есть лазейки? :)

Artem Makarov aka Robin
30 мая 2010, 01:43

Все верно, шифрование преследует по сути ту же цель, что и XOR, плюс защита данных пользователя от доступа третьим лицам. Тем не менее восстановить данные с флешки, на которой микроконтроллер в фоновом режиме проводил шифрование вполне возможно. В ряде случаев для этого нужен аналогичный исправный накопитель, а иногда можно обойтись и без него.

Нужна консультация?

Мы одна из немногих лабораторий в России, которая восстанавливает данные самостоятельно.

Для этого у нас есть все необходимое:
Важно – кто будет первым!
восстанавливать
информацию