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

Мы сделали посекторный клон флешки и начали анализ. В диспетчере устройств следующая картина:

Неразмеченное устройство

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

Error mounting truecrypt partition

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

0 сектор с пустой таблицей разделов

Красным обозначена пустая таблица разделов (Partition table). Первоначальная задача состояла в поиске первого сектора зашифрованного раздела. Boot-сектор NTFS имеет определенную структуру и легко различим даже "на глаз" в hex-редакторе. На разных дисках выглядеть он будет практически одинаково - отличаться будут только параметры раздела - количество секторов, смещение MFT (Master File Table - таблица размещения файлов) и так далее... На картинке ниже слева - зашифрованный boot NTFS сектор, справа - обычный.

Сравнение зашифрованного boot-сектора с незашифрованным

На флешках, как правило, начало раздела располагается в секторе 2048. Мы вручную в таблицу добавили раздел с данным смещением и попробовали смонтировать его в TrueCrypt, но попытка не увеньчалась успехом. Тогда мы начали перебирать наиболее распространенные варианты смещений. Увы, успехом это не увеньчалось. Учитывая, что начало раздела может быть и в 32000 секторе, стало очевидно, что ручной перебор параметров к успеху точно не приведет. Для решения данной задачи мы написали собственную утилиту, которая пытается смонтировать раздел с заданным паролем, поочередно перебирая возможные варианты параметров тома. Начало раздела оказалось в 27648 секторе. На поиск раздела ушло около 4 часов работы нашей программы.

Успешно смонтирован найденный раздел

Параметры найденного раздела

Далее мы проверили файловую систему смонтированного тома - не обнаружив никаких ошибок, продемонстрировали результат клиенту. Абсолютно все файлы были на месте. Клиент был очень сильно рад:)