Обзор
xxd, подобно `hexdump` или `od`, отображает содержимое бинарных файлов в шестнадцатеричном формате и в виде ASCII-символов. Однако его главная особенность — это **функция обратного преобразования**, которая позволяет вернуть дамп обратно в исходный бинарный файл. Благодаря этой функции можно редактировать бинарные файлы в текстовом редакторе в шестнадцатеричном виде, а затем использовать `xxd -r` для сохранения их обратно в бинарный файл. Эта гибкость очень мощна для анализа и модификации бинарных файлов, особенно при использовании с редактором `vim`.
Ключевые особенности
Основные особенности команды xxd включают:
- Выводит содержимое файла в шестнадцатеричном и ASCII-формате.
- Может выполнять обратное преобразование шестнадцатеричного дампа обратно в исходный бинарный файл.
- Может использоваться для модификации бинарных файлов вместе с обычными текстовыми редакторами.
- Предоставляет множество опций для детального управления форматом вывода.
Различия между xxd и hexdump
xxd и hexdump схожи по функции шестнадцатеричного дампа, но главное их отличие заключается в наличии функции обратного преобразования.
- xxd: Предоставляет функцию `обратного преобразования` (`-r`), которая возвращает шестнадцатеричный дамп обратно в исходный бинарный файл. Обладает мощной интеграцией с `vim`.
- hexdump: Инструмент, ориентированный исключительно на функцию дампа, не имеет функции обратного преобразования.
Основные опции
Мы сгруппировали часто используемые опции команды xxd по их назначению.
1) Опции дампа и обратного преобразования
2) Справка
Сгенерированная команда:
Комбинируйте команды.
Описание:
`xxd` Запускает команду.
Комбинируйте эти опции, чтобы виртуально выполнять команды с помощью ИИ.
Примеры использования
Изучите функциональность команды xxd на различных примерах использования.
Дамп содержимого файла в шестнадцатеричном формате
echo 'Hello World!' > test.txt
xxd test.txt
Выводит содержимое файла `test.txt` в шестнадцатеричном формате и в виде ASCII-символов.
Сохранение шестнадцатеричного дампа в файл
xxd /bin/ls > ls_dump.txt
Сохраняет содержимое бинарного файла `/bin/ls` в файл `ls_dump.txt`.
Обратное преобразование файла дампа в оригинал
xxd -r ls_dump.txt ls_copy
Восстанавливает ранее сохраненный файл `ls_dump.txt` обратно в исходный бинарный файл `ls_copy`. **Эта функция является главной особенностью xxd.**
Редактирование бинарных файлов с помощью vim
vim file.bin
(в vim) :%!xxd
(редактирование)
(в vim) :%!xxd -r
В `vim` используйте команду `%!xxd` для переключения текущего файла в режим шестнадцатеричного дампа, затем отредактируйте его и используйте `%!xxd -r` для возврата и сохранения.
Установка
xxd входит в состав пакета `vim`. Поскольку пакеты `vim-common` или `vim` обычно установлены по умолчанию в большинстве дистрибутивов Linux, отдельная установка не требуется.
Debian/Ubuntu
sudo apt update
sudo apt install -y vim-common
RHEL/CentOS/Fedora
sudo dnf install -y vim-common
Советы и примечания
Здесь собраны важные моменты, на которые следует обратить внимание при использовании команды xxd.
Советы
- Опция `-r` в `xxd` может корректно выполнять обратное преобразование только для файлов дампа, созданных с помощью `xxd`. Она может не работать с шестнадцатеричными дампами других форматов.
- Будьте очень осторожны при модификации бинарных файлов. Один неверный байт может испортить всю программу.
- При обратном преобразовании всегда безопаснее сохранять файл под другим именем, чтобы не перезаписать оригинал. (Например: `xxd -r old.hex > new.bin`)