Алгоритм - Учебный центр

Версия сайта для слабовидящих
Заполните форму ниже! Мы вам перезвоним!

Нажав на кнопку "Отправить", Я даю своё согласие на автоматизированную обработку указанной информации, распространяющейся на осуществление всех действий с ней, включая сбор, передачу по сетям связи общего назначения, накопление, хранение, обновление, изменение, использование, обезличивание, блокирование, уничтожение и обработку посредством внесения в электронную базу данных, систематизации, включения в списки и отчетные формы.


Чтение частей нерезидентного файла в разделе NTFS.

Чтение частей нерезидентного файла в разделе NTFS.

Для определения расположения частей (экстентов) нерезидентного файла на диске в разделе NTFS, нужно проследить цепочку так называемых блоков виртуальных номеров кластеров Virtual Cluster Number (VCN), или просто блоков VCN в записи файла $MFT определяющей этот файл. Показатель смещения начала этой цепочки хранится в двухбайтовом поле, имеющем смещение +20h байт относительно начала атрибута данных (атрибут 80). В описываемом случае этот показатель равен +40h, а смещение области блоков VCN относительно начала записи MFT равно +01A0h (см. рис. 1). Файл, записанный в разделе NTFS, может быть сегментирован. Он состоит из одного или нескольких фрагментов, называемых экстентами. Размер и расположение каждого экстента описывается в блоке VCN. В зависимости от того, фрагментирован файл или нет, область VCN может содержать один блок или их набор. Блоки VCN имеют переменный размер, определяемый первым байтом. Формат блока стоит показать на конкретном примере. Возьмем первый блок VCN, имеющий в рассматриваемом примере смещение +01A0 относительно начала записи MFT:

31 20 D9 86 02

Размеры двух полей блока VCN определяют тетрады первого байта содержащего значение 31h (3 – определяет размер второго поля блока VCN, а 1 – определяет размер первого поля блока VCN). Первое поле, имеющее длину один байт, хранит количество кластеров (20h), выделенных экстенту файла. Второе поле размером три байта содержит номер первого кластера данного экстента файла (0286D9h). Таким образом, в данном случае первому экстенту файла $MFT выделено 20h кластеров, а номер первого кластера для первого экстента равен 0286D9h. Таким образом, определяем размер и расположение первого экстента файла. Второй блок VCN расположен сразу вслед за первым:

12 24 08 21.

Для того чтобы определить первый кластер второго экстента, необходимо прибавить к адресу первого экстента смещение, указанное во втором блоке VCN (с учетом знака). В данном случае второй экстент размещен с кластера с номером: 0286D9+21=286FA. Длина второго экстента составляет 0824h кластера.

Таким образом, анализируя блоки VCN файлов, можно определить размеры и расположение всех экстентов файла. Список блоков VCN (в нашем примере их всего два) закрывается байтом с нулевым (00) значением (см. рис. 1).

 

Рис. 1. Фрагмент записи файла $MFT которая определяет файл состоящий из двух фрагментов (атрибут 80).

 


Лицензия