До настоящего момента мы рассматривали атрибуты $INDEX_R00T и $INDEX_AL-L0CATI0N. Оба атрибута содержат заголовочные данные, за которыми следует заголовок узла и список индексных элементов. В этом разделе описывается структура данных заголовка узла. Заголовок присутствует в $INDEX_R00T и в каждой структуре данных индексной записи; он показывает, где начинается и заканчивается список индексных элементов. Поля заголовка перечислены в табл. 13.14.

Таблица 13.14. Структура данных заголовка индексного узла

Диапазон

Описание

Необходимость

0-3

Смещение начала списка индексных элементов (относительно начала заголовка узла)

Да

4-7

Смещение конца используемой части списка индексных элементов (относительно начала заголовка узла)

Да

8-11

Смещение конца выделенного буфера списка индексных элементов (относительно начала заголовка узла)

Да

12-15

Флаги

Нет

Индексные элементы узла $1МОЕХ_КООТ начинаются сразу же за заголовком узла, но индексные элементы в индексном буфере могут смещаться из-за массива замены маркеров. При поиске данных, оставшихся от удаленных индексных элементов, мы анализируем данные между концом используемой части буфера и концом выделенного буфера.

Поле флагов содержит всего один флаг 0x01: он устанавливается в том случае, если элементы этого списка ссылаются на дочерние узлы. Этот флаг присутствует в каждом индексном элементе.

Давайте снова вернемся к уже рассмотренным атрибутам. Атрибут $INDEX_R00T содержит следующие данные:

# icat -f ntfs ntfsl.dd 7774-144 xxd

0000000: 3000 0000 0100 0000 0010 0000 0400 0000 0...............

0000016: 1000 0000 aOOO 0000 aOOO 0000 0100 0000 ................

[...]

Заголовок узла начинается с байта 16; байты 16-19 показывают, что список начинается со смещением 16 (0x10) байт, то есть с байта 32, и заканчивается со смещением 160 (ОхаО) байт, то есть в байте 176. В этом случае выделенное и используемое пространство совпадают, потому что они относятся к атрибуту $IN-DEX_R00T, который является резидентным и должен занимать как можно меньше места. В байте 28 установлен флаг 0x01, из чего следует, что у этого узла имеются дочерние узлы (находящиеся в $INDEX_ALLOCATION).

Теперь снова рассмотрим атрибут $1N D ЕХ_А LLOCATIО N:

# icat -f ntfs ntfsl.dd 7774-160 xxd

0000000: 494e 4458 2800 0900 4760 2103 0000 0000 INDX(...G'!.....

0000016: 0000 0000 0000 0000 2800 0000 f808 0000 ........(.......

0000032: e80f 0000 0000 0000 2100 0000 0600 0000 ........!.......

[...]

Первые 24 байта принадлежат заголовку индексной записи, после которого начинается заголовок узла. Байты 24-27 показывают, что список индексных элементов начинается со смещением 40 (0x28). Не забывайте, что значение задается относительно начала заголовка узла, поэтому к нему необходимо прибавить 24; сумма равна 64. В данном случае список индексных элементов не следует непосредственно за заголовком списка, потому что между заголовком списка индексных элементов и самим списком находится массив заменителей. Вспомните, что байты 4-5 заголовка индексной записи показывают, что массив хранится со смещением 40 (0x28).

Байты 28-31 показывают, что смещение конца последнего элемента равно 2296 байтам (0x08f8), а байты 32-35 - что смещение конца выделенного буфера равно 4072 байтам (0x0fe8). Следовательно, буфер содержит 1776 байт неиспользуемого пространства, где могут храниться данные из файлов с именами, хранившимися в этих элементах. Согласно байтам 36-39, флаги равны 0, то есть узел не имеет дочерних узлов.

Атрибут $в1тмар | Криминалистический анализ файловых систем | Структура данных обобщенного индексного элемента


Криминалистический анализ файловых систем



Новости за месяц

  • Май
    2020
  • Пн
  • Вт
  • Ср
  • Чт
  • Пт
  • Сб
  • Вс