загрузка...

Структуры данных


От знакомства с базовыми концепциями разделов Apple можно переходить к рассмотрению структур данных. Как и в случае с другими структурами данных в книге, если этот материал не представляет для вас интереса, его можно пропустить. Здесь также приводятся выходные данные некоторых аналитических программ на примере образа диска.
Запись карты разделов
Карта разделов Apple содержит несколько 512-байтовых структур данных, каждая из которых представляет один раздел. Карта разделов начинается со второго сектора диска и продолжается до тех пор, пока не будут описаны все разделы. Структуры данных разделов хранятся в смежных секторах, и в каждой записи присутствует общее количество разделов. Структура записи карты разделов показана в табл. 5.7.
Таблица 5.7- Структура данных записей разделов Apple

Диапазон байтов

Описание

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

0-1

Сигнатура (0x504D)

Нет

2-3

Зарезервировано

Нет

4-7

Общее количество разделов

Да

8-11

Начальный сектор раздела

Да

12-15

Размер раздела в секторах

Да

16—47

Имя раздела в кодировке ASCII

Нет





Диапазон байтов

Описание

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

48-79

Тип раздела в кодировке ASCII

Нет

80-83

Начальный сектор области данных в разделе

Нет

84-87

Размер области данных в секторах

Нет

88-91

Состояние раздела (см. табл. 5.8)

Нет

92-95

Начальный сектор загрузочного кода

Нет

96-99

Размер загрузочного кода в секторах

Нет

100-103

Адрес кода загрузчика

Нет

104-107

Зарезервировано

Нет

108-111

Точка входа в загрузочный код

Нет

112-115

Зарезервировано

Нет

116-119

Контрольная сумма загрузочного кода

Нет

120-135

Тип процессора

Нет

136-511

Зарезервировано

Нет


Тип раздела задается в кодировке ASCII, а не целочисленным кодом, как в других схемах. Коды состояния каждого раздела применимы как к A/UX (старая операционная система Apple), так и к современным системам Macintosh. Поле состояния содержит одно из значений, перечисленных в табл. 5.8 [Apple, 1999].
Таблица 5.8. Коды состояния разделов Apple

Тип

Описание

0x00000001

Запись действительна (только A/UX)

0x00000002

Запись выделена (только A/UX)

0x00000004

Запись используется (только A/UX)

0x00000008

Запись содержит загрузочную информацию (только A/UX)

0x00000010

Запись доступна для чтения (только A/UX)

0x00000020

Запись доступна для изменения (Macintosh и A/UX)

0x00000040

Загрузочный код является позиционно-независимым (только A/UX)

0x00000100

Раздел содержит цепочечно-совместимый драйвер (только Macintosh)

0x00000200

Раздел содержит настоящий драйвер (только Macintosh)

0x00000400

Раздел содержит цепочечный драйвер (только Macintosh)

0x40000000

Автоматическое монтирование при запуске (только Macintosh)

0x80000000

Стартовый раздел (только Macintosh)


Поля области данных используются для файловых систем с областью данных, начало которой не совпадает с началом диска. Поля загрузочного кода предназначены для поиска загрузочного кода при запуске системы.
Чтобы идентифицировать разделы на диске Apple, программа (или человек) читает структуру данных из второго сектора. Обработка структуры дает общее количество разделов, после чего извлекается другая информация о разделах. Обычно первая запись относится к самой карте разделов. Затем читается следующий сектор, и процесс продолжается до тех пор, пока не будут прочитаны все разделы. Вот как выглядит содержимое первой записи карты разделов: dd if=mac-disk.dd bs=512 skiр=1 | xxd
0000000: 504d 0000 0000 000a 0000 0001 0000 003f PM              ?


4170 706с              6500              0000              0000              0000              0000              0000
0000 0000              0000              0000              0000              0000              0000              0000
4170 706с              655f              7061              7274              6974              696f              6e5f
6d61 7000              0000              0000              0000              0000              0000              0000
0000 0000              0000              003f              0000              0000              0000              0000 0000              0000              0000              0000              0000              0000              0000
Apple.
Apple_partition_ map



На компьютерах Apple используются процессоры Motorola PowerPC, поэтому данные на них хранятся с обратным порядком байтов. В результате отпадает необходимость в перестановке байтов, как в разделах DOS. В байтах 0-1 видна сигнатура 0x504d, а в байтах 4-7 — количество разделов, равное 10 (0x0000000а). Байты 8-11 показывают, что первый сектор диска является начальным сектором раздела, а размер раздела составляет 63 сектора (0x3f).
Разделу присвоено имя «Apple», а тип раздела обозначается строкой «Apple_partition_map». Из байтов 88—91 видно, что флаги для раздела не установлены. У других записей, относящихся к конкретным разделам, заданы коды состояния.
Пример информации о разделах
Для просмотра карты разделов Apple можно воспользоваться программой mmls из пакета The Sleuth Kit. Вот как выглядят результаты, полученные при запуске mmls на портативном компьютере iBook с диском емкостью 20 Гбайт: mmls -t mac mac-disk.dd
MAC Partition Map
Units are in 512-byte sectors


Slot

Start

End

Length

Description

00


0000000000

0000000000

0000000001

Unallocated

01

00

0000000001

0000000063

0000000063

Apple_pa rt i t i on_map

02


0000000001

0000000010

0000000010

Table

03


0000000011

0000000063

0000000053

Unallocated

04

01

0000000064

0000000117

0000000054

Apple_driver43

05

02

0000000118

0000000191

0000000074

Apple_driver44

06

03

0000000192

0000000245

0000000054

Apple_driver_ATA

07

04

0000000246

0000000319

0000000074

Apple_driver_ATA

08

05

0000000320

0000000519

0000000200

Apple_FWDriver

09

06

0000000520

0000001031

0000000512

Apple_Driver_IOKit

10

07

0000001032

0000001543

0000000512

Apple Patches

11

08

0000001544

0039070059

0039068516

Apple_HFS

12

09

0039070060

0039070079

0000000020

Apple_Free


В этих данных строки отсортированы по начальному сектору, а второй столбец показывает, какая запись карты содержит описание раздела. В данном примере записи уже хранятся в отсортированном виде. Из строки 12 видно, что на компьютере Apple mmls выводит информацию о нераспределенных секторах. Строки О, 2 и 3 были добавлены mmls; в них выводится информация о местонахождении карты разделов и о свободных секторах. Перечисленные драйверы используются системой при загрузке.
Для анализа низкоуровневого образа диска в OS X также можно запустить программу pdisk с флагом -dump: pdisk mac_disk.dd -dump mac-disk.dd map block size=-512
#:              type              name              length base (size)

1

Apple_partition_map Apple

63 (P 1

2

Apple_Dri ver43*Maci ntosh

54 (P 64

3

Apple_Driver43*Maci ntosh

74 (P 118

4

Apple_Dri ver_ATA*Maci ntosh

54 (P 192

5

Apple_Dri ver_ATA*Maci ntosh

74 (P 246

6

Apple_FWDriver Macintosh

200 (P 320

7

Apple_Driver_IOKit Macintosh

512 (P 520

8

Apple_Patches Patch Partition

512 (P 1032

9

Apple_HFS untitled

390668516 (P 1544

10

Apple_Free

0+(P 39070060


Device block size=512. Number of Blocks=10053
DeviceType=OxO. DevicelcbOxO
Drivers-
1:              (P 64              for              23.              type=0xl
2:              (P 118              for              36.              type-Oxffff
3:              @192              for              21.              type=0x701
4:              @246              for              34.              type=0xf8ff
Как упоминалось во введении, файлы образов дисков Apple (не путайте с файлами образов, используемыми при анализе файловых систем) также могут содержать карту разделов. Файл образа представляет собой архивный файл, который может содержать несколько отдельных файлов (по аналогии с zip-файлами Windows или tar-файлами UNIX). Файл образа диска может содержать один раздел с файловой системой или же только файловую систему без разделов. Тестовый файл образа диска (таким файлам обычно присваивается расширение .dmg) обладает следующей структурой: mmls -t mac test.dmg
MAC Partition Map
Units are in 512-byte sectors
Slot Start              End              Length              Description
00:                                          0000000000              0000000000              0000000001              Unallocated
01:              00              0000000001              0000000063              0000000063              Apple_partition_map
02:                                          0000000001              0000000003              0000000003              Table
03:                                          0000000004              0000000063              0000000060              Unallocated
04:              01              0000000064              0000020467              0000020404              Apple_HFS
05:              02              0000020468              0000020479              0000000012              Applejree
<< | >>
Источник: Кэрриэ Б.. Криминалистический анализ файловых систем. 2007

Еще по теме Структуры данных:

  1. Структуры данных
  2. Структуры данных журнала
  3. Структуры данных
  4. Структуры данных
  5. Атрибуты и структуры данных индексов
  6. Структуры данных i386
  7. Структуры данных Sparc
  8. 14.1. ЗАДАЧИ И СТРУКТУРА. ИСТОЧНИКИ ДАННЫХ
  9. Структуры данных FAT
  10. Структуры данных NTFS
  11. Структуры данных Ext2 и Ext3
  12. Структуры данных UFS1 и UFS2
  13. Структура основных данных стартового маркетингового анализа
  14. СТРУКТУРА ОСНОВНЫХ ДАННЫХ ЭКОНОМИЧЕСКОГО АНАЛИЗА ВНЕШНЕЙ СРЕДЫ, НЕОБХОДИМЫХ МЕЖДУНАРОДНОМУ МЕНЕДЖЕРУ
  15. СТРУКТУРА ОСНОВНЫХ ДАННЫХ ПОЛИТИЧЕСКОГО АНАЛИЗА ВНЕШНЕЙ СРЕДЫ, НЕОБХОДИМЫХ МЕЖДУНАРОДНОМУ МЕНЕДЖЕРУ
  16. 3. Защита прав на программы для ЭВМ и базы данных Регистрация программ для ЭВМ и баз данных
  17. Хранение и использование персональных данных работников. Передача персональных данных работников
  18. Понятие персональных данных работника. Обработка персональных данных работника