Руководство по Bless (шестнадцатеричный редактор)

Оглавление

1. Введение

2. Сборка и установка Bless

3. Основы работы с bless

4. Использование Bless

5. Настройка Bless

6. Часто задаваемые вопросы

7. О приложении


Примечание: Данная инструкция по Bless (отличному шестнадцатеричному редактору) написана автором Alexandros Frantzis. Эта инструкция уже доступна онлайн по адресу https://github.com/afrantzis/bless/tree/master/doc/user/C. Но она в формате .docbook (DocBook). DocBook это действительно отличный формат для документов любого рода… до тех пор, пока вы не попытаетесь их прочитать (на самом деле их надо конвертировать перед чтением, подробности об этом в этой статье). Ну и ещё изначально мануал на английском.

Я конвертировал и перевёл для вас этот мануал по Bless, надеюсь, это поможет популяризировать эту отличную программу для редактирования шестнадцатеричных данных.

Manrevision: "1.0"

Date: "Oct 2020"

Связанная статья: Какой программой открыть файлы .docbook (DocBook)

Введение

Bless — это двоичный (шестнадцатеричный) редактор, программа, которая позволяет редактировать файлы как последовательности байтов. Он написан на C# и использует привязки Gtk# для набора инструментов GTK+.

Приложение предоставляет следующие возможности:

  • Эффективное редактирование больших файлов данных.
  • Множественные операции «отмена» и «повтор».
  • Настраиваемые представления данных.
  • Быстрое отображение данных на экране.
  • Много вкладок.
  • Операции быстрого поиска и замены.
  • Таблица преобразования данных.
  • Расширенные возможности копирования/вставки.
  • Поддсветка совпавших образцов выделения в файле.
  • Экспорт в текст и html.
  • Расширяемость с помощью плагинов.

Сборка и установка Bless

Требования для компиляции Bless 0.6.3

Данные требования только для сборки Bless из исходного кода. Вам не нужно о них беспокоиться, если вы устанавливаете данную программу из стандартных репозиториев Linux.

Основная целевая платформа для данной программы — GNU/Linux. Однако все используемые библиотеки являются кроссплатформенными, поэтому приложение должно работать без проблем на всех основных платформах (GNU/Linux, *BSD, Solaris, Win32).

Для сборки и запуска Bless 0.6.3 вам потребуется:

  • GTK+ >= 2.8.x (входит во все современные дистрибутивы GNU/Linux, http://www.gtk.org)
  • среда выполнения mono/.NETи компилятор C# >= 1.1.14 (http://www.mono-project.com)
  • Gtk# привязки >= 2.8 для GTK+ (http://gtk-sharp.sourceforge.net)
  • pkg-config (входит во все современные дистрибутивы GNU/Linux)
  • meson >= 0.46
  • nunit и nunit-console, если вы хотите создавать и запускать тесты
  • xsltproc и таблица стилей docbook, если вы хотите создать HTML-документацию

Разработка ведётся с использованием последних стабильных версий вышеуказанных библиотек. Хотя и с более старыми версиями всё может работать нормально, нет гарантии, что не возникнет проблем.

Инструкция по установке

Если вы скачали bless как пакет для конкретного дистрибутива (например, .rpm, .deb, .tgz), следуйте инструкциям вашего дистрибутива по установке пакетов.

Установка в Debian, Kali Linux, Linux Mint, Ubuntu и их производные:

sudo apt install bless

Установка в Arch Linux, Manjaro, BlackArch и их производные:

sudo pacman -S bless

Если вы загрузили Bless из репозитория git или как пакет с исходным кодом .tar.gz или .tar.bz2, вам нужно будет собрать его и установить вручную. Порядок сборки и установки описан ниже:

Обзор выполняемых действий:

git clone https://github.com/afrantzis/bless
meson setup build # При желании используйте опции -Dopt=val --buildtype=type ...
ninja -C build
ninja -C build install # Опционально

Шаг 1. Получите исходный код

  • Чтобы получить последний источник:

git clone https://github.com/afrantzis/bless

Для сжатого tarball используйте:

tar -xf bless-a.b.c.tar.gz

Шаг 2. Настройте сборку

Войдите в каталог, созданный на предыдущем шаге (bless или bless-a.b.c). Чтобы настроить сборку и убедиться, что в вашей системе есть все необходимые библиотеки, используйте:

meson setup build (-Dopt=val --buildtype=type …)

Используйте опцию --prefix=PREFIX, чтобы задать префикс каталога установки. По умолчанию это префикс «/usr/local».

Вы можете использовать параметр --buildtype=release для создания bless в режиме выпуска. По умолчанию делается сборка в режим отладки.

Шаг 3. Скомпилируйте программу

  • Наберите

ninja -C build

Это создаст bless.exe и необходимые библиотеки в каталоге build/src. Вы также можете использовать команду

ninja -C build test

для запуска некоторых тестов различных компонентов bless. Обратите внимание, что для запуска тестов требуется двоичный файл nunit-console.

Шаг 4: Установите программу (необязательно)

  • Станьте root и введите

ninja -C build install

Основы работы с bless

Запуск bless

Вы можете запустить приложение следующими способами:

  1. Меню приложений: Выберите в меню Программирование/Разработка → Bless Hex Editor.
  2. Командная строка: Чтобы запустить bless из командной строки, введите следующую команду и нажмите Enter:
bless ИМЕНА_ФАЙЛОВ

где ИМЕНА_ФАЙЛОВ — имя одного или нескольких файлов, которые вы хотите открыть. Если вы не укажете файлы, приложение попытается загрузить предыдущий сеанс. Если это не удаётся, приложение откроет для вас пустой файл.

Когда вы запустили Bless

Когда вы запускаете программу Bless, отображается следующее окно.

Окно приложения содержит следующие элементы:

  • Строка меню (Menubar): Меню в строке меню содержат все команды, необходимые для работы с файлами в приложении.
  • Панель инструментов (Toolbar): Предоставляет ярлыки для команд, которые наиболее часто используются при работе с файлами в приложении.
  • Просмотр данных (Data View): Окно просмотра данных содержит несколько вкладок, на которых отображаются данные редактируемых файлов.
  • Таблица преобразования (Conversion Table): В таблице преобразования отображаются байты в текущей позиции файла, преобразованные в различные форматы.
  • Статус бар (Statusbar): В строке состояния отображается информация о текущей активности приложения и информация о текущем файле.
  •  

Использование Bless

Работа с файлами

Bless поддерживает несколько вкладок в окне просмотра данных. Каждая вкладка содержит данные, принадлежащие либо существующему, либо новому файлу. Если данные относятся к существующему файлу, имя файла отображается на метке вкладки. В противном случае вкладка помечается именем в форме «Untitled <N>», где <N> — это число.

Если файл был изменён с момента его последнего сохранения, рядом с его именем отображается звёздочка «*».

В настоящее время приложение может обрабатывать обычные файлы и файлы блочных устройств (например, /dev/hda).

Создание нового файла

Чтобы создать новый файл для редактирования, используйте Файл (File) → Создать (Ctrl-N).

Это действие создаёт новую вкладку с пустым файлом.

Открытие существующего файла

Чтобы открыть существующий файл для редактирования, используйте Файл → Открыть (Ctrl-O).

Вы также можете открыть один или несколько существующих файлов, перетащив их в окно приложения.

Это действие обычно создаёт новую вкладку, содержащую открытый файл. Исключением является случай, когда вкладка, которая была активна перед открытием нового файла, содержала пустой файл. В этом случае старая вкладка заменяется новой.

Сохранение файла

  • Чтобы сохранить файл, убедитесь, что вкладка, на которой он находится, активна, и используйте пункты меню Файл → Сохранить (Ctrl-S).
  • Чтобы сохранить файл под другим именем или в другом месте, убедитесь, что вкладка, на которой он находится, активна, и используйте пункты меню «Файл» → «Сохранить как» (Shift-Ctrl-S).

Если данные на вкладке не связаны с существующим файлом (например, если это новый файл), действие «Сохранить» фактически выполняет действие «Сохранить как».

Закрытие файла

Чтобы закрыть файл, убедитесь, что вкладка, на которой он находится, активна, и используйте «Файл» → «Закрыть» (Ctrl-W).

Вы также можете закрыть файл, щёлкнув значок закрытия на его ярлыке вкладки:

Примечание: если файл был изменён с момента предыдущего сохранения, вам будет предложено сохранить его.

Смена активного файла

Вы можете переключаться между вкладками, есть несколько способов выбрать вкладку, которая должна стать активной, то есть файл которой должен отображаться в области просмотра:

  • Щёлкнув ярлык вкладки, на которую вы хотите переключиться.
  • Нажав Alt+<N>, где <N> - номер вкладки, на которую вы хотите переключиться. Этот метод работает для первых девяти вкладок. Например, чтобы переключиться на вторую вкладку, вы должны нажать Alt+2.
  • Нажав Alt+стрелка влево или Alt+стрелка вправо, вы можете переключиться на вкладку сразу слева или справа от текущей активной вкладки.

Основы просмотра данных

Просмотр данных (Data View) — это часть приложения, которая отображает данные редактируемых вами файлов и позволяет вам управлять ими. Она состоит из (возможно) множества вкладок, каждая из которых соответствует редактируемому вами файлу. Каждая вкладка содержит области, в которых отображаются данные файла в различных форматах. Область может быть одного из следующих типов:

  • Область смещения (на скриншоте ниже эта область помечена цифрой 1): отображает смещение первого байта в указанной строке.
  • Область разделителя (2): отображает вертикальную разделительную линию.
  • Шестнадцатеричная область (3): отображение данных в шестнадцатеричной системе счисления.
  • Десятичная область: отображение данных в десятичной системе счисления.
  • Восьмеричная область: отображение данных в восьмеричной системе счисления.
  • Двоичная область: отображение данных в двоичной системе счисления.
  • Область Ascii (4): отображает данные в виде текста Ascii.

Типы и расположение областей, содержащихся на каждой вкладке, можно настроить с помощью файлов макета. Смотрите раздел Файлы макета для получения дополнительной информации о том, как писать и использовать файлы макета.

Выбор активной области

В любой момент только одна из областей принимает и обрабатывает события редактирования. Можно сказать, что в этой области находится фокус. Все области, кроме смещения и разделителя, могут быть в фокусе.

Курсор в выделенной области состоит из горизонтальной линии под текущим байтом и вертикальной линии непосредственно перед активной цифрой текущего байта. В отличие от этого курсор в несфокусированной области состоит только из горизонтальной линии под текущим байтом.

Изменить область, в которой находится фокус, можно двумя способами:

  • Использование клавиши TAB переключает фокус между доступными областями.
  • Нажатие или отпускание левой кнопки мыши в области или перемещение с нажатой левой кнопкой мыши в области даёт фокус на этой области. Если область не может принять фокус (например, это область разделителя), фокус останется неизменным.

Прокрутка

Если файл, который вы редактируете, достаточно велик, в окне просмотра данных будет виден только небольшой диапазон его данных. Размер видимых данных называется страницей и количество данных в ней может меняться при изменении размера окна приложения.

Чтобы изменить видимый диапазон данных файла, вы должны прокрутить окно просмотра данных. Вы можете прокручивать представление данных двумя способами:

  • Использование полосы прокрутки, расположенной справа от окна просмотра данных. Полоса прокрутки видна, только если файл слишком велик для размещения на одной странице.
  • Используя колёсико мыши, если оно есть.

Прокрутка окна просмотра данных не меняет положение курсора.

Редактирование файла

Основные операции редактирования

Изменение текущей позиции курсора

Вы можете перемещать курсор двумя способами:

  • С использованием клавиатуры
  • Нажатие клавиши со стрелкой вверх перемещает курсор к байту чуть выше текущего.
  • Нажатие клавиши со стрелкой вниз перемещает курсор к байту чуть ниже текущего.
  • Нажатие клавиши со стрелкой влево перемещает курсор к предыдущей цифре текущего байта. Если курсор находился на первой цифре байта, он перемещается на последнюю цифру предыдущего байта.
  • Нажатие клавиши со стрелкой вправо перемещает курсор к следующей цифре текущего байта. Если курсор был на последней цифре байта, он перемещается на первую цифру следующего байта.
  • Нажатие клавиши Page Up перемещает курсор к байту, который находится на одну страницу перед текущей позицией.
  • Нажатие клавиши Page Down перемещает курсор к байту, который находится на одну страницу после текущей позиции.
  • Нажатие клавиши Home перемещает курсор к первому байту в файле.
  • Нажатие клавиши End перемещает курсор на один байт после последнего байта в файле.
  • С помощью мыши
  • Щелчок по цифре байта перемещает курсор к этому байту и цифре.

Примечание: Если новая позиция курсора находится за пределами текущей видимой страницы данных, представление прокручивается автоматически, так что новая позиция курсора становится видимой.

Перемещение курсора в определённую позицию

Чтобы получить доступ к панели «Перейти к смещению», используйте: Search → Go to Offset («Поиск» → «Перейти к смещению».) (Ctrl-G).

Чтобы переместить курсор в определённую позицию в файле:

  1. Введите смещение в текстовом поле Offset («Смещение») (в желаемом числовом формате). Если типизированное смещение начинается с «0x», оно считается шестнадцатеричным, если оно начинается с «0», оно считается восьмеричным, иначе оно считается десятичным.
  2. Нажмите кнопку Go to Offset.

Выбор диапазона данных

Есть три способа выбрать диапазон данных из редактируемого файла:

  • Использование клавиатуры
  • Поместите курсор на один конец диапазона, который вы хотите выбрать.
  • Удерживая нажатой клавишу Shift, переместите курсор на другой конец диапазона с помощью клавиатуры. При перемещении курсора текущий выбранный диапазон данных будет выделен.
  • Отпустите клавишу Shift.
  • С помощью мыши
  • Поместите курсор на один конец диапазона, который вы хотите выбрать.
  • Удерживая левую кнопку мыши, переместите курсор на другой конец диапазона с помощью мыши. При перемещении курсора текущий выбранный диапазон данных будет выделен.
  • Отпустите левую кнопку мыши.
  • … в качестве альтернативы, удерживая нажатой клавишу Shift, поместите указатель мыши на другой конец выделения и щёлкните левой кнопкой мыши.
  • Использование панели выбора диапазона

Чтобы получить доступ к панели выбора диапазона, используйте: Edit → Select Range (Правка → Выбрать диапазон) (Ctrl-Shift-R).

Чтобы выбрать диапазон:

  1. Введите начальное смещение в текстовый ввод от (в желаемом числовом формате). Если типизированное смещение начинается с «0x», оно считается шестнадцатеричным, если оно начинается с «0», оно считается восьмеричным, иначе оно считается десятичным.
  2. Введите конечное смещение в текстовое поле ввода (в желаемом числовом формате). Если типизированное смещение начинается с «0x», оно считается шестнадцатеричным, если оно начинается с «0», оно считается восьмеричным, иначе оно считается десятичным.
    Вместо указания абсолютного конечного смещения вы можете указать длину выделения. Для этого введите длину в текстовую запись, добавив к ней либо «+», либо «-». Знаки «+» или «-» определяют направление выделения: «+» означает выбор в сторону конца файла, а «-» означает выбор в направлении начала. Выбранный диапазон всегда содержит начальное смещение.

Выбор диапазона данных имеет ещё один полезный эффект: все шаблоны, соответствующие выбранным данным в файле, выделяются, что позволяет быстро найти или выделить шаблоны. Цвет выделения можно изменить с помощью файлов макета (смотрите Файлы макета). Эту функцию можно отключить в диалоговом окне «Настройки» (смотрите «Общие настройки»).

Примечание: Шаблоны, соответствующие выбранным данным, выделяются только в том случае, если размер выбранных данных составляет не более 1024 байтов.

Переключение между режимами редактирования Перезаписи и Вставки

Нажав клавишу Insert на клавиатуре или щёлкнув строку состояния режима редактирования, вы можете изменить режим редактирования, в котором приложение находится в данный момент. Режим редактирования определяет, что происходит, когда вы добавляете новые данные в файл. Доступны два режима:

  • Режим вставки: Новые данные вставляются в текущую позицию курсора. Bless автоматически освобождает место для новых данных.
  • Режим перезаписи: Новые данные перезаписывают старые данные, начиная с текущей позиции курсора.

Текущий режим редактирования отображается справа в строке состояния (нижний правый угол).

Изменение основания чисел (системы счисления) в строке состояния

Вы можете изменить систему счисления информации, отображаемой в строке состояния (текущее смещение, текущий выбор). При нажатии на информацию о смещении или выборе в строке состояния выполняется переключение между шестнадцатеричным, десятичным и восьмеричным основанием чисел. Вы можете определить текущее основание чисел, проверив префикс отображаемых номеров. Префикс «0x» обозначает шестнадцатеричный, префикс «0» обозначает восьмеричный, а без префикса обозначает десятичный.

Изменение данных

Вы можете напрямую изменять данные в файле с помощью клавиатуры:

Вставка нового байта в определённую позицию

  • Убедитесь, что вы находитесь в режиме вставки.
  • Переместите курсор к первой цифре желаемой позиции.
  • Нажимайте клавиши, соответствующие цифрам желаемого байта. Каждое нажатие клавиши автоматически перемещает курсор на одну позицию вправо.

Изменение существующего байта

  • Убедитесь, что вы находитесь в режиме перезаписи (требуется, только если вы хотите изменить первую цифру байта).
  • Переместите курсор в желаемую позицию байта/цифры.
  • Нажимайте клавиши, соответствующие цифрам желаемого байта. Каждое нажатие клавиши автоматически перемещает курсор на одну позицию вправо.

Добавление данных в конец файла

  • Переместите курсор в позицию сразу после последнего байта в файле.
  • Нажимайте клавиши, соответствующие цифрам желаемого байта. Каждое нажатие клавиши автоматически перемещает курсор на одну позицию вправо.

Примечание: Каждая область принимает только определённые цифры (например, шестнадцатеричная область принимает только 0-9 и A-F). Если клавиша (представляющая цифру) нажата в области, которая её не принимает, нажатие клавиши игнорируется.

Операции с буфером обмена

Bless имеет продвинутую систему для обработки операций с буфером обмена.

Копирование и вырезание

Чтобы скопировать выбранные данные в буфер обмена, используйте: Edit → Copy («Правка → Копировать») (Ctrl-C).

Чтобы вырезать выбранные данные из файла и скопировать их в буфер обмена, используйте: Edit → Cut («Правка → Вырезать») (Ctrl-X).

При копировании или вырезании данных эти данные также становятся доступными для Bless и других приложений. Bless может предлагать свои данные другим приложениям в двух основных форматах:

Необработанные байты

Bless может предлагать выбранные данные в виде необработанных байтов приложениям, которые могут их обрабатывать, например другим шестнадцатеричным редакторам. Это формат, который приложение использует при взаимодействии с самим собой (например, когда вы копируете из вкладки и вставляете в другую).

Строка UTF-8

Bless может предложить строковое представление выбранных данных в различных числовых базах или тексте UTF-8. База чисел определяется типом области, которая находится в фокусе в конце действия выбора для вырезанных/скопированных данных. Например, если эта область является шестнадцатеричной, то предлагаемая строка будет содержать шестнадцатеричное строковое представление выбранных данных. Если конечной областью является текстовая область, то предлагаемая строка будет содержать текст UTF-8, представленный выбранными данными (если это возможно).

Вставка

Чтобы вставить данные из буфера обмена в текущую позицию курсора, используйте: Edit → Paste («Правка → Вставить») (Ctrl-V).

Значение режима перезаписи/вставки влияет на способ выполнения операций вставки. Если выбран режим «Вставка», вставленные данные вставляются в текущую позицию курсора. Если установлен режим «Перезаписать», вставленные данные перезаписывают данные, начиная с позиции курсора и далее, если необходимо.

Вставленные данные могут происходить из самого приложения или другого приложения. Приложение может принимать данные в двух форматах:

Необработанные байты

Это формат, который Bless использует при взаимодействии с самим собой (например, когда вы копируете из вкладки и вставляете в другую). Внешние приложения, которые предлагают необработанные байты, обычно являются другими шестнадцатеричными редакторами.

Строка UTF-8

Bless может принимать данные в виде строки UTF-8 (например, из текстового редактора). Она пытается проанализировать данные и преобразовать их в необработанные байты в соответствии с типом области, которая в данный момент находится в фокусе. Например, если фокус находится в восьмеричной области, Bless попытается проанализировать строку как последовательность байтов, представленную в восьмеричном формате. В случае сбоя синтаксического анализа данные будут вставлены в виде текста UTF-8 (как если бы они были вставлены в текстовую область).

Копирование смещения

Чтобы скопировать смещение текущей позиции курсора или текущего выбранного диапазона, используйте: Edit → Copy Offset(s) (Ctrl-Shift-C). Эта операция также доступна во всплывающем меню при щелчке правой кнопкой мыши в окне просмотра данных.

Если есть активный выбор, эта операция копирует начальное и конечное смещения выделения в буфер обмена, разделённые запятыми. В противном случае в буфер обмена копируется только смещение позиции курсора.

Основание чисел (система счисления), используемая для смещений, определяется настройками плагина, которые можно установить в диалоговом окне настроек. Смотрите Файлы макета.


Отмена/Повтор

Чтобы отменить предыдущие действия, используйте: Edit → Undo («Правка → Отменить») (Ctrl-Z).

Чтобы повторить ранее отменённые действия, используйте: Edit → Redo («Правка → Вернуть») (Shift-Ctrl-Z).

Поиск и замена в файлах

Поиск в файлах

Для доступа к панели поиска используйте Search → Find (Ctrl-F).

Чтобы найти последовательность байтов:

  1. Введите последовательность в текстовое поле «Search for» (в желаемом формате).
  2. Выберите формат набранной последовательности в выпадающем меню «as».
  3. Нажмите кнопку Find Next («Найти далее») или Find Previous («Найти предыдущий»). Если совпадение найдено, оно будет выделено в окне просмотра данных, в противном случае будет показано предупреждение о том, что совпадение не найдено.

Чтобы скрыть панель поиска, нажмите клавишу Escape, когда панель находится в фокусе, или нажмите кнопку закрытия, расположенную с правой стороны панели.

Вы можете использовать команды Search → Find Next (F3) и Search → Find Previous (Shift-F3) для поиска, не открывая повторно панель поиска.

Замена в файлах

Чтобы получить доступ к панели замены, используйте Search → Replace («Поиск» → «Заменить») (Ctrl-R).

Чтобы заменить последовательность байтов другой последовательностью байтов:

  1. Введите искомую последовательность в поле текстовое Search for («Искать») (в желаемом формате).
  2. Выберите формат искомой последовательности в первом выпадающем меню as.
  3. Введите последовательность для замены в текстовое поле Replace with («Заменить на») (в желаемом формате).
  4. Выберите формат последовательности для замены во втором выпадающем меню as.
  5. Нажмите кнопку Replace («Заменить»), чтобы заменить текущее совпадение, Replace All («Заменить все»), чтобы заменить все совпадения в файле, или кнопку Find («Найти»), чтобы пропустить текущее совпадение и перейти к следующему совпадению. Если совпадение найдено, оно будет выделено в окне просмотра данных, в противном случае будет показано предупреждение о том, что совпадение не найдено.

Чтобы скрыть панель замены, нажмите клавишу Escape, когда панель находится в фокусе, или нажмите кнопку закрытия, расположенную с правой стороны панели.

Подсказка: Чтобы удалить совпавшие поисковые последовательности, текстовое поле Replace with («Заменить на») оставьте полностью пустым.

Экспорт данных

Bless имеет продвинутую и настраиваемую систему экспорта. В настоящее время программа может экспортировать данные в текстовые или html-файлы.

Шаблоны экспорта

Экспорт основан на шаблоне экспорта. Шаблон состоит из строковых литералов и специальных командных строк. Литералы печатаются в выходном файле как есть, тогда как командные строки говорят экспортёру что-то делать. Строки команд заключаются в символы «%» и определяют команду и её параметры. Команда указывается прописной буквой, а параметры — строчными буквами. За каждой буквой (соответствует ли она команде или параметру) может следовать аргумент, заключенный в двойные кавычки «"».

Команда

Описание

Параметры [по умолчанию]

Export (E)

Записывает фактические данные.

E: количество байтов для экспорта [«1»]

p: префикс для записи перед каждым байтом [«»]

s: суффикс для записи после каждого байта [«»]

x: разделитель между байтами [«»]

e: строка для использования для непечатаемых байтов (из-за выравнивания) [«»]

t: тип для экспорта байта(ов) в (смотрите ниже) [«H»]

Ignore (I)

Игнорировать данные.

I: количество игнорируемых байтов [«1»]

Offset (O)

Записывает текущее смещение.

O: количество цифр для записи смещения [«8»]

t: тип для записи смещения (смотрите ниже) [«H»]

 

Тип экспорта

Описание

H

Шестнадцатеричный с прописными буквами

h

Шестнадцатеричный с символами нижнего регистра

D

Десятичный

O

Восьмеричный

B

Двоичный

A

Ascii

Командные строки могут быть сгруппированы в квадратные скобки '[‘,’]'.. После выполнения такой группы команд указатель, который отслеживает следующий байт для экспорта, сбрасывается в положение, которое он занимал непосредственно перед выполнением группы.

Некоторые образцы шаблонов и их вывод сделают всё намного яснее:

%O"4"%: %E"4"p"0x"x" "% - %E"4"p"0x"x" "%\n

Вывод:

0000: 0x00 0x01 0x02 0x03 - 0x04 0x05 0x06 0x07
0008: 0x08 0x09 0x0a 0x0b - 0x0c 0x0d 0x0e 0x0f
0010: 0x10 0x11 0x12 0x13 - 0x14 0x15 0x16 0x17
0018: 0x18 0x19 0x10 0x1a - 0x1b 0x1c 0x1d 0x1e
0020: 0x1f                - 

Ещё один образец:

[%E"2"% %I"2"% %E"2"% %I"2"%] %I"2"% %E"2"% %I"2"% %E"2"%\n

Вывод:

0001  0405   0203  0607
0809  0c0d   0a0b  0e0f
1011  1415   1213  1617
1819  1b1c   101a  1d1e
1f

Диалог экспорта

Диалог экспорта:

  • Export to file (Экспорт в файл): Имя файла, в который нужно экспортировать данные.
  • Export type (Тип экспорта): Тип файла для экспорта. Новые типы могут быть добавлены с помощью плагинов.
  • Export pattern (Шаблон экспорта): Шаблон для использования при экспорте файла (смотрите раздел Шаблоны экспорта). Используйте кнопки сохранения и удаления рядом с записью Export pattern для управления сохранёнными шаблонами.
  • Range (Диапазон): Диапазон данных для экспорта.

Выполнение побитовых операций

Для доступа к панели побитовых операций используйте Tools → Bitwise Operations (Ctrl-B) (Инструменты → Побитовые операции).

Чтобы применить побитовую операцию к диапазону данных:

  1. Выберите диапазон, к которому будет применена операция (смотрите раздел Выбор диапазона данных). Если диапазон не выбран, операция будет выполняться с текущим смещением. Выбранный диапазон отображается в крайнем левом углу полосы. Щелчок по отображаемому диапазону циклически переключает основание числа, используемое для его отображения (шестнадцатеричное, восьмеричное, десятичное).
  2. Выберите нужную операцию из списка операций. Доступные операции: AND, OR, XOR и NOT.
  3. Введите данные, которые будут использоваться для операции, в текстовое поле ввода данных (если применимо).
  4. Выберите тип данных из списка типов данных.
  5. Нажмите кнопку Execute («Выполнить»), чтобы выполнить операцию.

Настройка Bless

Файлы конфигурации

Bless хранит свои файлы конфигурации в каталоге $XDG_CONFIG_HOME/bless (обычно в $HOME/.config/bless в системах на основе UNIX и C:\Documents and Settings\User Name\Application Data\bless в системах MS Windows) в соответствии со спецификацией XDG. Этот каталог содержит следующие файлы и каталоги:

  • export_patterns: Содержит список сохранённых шаблонов экспорта.
  • history.xml: Сохраняет список недавно открытых файлов.
  • last.session: Сохраняет состояние приложения при последнем закрытии. Сюда входят открытые файлы, смещение файла и смещение курсора в каждом файле, активный файл, размеры окна и т. д.
  • Preferences.xml: Сохраняет настройки пользователя.
  • layouts/: Этот каталог содержит файлы описания макета для каждого пользователя. Смотрите раздел Файлы макета.

Параметры

Вы можете редактировать пользовательские настройки в диалоговом окне Preferences («Параметры»). Доступ к нему можно получить, выбрав Edit → Preferences… (Параметры).

General (Общие) настройки

Default Layout (Макет по умолчанию)

  • Layout File (Файл макета): Файл макета для использования при открытии новой вкладки. Если оставить его пустым, будет использоваться значение по умолчанию.
  • Use layout of currently active tab if any (Использовать макет текущей активной вкладки, если есть): Если этот флажок установлен, приложение будет пытаться использовать макет текущей активной вкладки для новых вкладок. Если нет открытых вкладок, приложение будет использовать файл из настройки Layout File («Файл макета»).

Misc (Прочее)

  • Default edit mode (Режим редактирования по умолчанию): Выбор режима (Вставить или Перезаписать), который будет использоваться по умолчанию для новых вкладок
  • Temporary Directory (Временный каталог): Каталог для сохранения временных файлов (оставьте поле пустым, чтобы использовать значение по умолчанию, например, /tmp). Когда файл сохраняется, он сохраняется в этом каталоге, а затем перемещается в его окончательную позицию.

Настройки Undo (Отмены)

Undo Limit (Лимит действий отмены)

  • Limit to X actions (Ограничить до X действий): Ограничить количество действий, которые можно отменить, до X действий.
  • Unlimited Undo (Неограниченная отмена): Не ограничивать количество действий, которые можно отменить.

Keep Undo History After Save (Сохранять историю отмен после сохранения)

  • Always (Всегда): Всегда сохранять историю отмен после сохранения файла.

Предупреждение: При работе с большими объёмами данных отмены, этот параметр может заполнить всю память и вызвать серьёзное снижение производительности системы.

  • What fits in main memory (Что умещается в основной памяти): Сохраняйте только ту часть истории, которая умещается в основной памяти (RAM).
  • Never (Никогда): Никогда не сохранять историю отмен после сохранения файла.

Настройки Session (Сеанса)

  • Load previous session on startup (Загрузить предыдущий сеанс при запуске): Следует ли загружать предыдущий сеанс (состояние Bless на момент последнего выхода) при запуске. Состояние включает в себя все открытые файлы, вкладку в фокусе, область в каждом файле, положение курсора в каждом файле и геометрию окна.
  • Ask before loading session (Спросите перед загрузкой сеанса): Спросить перед загрузкой сеанса при запуске.
  • Remember cursor position (Запомните позицию курсора): Должно ли приложение запоминать и восстанавливать положение курсора в каждом из загруженных файлов при загрузке предыдущего сеанса.
  • Remember window geometry (Помнить геометрию окна): Должно ли приложение запоминать и восстанавливать размер окна при загрузке предыдущего сеанса.

Файлы макета

Способ представления данных в приложении можно легко настроить. Конфигурация выполняется с помощью файлов описания макета. В настоящее время нет возможности графически редактировать макеты, но графический редактор макетов планируется в последующих версиях.

Выбор макета

Приложение ищет файлы описания макета в каталоге $XDG_CONFIG_HOME/bless/layouts (обычно $HOME/.config/bless/layouts). Вы можете предварительно просмотреть и выбрать доступные макеты в диалоговом окне выбора макета, доступ к которому можно получить, выбрав View → Layouts («Просмотр» → «Макеты»).

Создание файлов макета

Файлы описания макета представляют собой файлы XML, оканчивающиеся суффиксом .layout. Они состоят из тега <layout>, который содержит серию тегов <area>, описывающих каждую область в макете. Тег <area> принимает один атрибут type, который определяет тип области. Допустимые значения для type:

Тип

Описание

hexadecimal

Отображает данные в шестнадцатеричном формате.

decimal

Отображает данные в десятичном формате.

octal

Отображает данные в восьмеричном формате.

binary

Отображает данные в двоичном формате.

ascii

Отображает данные в формате ascii.

offset

Отображает смещение данных.

separator

Вертикальная линия, которая визуально разделяет области.

Например, следующий простой файл макета:

<layout>
	<area type="offset"></area> 
	<area type="hexadecimal"></area>
	<area type="offset"></area>
	<area type="separator"></area>
	<area type="ascii"></area>
</layout>

создаёт стандартное представление offset-hex-ascii с цветами по умолчанию:

В каждой области могут быть дополнительные опции отображения данных. Некоторые опции доступны для всех областей, тогда как другие зависят от области. Опции, которые не определены явно, принимают значения по умолчанию. Кроме того, если опция указана для области, которая её не поддерживает, она просто игнорируется.

Опция

Значения

Описание

Области

display

смотрите ниже

Шрифты и цвета, которые следует использовать для отображения.

все

case

upper|lower

Отображение шестнадцатеричных значений в нижнем или верхнем регистре.

offset, hexadecimal

grouping

#int

Количество байтов, которые должны быть сгруппированы в каждом столбце.

hexadecimal, decimal, octal, binary

bpr

#int

Количество байтов в каждой строке в области (смотрите ниже для получения дополнительной информации)

hexadecimal, decimal, octal, binary, ascii

bytes

#int

Количество байтов, которые будут использоваться для отображения смещений (по умолчанию 4)

offset

Опция bpr

Параметр <bpr> (байтов на строку) устанавливает (максимальное) количество байтов, которое может иметь каждая строка в области. Если он не указан, количество байтов в каждой строке изменяется динамически, чтобы заполнить всю доступную ширину. Если он указан хотя бы в одной области макета, все области макета соответствуют указанному ограничению. В случае конфликта, например, когда две области указывают разные bpr, используется наименьшее значение. Наконец, если существует конфликт между bpr и значениями группировки, используется самое высокое значение, которое соответствует группировке и ниже bpr (например, если bpr=5 и grouping=2, байтов на строку будет 4).

Опция display

Параметр <display> — самый сложный из всех и заслуживает дополнительных пояснений.

Bless различает чётные и нечётные строки, а также чётные и нечётные столбцы. Вы можете выбрать, как раскрасить каждый из вышеперечисленных элементов, создав таким образом визуальный результат, соответствующий вашим потребностям. Это достигается с помощью тега <display>. Обратите внимание, что первая строка и столбец пронумерованы как 0 и поэтому считаются чётными.

Тег <display> может содержать тег <font>, который устанавливает семейство и размер шрифта, которые будут использоваться для отображения данных в области (например, «Courier 10»). Шрифт должен быть моноширинным, иначе данные в области будут отображаться неправильно. Также рекомендуется использовать шрифты одинакового размера во всех областях, чтобы данные были правильно выровнены.

Тег <display> может также содержать теги <evenrow> и <oddrow>, которые описывают, как будут выглядеть чётные и нечётные строки. Каждый из тегов <evenrow> и <oddrow> может содержать теги <evencolumn>, <oddcolumn>, <selectedcolumn> и <patternmatchcolumn>. Первые два описывают внешний вид соответствующих столбцов в нормальных условиях (без выделения). Тег <selectedcolumn> описывает внешний вид выбранных байтов, а тег <patternmatchcolumn> - внешний вид выделенных байтов, которые соответствуют выбранным байтам (смотрите раздел Выбор диапазона данных). Описание всего вышеперечисленного достигается с помощью тегов <foreground> и <background>, которые определяют используемые цвета переднего плана и фона.

Цвета можно указывать по имени (например, тёмно-синий) или по триаде RGB (например, #ff004e).

Схема — иерархия тегов:

Пример:

<layout> 
    <area type="offset"> 
        <display> 
            <evenrow> 
                <evencolumn> 
                    <foreground>dark red</foreground> 
                </evencolumn> 
            </evenrow> 
            <oddrow> 
                <evencolumn> 
                    <foreground>dark red</foreground> 
                </evencolumn> 
            </oddrow> 
        </display> 
    </area> 
    <area type="separator"> 
        <display> 
            <evenrow> 
                <evencolumn> 
                    <foreground>dark green</foreground> 
                    <background>white</background> 
                </evencolumn> 
            </evenrow> 
        </display> 
    </area> 
    <area type="hexadecimal"> 
        <grouping>2</grouping> 
        <case>upper</case> 
        <display> 
            <evenrow> 
                <selectedcolumn> 
                    <foreground>white</foreground> 
                    <background>#8faec8</background> 
                </selectedcolumn> 
            </evenrow> 
            <oddrow> 
                <evencolumn> 
                    <background>#eeeeee</background> 
                </evencolumn> 
                <oddcolumn> 
                    <background>#eeeeee</background> 
                </oddcolumn> 
                <selectedcolumn> 
                    <foreground>white</foreground> 
                    <background>#7b96ac</background> 
                </selectedcolumn> 
            </oddrow> 
        </display> 
    </area> 
    <area type="separator"> 
        <display> 
            <evenrow> 
                <evencolumn> 
                    <foreground>dark green</foreground> 
                    <background>white</background> 
                </evencolumn> 
            </evenrow> 
        </display> 
    </area> 
    <area type="decimal"> </area> 
    <area type="separator"> 
        <display> 
            <evenrow> 
                <evencolumn> 
                    <foreground>dark green</foreground> 
                    <background>white</background> 
                </evencolumn> 
            </evenrow> 
        </display> 
    </area> 
    <area type="binary"> </area> 
</layout>

Результат:

Примечание: Не все опции шрифтов используются во всех областях. В шестнадцатеричной, десятичной, восьмеричной и двоичной областях используются все параметры. Области ascii, смещения и разделителя не используют тег <oddcolumn>.

Примечание: Цвета */evencolumn/background считаются основными цветами фона для соответствующей строки. Они используются для закрашивания всех частей строки, которые не окрашиваются иным образом (например, пространство между столбцами). Цвет evenrow/evencolumn/background также считается основным цветом фона области и используется для закрашивания неиспользуемых частей области.

Расширение функциональности с помощью плагинов

Начиная с версии 0.5.0 приложение может быть расширено с помощью плагинов. Внутренне приложение использует плагины почти для всего своего графического интерфейса. В настоящее время плагины могут расширять следующие части:

  • Графический интерфейс.
  • Области, отображаемые внутри Data Views.
  • Data Views

Часто задаваемые вопросы

Философские вопросы

В: Почему вы начали Bless? Разве не хватает шестнадцатеричных редакторов?

О: Недостаточно бесплатных (как речь) графических шестнадцатеричных редакторов. Двумя основными из них являются khexedit и ghex. Khexedit не обновлялся годами, а ghex развивается очень медленно.

В: Итак, почему вы не участвовали в одном из существующих проектов?

О: Я хотел опробовать комбинацию mono/Gtk# для графических приложений, но такого проекта не существовало.

В: Что за имя Bless?

A: Это игра слов со словом hex. Hex также означает проклятие, а bless(ing) — противоположность проклятия.

Технические вопросы

В: Как я могу получить последний исходный код Bless?

О: Bless теперь использует Git в качестве системы контроля версий. После установки Git в своей системе используйте следующую команду, чтобы загрузить последнюю версию Bless в каталог bless (это может занять некоторое время):

git clone https://github.com/afrantzis/bless

Если вы уже скачали предыдущую версию (используя указанную выше команду, а не архивы исходного кода) и хотите обновить её до последней версии, используйте:

git pull

из каталога, содержащего предыдущую версию.

В: Мне не нравится, как Bless отображает данные. Могу я его изменить?

A: Да! Bless очень настраиваемый. Смотрите раздел Файлы макета

В: Я пытаюсь сохранить большой файл (под тем же именем), но при сохранении Bless жалуется, что не осталось места! Я был уверен, что мне хватит места! Что происходит?

О: Чтобы иметь возможность сохранить файл под тем же именем (команда «Файл → Сохранить»), вам необходимо (временно) иметь достаточно места на диске для хранения оригинального и нового файла. Это происходит потому, что новый файл создаётся во временном каталоге файлов (например, /tmp, смотрите раздел Общие настройки), а затем перемещается в его правильное положение. Например, если у вас есть файл размером 20 МБ и вы отредактируете его так, чтобы он стал 21 МБ, а новый файл должен быть сохранен на том же устройстве хранения, что и /tmp, вам необходимо иметь 20 + 21 = 41 МБ свободного места на этом устройстве хранения, чтобы получилось его сохранить. После успешного сохранения исходный файл удаляется, в данном случае освобождая 20 МБ. Хотя это может быть проблемой (когда на диске недостаточно места), это также можно рассматривать как меру безопасности на случай, если при сохранении что-то пойдёт не так.

Заметным исключением из вышесказанного является случай, когда размер сохраняемого файла не был изменён. В этом случае файл сохраняется в своём исходном месте.

В: Данные в областях данных отображаются неправильно! Что случилось?

О: В некоторых системах данные в областях данных искажены. Это проблема подсистемы шрифтов. Что происходит, так это то, что подсистема шрифтов сообщает Bless о ширине шрифта, отличной от той, которая фактически используется на экране. Эта ошибка должна быть исправлена в текущих версиях Pango.

В любом случае ошибка теперь неактуальна: начиная с версии 0.5.0 приложение использует другой способ измерения ширины шрифта. Кроме того, временный обходной путь с предпочтением FontWidthFix, представленный в 0.4.1, теперь отключён. Если у вас всё ещё возникают такие проблемы с версиями >= 0.5.0, отправьте отчёт об ошибке.

В: Где Bless хранит файлы конфигурации?

A: Смотрите раздел Файлы конфигурации

О приложении

Приложение было написано Александросом Францисом (alf82 at freemail dot gr). Чтобы найти дополнительную информацию о приложении, посетите веб-страницу Bless.

Эта программа распространяется в соответствии с условиями Стандартной общественной лицензии GNU, опубликованной Free Software Foundation; либо версии 2 Лицензии, либо (по вашему выбору) любой более поздней версии. Копию этой лицензии можно найти по этой ссылке или в файле COPYING, включённом в исходный код этой программы.

Рекомендуется Вам:

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

Ваш адрес email не будет опубликован.