Файловая система NTFS извне и изнутри

       

оригинальная файловая запись до восстановления


Сигнатура "FILE" указывает на начало файловой записи. А раз так, по смещению 04h байт будет расположен 16-разрядный указатель на номер последовательности обновления. В данном случае он равен 002Ah. ОК! Переходим по смещению 002Ah и видим, что здесь лежит слово 0006h. Перемещаемся в конец сектора и сверяем его с последними двумя байтами. Как и предполагалось, они совпадают. Повторяем ту же самую операцию со следующим сектором. Собственно говоря, количество секторов может и не равняться двум. Чтобы не гадать на кофейной гуще, необходимо извлечь 16-разрядное значение, расположенное по смещению 06h от начала файловой записи (в данном случае оно равно 0003h) и вычесть из него единицу. Действительно, получается два (сектора).

Теперь нам необходимо найти массив последовательности обновления, хранящий оригинальное значение последнего слова каждого из секторов. Смещение массива обновления равно значению указателя на последовательность обновления увеличенной на два, т. е. в данном случае 002Ah + 02h == 002Ch. Извлекаем первое слово (в данном случае равное 00h 00h) и записываем его в конец первого сектора. Извлекаем следующей слово (47h 11h) и записываем его в конец второго сектора.

В результате чего, восстановленный сектор будет выглядеть так:

-->

начало первого сектора FILE Record

00000000:  46 49 4C 45-2A 00 03 00-7C 77 1A 04-02 00 00 00  FILE* ¦ |w>¦O  

00000010:  01 00 02 00-30 00 01 00-28 02 00 00-00 04 00 00  O O 0 O (O   ¦ 

00000020:  00 00 00 00-00 00 00 00-06 00 06 00-00 00 47 11          ¦ ¦   G<

000001F0:  00 00 00 00-00 00 00 00-00 00 00 00-00 00 00 00                ¦

<--

конец первого сектора FILE Record

000003F0:  07 CC E1 0D-00 09 00 00-FF FF FF FF-82 79 47 11  •Iad 0  yyyyВy¦

<--

конец второго сектора FILE Record



Содержание раздела