Вопрос или проблема
Предположим, у меня есть двоичный файл под названием file.dat, который содержит данные “James is a good boy”.
Теперь скажем, что я хочу вставить данные ” not ” на 8-й индекс file.dat, чтобы file.dat
стал “James is not a good boy”. Как мне это сделать с помощью шестнадцатеричного редактора в ubuntu?
Установите Bless:
sudo apt update
sudo apt install bless
Bless hex editor (шестнадцатеричный редактор) — это кроссплатформенное приложение, доступное для основных операционных систем, таких как Linux, Microsoft Windows, MacOS.
Можно открывать любое количество окон, используя вкладку.
Вы можете быстро найти какой-либо контент и заменить его.
В Bless Hex editor (шестнадцатеричном редакторе) есть расширенный уровень функции копирования и вставки.
Вы можете использовать Bless как лучший шестнадцатеричный редактор для редактирования большого количества файлов данных и блочных устройств.
Одна из лучших частей этого приложения заключается в том, что вы можете получить больше функций по своему желанию, установив необходимые плагины.
По умолчанию вы можете экспортировать данные в формате .txt и .html, но для других форматов вы можете использовать плагины.
Если данные действительно были видны в файле, как вы указали, вы в конечном итоге могли бы отредактировать их с помощью редактора vi или sed и просто внести изменения, чтобы добавить “not”.
Пример:
sed -e "s/James is a good boy/James is not a good boy/g" file.dat > newfile.dat
Но, не зная реального примера того, что вы пытаетесь сделать, сложно давать советы, не повредив ваш файл и не сделав его бесполезным. Например, ваша строка “James” в шестнадцатеричном редакторе будет выглядеть так: 614a 656d 2073 7369 6120 6720 6f6f 2064 6f62 0a79
Вы добавите три шестнадцатеричных символа плюс пробелы: 6e20 746f 0a20
Но если это изначально был двоичный файл, используемый конкретной программой (я думаю о Ufile или другом приложении), формат файла может больше не синхронизироваться, потому что ваше редактирование сдвинуло пять символов слишком далеко вправо.
Реальный пример: Я получаю EDI-файлы, которые находятся в очень старом формате, известном как COMPORD. Эти файлы имеют строгие стандарты для того, где каждая часть информации хранится в файле. И каждая строка может быть длиной только 80 символов. Если бы я изменил некоторые данные, добавив пять символов, остальная часть строки оказалась бы не на своем месте для чтения программой. И эта строка была бы длиной 85 символов и была бы обрезана или отклонена.
Вот почему важно знать, что программа, которая читает этот file.dat, ожидает увидеть в каждой строке вашего индекса. Если длина переменная и содержит разделители, то да, вы, вероятно, сможете редактировать, чтобы добавить дополнительные символы. Если фиксированной длины или каждую строку содержат поля, которые дополнены пробелами или другими ASCII-кодами, то вы повредите файл данных.
Ответ или решение
Как вставить данные в бинарный файл с помощью шестнадцатеричного редактора в Ubuntu
Редактирование бинарных файлов может быть сложной задачей, требующей осознания структуры данных и обстоятельств, в которых файл будет использоваться. В данном руководстве мы рассмотрим, как вставить текст " not " в файл file.dat
, который содержит строку "James is a good boy", используя шестнадцатеричный редактор Bless в Ubuntu.
Установка Bless
Первым шагом необходимо установить Bless, который представляет собой мощный шестнадцатеричный редактор. Для этого выполните следующие команды в терминале:
sudo apt update
sudo apt install bless
Bless поддерживает множество функций, которые упрощают редактирование бинарных файлов, включая возможность открывать несколько окон и производить поиск и замену содержимого.
Открытие файла в Bless
- Запустите Bless, введя в терминале команду
bless
. - В меню выберите File > Open (Файл > Открыть) и выберите ваш файл
file.dat
.
Вставка данных
Чтобы вставить текст " not " на 8-й индекс:
-
Найдите строку "James is a good boy" в редакторе. В шестнадцатеричном представлении она будет выглядеть следующим образом (частично):
4a 61 6d 65 73 20 69 73 20 61 20 67 6f 6f 64 20 62 6f 79
-
Перейдите к 8-й позиции в файле. Вы можете увидеть элементы управления позициями в нижней части окна Bless, чтобы понять, где вы находитесь.
-
Вставьте новые данные:
- Для вставки пробела и слова "not" вам нужно будет удалить существующий пробел между "is" и "a". Так как вы хотите изменить только часть строки, вам нужно сдвинуть последующие данные вправо, чтобы сохранить целостность файла.
-
Преобразуйте " not " в его шестнадцатеричное представление:
- " not " в шестнадцатеричном виде:
20 6e 6f 74 20
.
- " not " в шестнадцатеричном виде:
-
Вставьте данные, начиная с восьмого индекса. В итоге ваши данные должны выглядеть следующим образом:
4a 61 6d 65 73 20 69 73 20 6e 6f 74 20 67 6f 6f 64 20 62 6f 79
-
После завершения редактирования сохраните файл, выбрав File > Save (Файл > Сохранить).
Важные замечания
-
Понимание структуры данных: Перед редактированием всегда делайте резервную копию оригинального файла. Определите, является ли структура данных фиксированной или переменной длины. В случаях, когда данные имеют строгое выравнивание, изменение длины может привести к повреждению файла.
-
Использование hex-редактора: Hex-редакторы позволяют изменять байты напрямую, что может быть полезно в случаях, когда изменения должны быть минимальными, например, в контексте обработки данных с фиксированной длиной.
-
Тестирование изменений: После редактирования откройте файл в соответствующем приложении, чтобы убедиться, что изменения привели к необходимым результатам и данные считываются корректно.
Заключение
Редактирование бинарных файлов с использованием hex-редактора, такого как Bless, требует осознания структуры файла и способности интерпретировать данные в шестнадцатеричном виде. Процесс добавления нового текста, как и в примере с " not ", требует осторожности, чтобы не повредить уже имеющуюся информацию. Надеемся, что данное руководство поможет вам успешно выполнить задачу редактирования файла в Ubuntu.