Парсим MBR, таблицу разделов HDD на Qt

Всем привет! Сегодня рассмотрим пример парсинга таблицы разделов в MBR средствами Qt 5.

Рассмотрим структуру MBR

СмещениеРазмер (бт.)Описание
DecHEX
000000446Код загрузчика
4461BE64Таблица разделов
5101FE2Сигнатура MBR

Таблица разделов MBR:

СмещениеРазмер (бт.)Описание
DecHEX
4461BE16Информация о разделе №1
4621CE16Информация о разделе №2
4781DE16Информация о разделе №3
4941EE16Информация о разделе №4

Структура информации о разделе:

СмещениеРазмер (бт.)Описание
DecHEX
0001Признак активности раздела

(80h — раздел является активны,

00h — раздел является неактивным)

1011Начало раздела — головка
2021Начало раздела — сектор (биты 0—5), цилиндр (биты 6, 7)
3031Начало раздела — цилиндр (старшие биты 8, 9 хранятся в байте номера сектора)
4041Код типа раздела
5051Конец раздела — головка
6061Конец раздела — сектор (биты 0—5), цилиндр (биты 6, 7)
7071Конец раздела — цилиндр (старшие биты 8, 9 хранятся в байте номера сектора)
8084Смещение первого сектора раздела

 

 

 

 

 

 

124Количество секторов раздела

Для начала нам необходимо создать класс MBR_Parses

Create MBR_Parser Class

Подготовим заголовочный файл MBR_Parses.h следующим образом:

Опишем работу функции парсинга MBR:

Пофиксил разбор расширенного раздела

Исходный код класса: mbr_parser_source.zip

P.S. Надеюсь вам пригодится моя статья 🙂 

label, , , ,

Добавить комментарий