Восстановление данных из пустого места
Привет Хабр. В новогодние каникулы появилась возможность написать об интересном случае (хотя подобных кейсов у нас в DATALABS не мало). А интересен он тем, что из полностью обнулённой USB флешки, мы удачно восстановили данные. Если интересно как? Добро пожаловать под кат…
Предложение отформатировать накопитель Windows выдаёт в тех случаях, когда не может определить на устройстве файловую структуру, вот и предлагает создать новую, путём форматирования.
В нашем случае нужны данные и форматировать нельзя. Смотрим дисковым редактором, что же случилось с файловой структурой.
WinHex:
Опаньки… Все! Все 32 гигабайта «залиты» нулями… Данных нет! Шеф, всё пропало.
Сразу спрашиваем клиента, не давал ли кому? и тот злобный товарищ не запускал ли утилиты ремонта? Ответ: Нет, сразу к вам.
Если флешку ни кто не «прошивал» и не записывал её паттерном, то не могла же она в миг обнулиться, на это требуется время и действие.
Ок, русские не сдаются. Спаяем микросхему и посмотрим содержимое памяти напрямую, в обход контроллера. В данном случае в одном корпусе два кристалла, Вместе со служебной информацией получается два дампа по 18 гб.
В дампе не нули, но это ещё ни о чём не говорит, так как на современных флешках контроллер пишет данные не в явном виде, а через XOR операцию.
Если все блоки одинаковы, то да, накопитель залит одним и тем же. Но нам повезло они разные, а это данные!
Нужно подобрать ксор, и собрать блоки в нужной последовательности по алгоритму контроллера.
Пошаманим ростовским комплексом
И вауля, 26 гигабайт данных, 9000 файлов, битых из них 900. К сожалению картинку с данными мы не имеем права выкладывать, так как у нас в конторе конфиденциальность превыше всего.
В заключении этой мини истории со счастливым концом (клиент сначала расстроился, что там одни нули), нужно написать почему не все файлы корректно восстановились.
Качество современных чипов памяти весьма печальное, и несмотря на громогласные заявления производителей о том, что вот мы сделали огромное количество циклов записи… статистика показывает обратное. Износ происходит очень быстро, по сравнению с флешками которые измерялись мегабайтами. Ну не будем об этом здесь и сейчас.
Касательно этого случая, флешка умирала и «сигнализировала» об этом косвенным путём, а именно: запускалась проверка диска, результат работы чекдиска — папка FOUND, в восстановленных данных присутствует. Это уже были первые звоночки, что она «сыпется».
Контроллер увидел, что количество плохих ячеек памяти уже огромное и сделал такой «финт ушами» как, отдача в интерфейс нулей.
Нам же пришлось вычитывать битые сектора, многократным чтением, какие-то из них удалось прочитать или восстановить из ECC. Как результат — клиент доволен. А начиналось то всё, с пустого места…