6

У меня есть карта памяти microSDHC емкостью 16 ГБ, которая, по-видимому, была уничтожена телефоном (телефон друга, не знаю, какой именно, но я могу это выяснить): во время фотосъемки он внезапно больше не мог получить доступ к карте. Я был с ней, когда это случилось. Мы сразу же выключили телефон и не пытались отформатировать карту или что-то еще.

Используя SD-CardReader и Ubuntu, устройство все еще можно было распознать, и все 16 ГБ можно было прочитать через dd без ошибок. Однако 99% dd-дампа были просто нулевыми, хотя карта ранее содержала несколько ГБ данных. Только очень небольшая часть все еще содержала данные, и эти фрагменты были разбросаны по 16 ГБ.

Например, карта изначально содержала файловую систему FAT32. Однако теперь загрузочный сектор и таблица разделов обнулены, а также первая копия FAT и большая часть данных. Любопытно, что 2-я копия FAT была целой, как и корневой каталог. Я нашел (только) три частичных JPG-файла в дд-дампе, и интересно то, что данные Exif из этих JPG предполагают, что они были взяты непосредственно перед тем, как карта упала.

Итак, мои вопросы таковы:

  • Вместо использования dd, основанного на драйверах USB-накопителей для Linux, которые распознают (и интерпретируют) устройство, есть какой-то другой способ доступа к информации на флеш-карте еще более низкого уровня (т. Е. Действительно считывание содержимого чипа вместо что видит usb_storage? Некоторые формы FTL, JFFS и т.д.?)
  • Были ли данные действительно стерты или просто помечены как "грязные"? Для телефона было бы физически невозможно перезаписать 16 ГБ памяти за считанные секунды. Так, может быть, есть способ зачитать реальные данные? Или это вообще возможно только путем разборки карты и прямого доступа к NAND (?) - устройству через специализированное оборудование?

Я был бы признателен за любые указания - поскольку моя подруга на самом деле не использует компьютеры рядом со своим телефоном, она никогда не удосужилась скопировать с нее какие-либо изображения в более безопасное место, поэтому несколько сотен фотографий друзей и семьи будут потеряны:-/

1 ответ1

2

Не существует стандартного или «встроенного» способа указать SD-карте, чтобы она предоставляла вам необработанные данные NAND.

Это предположение, но микроконтроллер в SD-картах, вероятно, реализует своего рода сопоставление физического адреса блока с логическим адресом блока для выравнивания износа. Эта таблица PBA to LBA, вероятно, хранится в NAND, как и фактические данные, относительно мала, вероятно, отслеживает свободные блоки и действительно может быть перезаписана в считанные секунды.

Есть ли какой-то другой способ получить доступ к еще более низким уровням информации на флэш-карте?

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

Вы можете найти это интересным, но, вероятно, не очень полезным. Кажется, что эти SD-карты имеют эквивалент SCSI "Vendor Specific Commands", которые используются для обновления прошивки на SD-микроконтроллере. Таким образом, теоретически было бы возможно загрузить пользовательскую или модифицированную прошивку микроконтроллера SD, которая по-разному реагирует на запросы чтения / записи. Тем не менее, вы бы только добраться до того же пункта, описанного выше. Я не знаю ни одной прошивки или проектов SD микроконтроллера, которые бы реально существовали.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .