Символические ссылки представляют собой специальные файлы, ассоциированные с другим каталогом или файлом. «Содержимым» файла является целевой объект ссылки, поэтому для определения символических ссылок не нужно создавать новые структуры данных. Если путь к целевому файлу или каталогу занимает менее 60 символов, он хранится в 60 байтах индексного узла, используемых для хранения 12 прямых и 3 косвенных указателей на блоки. Если длина пути превышает 60 байт, для его хранения выделяется отдельный блок. Размер файла соответствует длине пути к целевому объекту.

Для просмотра символической ссылки можно воспользоваться программой icat. Программа icat выводит содержимое файла; при этом она отображает полный путь, потому что символическая ссылка обрабатывается как обычный файл.

# fis -f linux-ext3 ext3-3.dd [...]

1/1 26: filel.txt

# icat -f linux-ext3 ext3-3.dd 26

/di rl/di r2/di гЗ/di r4/di r5/di гб/di r7/di r8/di r9/di rlO/di rll/di rl2/di rl3/di rl4/di г15/ filel.txt

В индексном узле указан размер 90. Согласно выходным данным fis, узел относится к типу «1», что означает «link» (то есть «ссылка»).

Хеш-деревья

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

Блоки, соответствующие узлам следующего уровня, задаются при помощи структур данных, называемых дескрипторами узлов. Перед дескрипторами узлов размещается заголовок, который начинается за записью каталога «..». Поля заголовка дескриптора узла перечислены в табл. 15.25.

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

Диапазон

Описание

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

0-3

Не используется

Нет

4-4

Версия

Да

5-5

Длина структуры

Да

6-6

Уровни узлов

Нет

7-7

Не используется

Нет

За заголовком следует список дескрипторов узлов, идентифицирующих хеш-коды каждого блока. В табл. 15.26 описана структура данных дескриптора в списке.

Таблица 15.26. Структура данных дескриптора узла хеш-дерева

Диапазон

Описание

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

0-3

Минимальный хеш-код в узле

Да

4-7

Адрес блока

Да

Каждая запись содержит минимальный хеш-код и блок каталога узла. Дескриптору первого узла минимальный хеш-код не нужен, потому что он должен быть равен 0. По этой причине 4 байта используются для другой цели - в них хранится текущее количество дескрипторов узлов и максимальное количество дескрипторов в блоке. Таким образом, первый дескриптор узла содержит поля, перечисленные в табл. 15.27.

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

Диапазон

Описание

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

0-1

Максимальное количество дескрипторов узлов

Нет

2-3

Текущее количество дескрипторов узлов

Да

4-7

Адрес блока первого узла

Да

Оставшаяся часть блока за дескриптором последнего узла обычно содержит данные от ранее существовавших записей каталогов.

Рассмотрим содержимое первого блока большого каталога, индексированного с применением хеш-дерева:

# і саг --Г Ипих-ехгЗ ext3-3.dc! 16

0000000: 1000 0000 ОсОО 0100 2е00 0000 0200 0000 ................

0000016: тз 0200 2е2е 0000 0000 0000 0208 0000 ................

0000032: 7с00 0400 0100 0000 3295 6541 0400 0000 .......2.еА....

0000048: 88d5 Га92 0200 0000 86е7 50Ье 0300 0000 .........Р.....

0000064: 3738 3930 2е31 3233 3400 0000 1200 0000 7890.1234.......

В этих выходных данных байты 0-9 соответствуют записи каталога «.», а байты 12-23 - записи Обратите внимание на то, что поле длины записи «..» в байтах 16-17 равно 1012 байтам (0х03£4). Оно указывает на конец 1024-байто-вого блока.

Заголовок начинается в байте 24, первые 4 байта не используются. Байт 28 показывает, что используется хеш версии 2, а байт 29 - что структура занимает 8 байт. Дескриптор первого узла хранится в байтах 32-39. Байты 32-33 показывают, что блок может содержать до 124 (0x7с) дескрипторов, но из байтов 34-35 видно, что используются только 4. Согласно байтам 36-39, первый узел хранится в блоке 1 каталога.

Второй дескриптор узла начинается в байте 40. Мы видим, что этот узел содержит файлы с хеш-кодами имени, большими 0x41659532, а имена размещаются в блоке 4 каталога. Чтобы определить верхнюю границу хеш-кодов этого узла, мы обращаемся к записи следующего узла, которая начинается в байте 48, и видим, что ее хеш-код равен 0х92ґас1588. Запись четвертого узла начинается в байте 63.

Запись каталога | Криминалистический анализ файловых систем | Структуры данных журнала


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



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

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