Вопрос 0. Где взять необходимые данные?
Блок загрузки занимает нулевой сектор и содержит таблицу параметров формата диска и короткую программу загрузки ОС Все данные блока загрузки записываются на том в процессе его форматирования соответствующей программой.
Представим данную информацию в виде шестнадцатеричного дампа
Область выделенная красным контуром и есть наша запись загрузки. Перепишем нашиее в удобочитаемый вид (всего 30 байт):
EB 3C 90 4D 53 44 4F53 35 2E 30 00 02 10 01 00
F8 FA 00 3F 00 10 00 3F 00
Интегрируем полученные данные в нашу таблицу в соответствии с данными смещения и длине байтов в записи. Попробуем их проанализировать
(не забываем, что старший и младший байты данных при записи
на носитель меняются местами).
Структура блока загрузки (bootrecord)
Смещение, байт | Длина, байт | Содержимое элемента блока загрузки | Значение | Примечание |
+00 | Команда перехода на программу загрузки (JMP) | EB 3C 90 | ||
+03 | Служебная информация программы форматирования | 4D 53 44 4F 53 35 2E 30 | MSDOS5.0 | |
+0Bh | Размер сектора в байтах | 00 02 | Переводим 0200h = 512d | |
+0Dh | Размер кластера в секторах | Переводим 10h = 16d | ||
+0Eh | Количество секторов перед первой таблицей FAT | 01 00 | Переводим 0001h = 1d | |
+10h | Количество таблиц FAT | |||
+11h | Максимальное число элементов корневого каталога | 00 02 | Переводим 0200h = 512d | |
+13h | Общее количество секторов на томе | 00 00 | (неопределено, неиспользовано) | |
+15h | Дескриптор носителя (то же, что 1-й байт FAT) | F8 | F8 | |
+16h | Количество секторов, выделенных одной FAT | FA 00 | Переводим 00FAh = 250d | |
+18h | Количество секторов на дорожке | 3F 00 | Переводим 003Fh = 63d | |
+1Ah | Количество головок чтения/записи (поверхностей) | 10 00 | Переводим 0010h = 16d | |
+1Ch | Количество спрятанных секторов | 3F 00 | Переводим 003Fh = 63d | |
+1Eh | Начало программы начальной загрузки ОС |
Вопрос 1. Анализ и получение данных
Таким образом, проанализировав и транслировав данные из загрузочной записи получаем следующие значения:
- параметры физического форматирования тома:
- количество рабочих поверхностей, цилиндров _ 16
- секторов на дорожке _ 63
- размер кластера _ 16
- количество секторов, выделенных FAT _ (две таблицы по 250) 500
- количество секторов, выделенных корневому каталогу _ 32 (2 кл.)
Расчет: 32 байта на одну запись в каталоге * 512 записей / 512 байт емкость сектора.
- размер (в байтах) таблицы параметров форматирования диска _30 байт(с адреса
смещения 00h до адреса 1Eh)
-машинный код программы загрузки ОСрасположен в диапазоне адресов с 1Eh
по 1FDh и составляет 479 байт.
Задание Лаб3.3. Исследование структуры корневого каталога
Просмотрите (командой DIR и программой Diskedit) оглавление корневого каталога одного из томов. Определите и сохраните в отчете следующие пара-метры этого каталога:
- размер каталога (в секторах и байтах);
- физическое расположение (номера занятых каталогом секторов);
- размер регистрационной записи о дочернем объекте каталога;
- количество дочерних объектов корневого каталога, в том числе: файлов, подкаталогов, системных и скрытых файлов, меток томов;
- количество удаленных файлов.
- размер каталога (в секторах и байтах);
- физическое расположение (номера занятых каталогом секторов);
Область корневого каталога составляет 32 сектора с 501 по 532 сектора включительно, что в байтах составляет 32 * 512 = 16384 байт
Размер регистрационной записи о дочернем объекте каталога составляет 32 байта, что мы можем наблюдать в скриншоте приведённом ниже с относительно адреса 80h до 9Fh (пример каталог DNна скриншоте ниже)
Найти количество дочерних объектов корневого каталога, в том числе: файлов, подкаталогов, системных и скрытых файлов, меток томов;
Количество дочерних объектов корневого каталога равно (29),
в том числе: файлов – 23 (обозначаются как «File»),подкаталогов – 4 (обознаяются как «Dir»), системных и скрытых файлов поровну по 2
(смотрим атрибуты регистационной записи «S» и «H»), меток томов – 1
(наименование “Dos”) и количество удаленных файлов ровно 1
(измененное имя “x4”, описание IDидентификатор «Erased»)
Задание Лаб3.4. Исследование структуры байта атрибутов файла
С помощью программы Diskedit определите адрес (смещение в регистрационной записи о дочернем объекте) байта атрибутов файла и порядковые номера битов для каждого атрибута.
Определите системные, скрытые и защищенные от модификации файлы корневого каталога, а также файлы, требующие архивирования при создании очередной резервной копии тома.
Установите для одного из текстовых файлов атрибут «только чтение» и экспериментально подтвердите повышение уровня защищенности файла.
Установите для одного из текстовых файлов атрибут «является каталогом» и оцените последствия такого изменения.
Измените метку тома стандартными средствами (командой Label). Измените метку тома с помощью программы Diskedit и оцените результат с помощью команды Vol. Предложите способ сокрытия от (неквалифицированного) пользователя факта наличия на диске большой группы файлов.
Таблица 6.4 – Структуразаписикорневогокаталога
Смещение | Длина, байт | Содержимое |
+00 | Имя файла | |
+08 | Расширение файла | |
+0Bh | Атрибуты файла | |
+0Ch | 0Ah | Резерв |
+16h | Время создания/модификации (в спец. формате) | |
+18h | Дата создания/модификации (в спец. формате) | |
+1Ah | Номер начального кластера | |
+1Ch | Размер файла в байтах | |
+20h | Размер элемента каталога (как правило, равно 20h) |
27h == 10 0111b
Третье поле записи длиной в 1 байт отведено для хранения атрибутов файла – шести битовых флагов, единичное значение каждого из которых задает определенное свойство файла:
0 -й бит = 1 - файл доступен только для чтения (R/O – ReadOnly)
1 -й бит = 1 - файл объявляется спрятанным (Hid – Hidden), то есть штат-ные программы просмотра каталогов не должны его показы-вать в списке файлов
2 -й бит = 1 - системный файл (Sys - System)
3 -й бит = 1 - фиктивный файл, имя и расширение которого используются в качестве метки тома (Vol - Volume)
4 -й бит = 1 - файл специального формата – подчиненный каталог (Dir - Directory)
5 -й бит = 1 - файл, требующий архивирования при создании очередной резервной копии диска (Arc)