В этой части речь пойдет об исследовании дампов информации, также вашему вниманию будет предоставлена практически полностью переделанная программа из прошлых статей. Предыдущий пост: часть 3.
Новая версия программы открывает файл с расширением img (имеджи дисков) и отображает его содержимое в виде блоков. Сразу после запуска вы увидите вот такое окно:
Нажав на «дискету» в левом верхнем углу программы, нужно указать исследуемый файл с расширением «.img». Далее, программа отображает процесс загрузки, который разделит указанный файл на блоки по 512 байт и проверит каждый из них на содержание: состоит ли он только из нулей или в блоке есть хотя бы один байт отличный от нуля.
По завершении загрузки покажутся блоки в начале файла. Зеленым цветом обозначены блоки, где есть хотя бы один не нулевой бит, а синим блоки состоящие только из нулей. Когда вы проводите курсором мыши по блокам — появляются их номера в виде всплывающих подсказок.
Справа вместо традиционной полосы прокрутки карты отображается как бы вид сверху на весь файл/диск. Такое решение автор подсмотрел в дизассемблере IDA, где можно по такому виду сверху окинуть взглядом весь загруженный для разбора кода файл.
Если навести курсор мыши на вид сверху, то будет показан порядковый номер блока на который указывает курсор.
Если кликнуть, то номер блока будет отображен в тулбаре в текущей позиции и карта загрузится с этой позиции. Так же в тулбаре можно ввести номер блока и нажать «решетку», чтобы введенный блок начала участка карты отобразился.
Можно еще листать карту при помощи кнопок «прокрутка вперед» и «прокрутка назад» на количество блоков умещающееся в текущий момент на экране.
Немного о конструкции программы. Операции с загруженной картой производятся в отдельном потоке, а в основном потоке идет рисование графики. Таким образом, обработка массива с картой и рисование карты происходят параллельно. В момент загрузки карты, отображается пустой экран. В будущем такое разделение позволит на ходу упаковывать и распаковывать карту в моменты, пока её часть еще рисуется на экране.
Ограничения: большие файлы отображаться либо не будут, либо все будет очень медленно. В будущих оптимизациях программы это ограничение будет преодолено.
В таком виде, программа уже больше подходит, как инструмент для исследования дампов и устройств хранения информации. В следующих сериях подключим к программе возможность рассматривать реальный жесткий диск. Но перед этим нужно оптимизировать формат хранения данных самой карты.
А еще, один и тот же исходный код можно собрать как под Windows, так и под Linux:
Исходный код программы на GitHub’е: https://github.com/rlabru/QBarMap/tree/master/042_QBarMap
До новых программных встреч. Да хранит ваши данные бэкап!