Физические неисправности FLASH

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

Практически все накопители на основе NAND Flash (USB Flash, SD, Micro SD, MMC, Smart Media, Memory Stick, Compact Flash и т.д.) строятся по одному принципу и содержат в себе следующий набор компонентов:

Микросхемы памяти NAND Flash. Наиболее распространены на сегодняшний день в корпусе TSOP-48, LGA-52, BGA 152/132.
Контроллер. В его функции входит чтение/запись информации с микросхем памяти, распределение данных внутри микросхем для равномерного износа ячеек памяти, контроль и исправление ошибок чтения, выполнение различных алгоритмов для увеличения скорости работы накопителя и повышения надежности хранения данных. А также передача данных по интерфейсной шине (USB, SD и тд.).
Чаще всего флеш-накопители ломаются либо по причине выхода из строя контроллера, либо из-за сильного износа ячеек памяти, когда количество битовых ошибок превышает возможности алгоритма ECC.

Работа по восстановлению данных с накопителя на основе NAND Flash включает в себя следующие этапы:

  1. Выпаивание всех микросхем памяти накопителя. При этом осуществляется жесткий температурный контроль, так как при низких температурах есть риск повредить тонкие контакты микросхемы, а при высоких температурах происходят необратимые процессы внутри микросхемы памяти, что впоследствии может затруднить считывание записанных в нее данных.
  2. Считывание содержимого всех микросхем при помощи специального считывающего устройства, входящего в комплект программно-аппаратного комплекса восстановления данных. В процессе вычитывания содержимого микросхем в дампы определяются такие важные параметры, как размер страницы микросхемы (минимальный объем данных, который может быть прочитан с микросхемы памяти) и размер блока микросхемы (минимальный объем данных, который может быть стерт/перезаписан в микросхеме памяти).
  3. На одном из последующих этапов анализируются считанные дампы и вычисляется алгоритм коррекции ошибок ECC. Корректируются ошибки чтения, строится карта нескорректированных секторов, которые впоследствии повторно перечитываются с микросхем памяти. Процесс этот достаточно ресурсоемкий и требует достаточно много времени. Все чаще приходится использовать альтернативные методики вычитывания, такие как изменение напряжения питания микросхем, охлаждение до -20°, нагрев до критических температур, алгоритмы Read Retry, а также комбинации перечисленных методов.

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

В своей работе контроллер использует следующие алгоритмы и преобразования:

  1. Устранение вставок. Уже на этапе производства современные микросхемы имеют дефектные ячейки. Из-за особенностей производства и организации внутренней структуры микросхем памяти адрес поврежденной ячейки повторяется в пределах всей плоскости микросхемы. В исправном флеш-накопителе такие ячейки помечаются как неиспользуемые и пропускаются при адресации, а данные записываются со смещением. Соответственно, если при восстановлении данных с флешки не составить полный список подобных ячеек, нарушится вся адресация, и конечный образ накопителя получить не удастся.
  2. Чередование через байт. При использовании нескольких микросхем памяти запись на них производится параллельно с чередованием в 1 байт. Чаще всего используется в картах памяти Compact Flash для увеличения скорости работы. В процессе восстановления данных инженеру необходимо выстроить правильную последовательность дампов для корректного объединения.
  3. Устранение инверсии либо скремблинга. В старых флеш-накопителях для увеличения срока службы используется инверсия данных. В современных широкое распространение получило логическое XOR-преобразование по заранее заданному шаблону. Это позволяет равномерно заполнять используемый объем микросхем памяти нулями и единицами, благодаря чему достигается равномерный износ ячеек памяти, а также снижает степень взаимного влияния ячеек друг на друга. В последнее время все чаще применяется динамический XOR, при использовании которого шаблон преобразования каждого последующего блока зависит от содержимого предыдущего блока. Задача инженера при восстановлении данных определить шаблон XOR-преобразования либо вычислить алгоритм формирования XOR-шаблона и устранить данное преобразование в дампах микросхем.
  4. Устранение внутреннего и внешнего интерлива. Большинство современных микросхем памяти имеют два канала чтения/записи. Также микросхема в одном физическом корпусе может содержать в себе несколько частей (на сегодняшний день до четырех). Для увеличения скорости работы контроллер накопителя запрограммирован таким образом, чтобы параллельно записывать/считывать данные, используя оба канала сразу, а также вести запись в несколько частей микросхемы, а при наличии двух и более физических микросхем на накопителе возможна одновременная запись сразу во все микросхемы. Задача инженера определить, использовалась параллельная запись в разные плоскости микросхемы, либо одновременно в несколько частей либо в разные микросхемы. Необходимо в данном случае учитывать размер страницы и блока, с которыми работает контроллер, а также выстроить правильный порядок объединения дампов, чтобы данные в итоге были в правильной последовательности.
  5. Устранение внутриблоковых преобразований. Различные контроллеры в своей работе могут использовать дополнительные преобразования данных либо структуры данных внутри блоков, которыми они оперируют. Наша задача –определить тип данных преобразований и устранить их.
  6. Сборка образа. Устранив все преобразования, мы получаем виртуальный дамп, внутри которого все данные в правильном порядке расположены в блоках, однако блоки хаотично разбросаны по всему дампу. Сделано это опять же для равномерного износа микросхем памяти. Выстроить блоки в нужной последовательности можно, либо использовав алгоритм транслятора, определив его по модели контроллера, либо по его характерным признакам проанализировав полученный дамп накопителя. В случае если это невозможно, можно попытаться собрать образ по маркеру номера блока, определив и преобразовав его в служебной области страницы данных. Определив правильный алгоритм транслятора либо выстроив алгоритм трансляции по маркеру, мы получаем конечный дамп с правильно выстроенными блоками данных и можем получить доступ к файлам и папкам пользовательских данных.

В процессе сборки могут возникнуть нестандартные ситуации, такие как сдвиги в образе либо несколько блоков с одним и тем же маркером, претендующие на одно место в образе. Однако опытный инженер по восстановлению данных всегда знает, как решить данную проблему!