В этой части речь пойдет об исследовании дампов информации, также вашему вниманию будет предоставлена практически полностью переделанная программа из прошлых статей. Предыдущий пост: часть 3.
Новая версия программы открывает файл с расширением img (имеджи дисков) и отображает его содержимое в виде блоков. Сразу после запуска вы увидите вот такое окно:
![QBarMap](http://blog.rlab.ru/wp-content/uploads/2017/10/QBarMap04.jpg)
QBarMap
Нажав на «дискету» в левом верхнем углу программы, нужно указать исследуемый файл с расширением «.img». Далее, программа отображает процесс загрузки, который разделит указанный файл на блоки по 512 байт и проверит каждый из них на содержание: состоит ли он только из нулей или в блоке есть хотя бы один байт отличный от нуля.
![Загрузка данных QBarMap](http://blog.rlab.ru/wp-content/uploads/2017/10/QBarMap05.jpg)
Загрузка данных QBarMap
По завершении загрузки покажутся блоки в начале файла. Зеленым цветом обозначены блоки, где есть хотя бы один не нулевой бит, а синим блоки состоящие только из нулей. Когда вы проводите курсором мыши по блокам — появляются их номера в виде всплывающих подсказок.
![QBarMap](http://blog.rlab.ru/wp-content/uploads/2017/10/QBarMap06.jpg)
QBarMap
Справа вместо традиционной полосы прокрутки карты отображается как бы вид сверху на весь файл/диск. Такое решение автор подсмотрел в дизассемблере IDA, где можно по такому виду сверху окинуть взглядом весь загруженный для разбора кода файл.
![Навигация в дизассемблере IDA](http://blog.rlab.ru/wp-content/uploads/2017/10/QBarMap09.png)
Навигация в дизассемблере IDA
Если навести курсор мыши на вид сверху, то будет показан порядковый номер блока на который указывает курсор.
![Номер блока](http://blog.rlab.ru/wp-content/uploads/2017/10/QBarMap07.jpg)
Номер блока
Если кликнуть, то номер блока будет отображен в тулбаре в текущей позиции и карта загрузится с этой позиции. Так же в тулбаре можно ввести номер блока и нажать «решетку», чтобы введенный блок начала участка карты отобразился.
![Навигация QBarMap](http://blog.rlab.ru/wp-content/uploads/2017/10/QBarMap08.jpg)
Навигация QBarMap
Можно еще листать карту при помощи кнопок «прокрутка вперед» и «прокрутка назад» на количество блоков умещающееся в текущий момент на экране.
Немного о конструкции программы. Операции с загруженной картой производятся в отдельном потоке, а в основном потоке идет рисование графики. Таким образом, обработка массива с картой и рисование карты происходят параллельно. В момент загрузки карты, отображается пустой экран. В будущем такое разделение позволит на ходу упаковывать и распаковывать карту в моменты, пока её часть еще рисуется на экране.
Ограничения: большие файлы отображаться либо не будут, либо все будет очень медленно. В будущих оптимизациях программы это ограничение будет преодолено.
В таком виде, программа уже больше подходит, как инструмент для исследования дампов и устройств хранения информации. В следующих сериях подключим к программе возможность рассматривать реальный жесткий диск. Но перед этим нужно оптимизировать формат хранения данных самой карты.
А еще, один и тот же исходный код можно собрать как под Windows, так и под Linux:
![QBarMap в Linux на фоне среды разработки Qt.](http://blog.rlab.ru/wp-content/uploads/2017/10/QBarMap03.jpg)
QBarMap в Linux на фоне среды разработки Qt.
Исходный код программы на GitHub’е: https://github.com/rlabru/QBarMap/tree/master/042_QBarMap
До новых программных встреч. Да хранит ваши данные бэкап!