- •2.1. Используя данные п. 1.2 и 1.3, разработать приложение Windows для чтения произвольного сектора заданного логического диска.
- •Текст программы:
- •2.2. С помощью разработанного приложения прочитать системные структуры данных br, резервную копию br, bf_bpb, fsInfo для логического диска j: (usb-флеш-накопитель).
- •2.3. Модифицировать приложение для чтения информации о типе, расположении на диске и содержимом fat, а также содержимом секторов задаваемого кластера диска.
- •Корневой каталог и каталог s1
- •Содержимое кластера 3, каталог s2
2.2. С помощью разработанного приложения прочитать системные структуры данных br, резервную копию br, bf_bpb, fsInfo для логического диска j: (usb-флеш-накопитель).
Зафиксировать полученные данные в отчете, расшифровать их и представить в виде соответствующих таблиц.
Содержимое 0-ой сектора (BR, BF_BPB)

Содержимое 1-ый сектор (BF_BPB и FSInfo)

Содержимое части 2-го сектора (BF_BPB) (заполнен нулями)

Резервная копия BR, находится в 6 секторе, его содержимое аналогично 0 сектору:

Расшифровка данных:
BF_BPB и BR:
|
Смещение |
Размер, байт |
Описание |
Содержимое |
|
0x00 |
3 |
Безусловный переход (jmp) на загрузочный код |
EB5890 |
|
0x03 |
8 |
Идентификатор фирмы-изготовителя |
4D 53 44 4F 53 35 2E 30 (MSDOS5.0) |
|
0x0B |
2 |
Число байт в секторе |
020016=51210 |
|
0x0D |
1 |
Число секторов в кластере |
0816=810 |
|
0x0E |
2 |
Число резервных секторов в резервной области раздела, начиная с первого сектора раздела |
002616=3810 |
|
0x10 |
1 |
Число таблиц (копий) FAT |
0216=210 |
|
0x11 |
2 |
Для FAT12/FAT16 - количество 32-байтных дескрипторов файлов в корневом каталоге; для FAT32 это поле имеет значение 0 |
00 0016=010 |
|
0x13 |
2 |
Общее число секторов в разделе; если данное поле содержит 0, то число секторов задается полем по смещению 0x20 |
00 0016=010 |
|
0x15 |
1 |
Тип носителя. Для жесткого диска имеет значение 0xF8; для гибкого диска (2 стороны, 18 секторов на дорожке) – 0xF0 |
F8-жесткий диск |
|
0x16 |
2 |
Для FAT12/FAT16 это поле содержит количество секторов, занимаемых одной копией FAT; для FAT32 это поле имеет значение 0 |
00 0016=010 |
|
0x18 |
2 |
Число секторов на дорожке (для прерывания 0x13) |
00 3F16=6310 |
|
0x1A |
2 |
Число рабочих поверхностей (для прерывания 0x13) |
00 FF16=25510 |
|
0x1C |
4 |
Число скрытых секторов перед разделом |
00 00 00 3F16=6310 |
|
0x20 |
4 |
Общее число секторов в разделе. Поле используется, если в разделе свыше 65535 секторов, в противном случае поле содержит 0. |
00 3C 3F C016=3 948 48010 |
|
Смещение |
Размер, байт |
Описание |
Содержимое |
|
0x24 |
4 |
Количество секторов, занимаемых одной копией FAT |
00 00 0F 0916=3 84910 |
|
0x28 |
2 |
Номер активной FAT |
00 0016=010 |
|
0x2A |
2 |
Номер версии FAT32: старший байт - номер версии, младший – номер ревизии. В настоящее время используется значение 0:0 |
0016:0016=010:010 |
|
0x2С |
4 |
Номер кластера для первого кластера корневого каталога |
00 00 00 0216=210 |
|
0x30 |
2 |
Номер сектора структуры FSInfo в резервной области логического диска |
00 0116=110 |
|
0x32 |
2 |
Номер сектора (в резервной области логического диска), используемого для хранения резервной копии загрузочного сектора |
00 0616=610 |
|
0x34 |
12 |
Зарезервировано (содержит 0) |
00 00 00 00 00 00 00 00 00 00 00 0016=010 |
FSInfo:
|
Смещение |
Размер, байт |
Описание |
Содержимое |
|
0x000 |
4 |
Значение 0x41615252 – сигнатура, которая служит признаком того, данный сектор содержит структуру FSInfo |
41 61 52 52 |
|
0x004 |
480 |
Зарезервировано (содержит 0) |
010 |
|
0x1E4 |
4 |
Значение 0x61417272 (сигнатура) |
61 41 72 72 |
|
0x1E8 |
4 |
Содержит текущее число свободных кластеров на диске. Если в поле записано значение 0xFFFFFFFF, то число свободных кластеров неизвестно, и его необходимо вычислять |
00 07 32 E116=471 77710 |
|
0x1EC |
4 |
Содержит номер кластера, с которого дисковый драйвер должен начинать поиск свободных кластеров. Если в поле записано значение 0xFFFFFFFF, то поиск свободных кластеров нужно начинать с кластера номер 2 |
00 00 1E 9216=7 82610 |
|
0x1F0 |
12 |
Зарезервировано (содержит 0) |
00 00 00 00 00 00 00 00 00 00 00 0016 |
|
0x1FC |
4 |
Сигнатура 0xAA550000 – признак конца структуры FSInfo |
55 АА 00 0016 |
