xxd — дамп файлов в шестнадцатеричном виде

Что такое шестнадцатеричный дамп?
Шестнадцатеричный дамп выводит содержимое файла в виде шестнадцатеричных чисел. Шестнадцатеричная система использует 16 символов: 0–9 и A–F (где A–F соответствуют 10–15). Один шестнадцатеричный символ кодирует 4 бита (пол-байта), а два шестнадцатеричных символа — один байт.
Почему это удобно:
- Hex компактнее и читаемее, чем длинные строки 0 и 1.
- Позволяет быстро определить структуру файла, сигнатуры (magic bytes) и встроенные текстовые фрагменты.
- Используется в отладке, судебной экспертизе, реверс-инжиниринге и при работе с бинарными форматами.
Утилита xxd — кратко
xxd обычно поставляется вместе с редактором Vim. Если на системе нет xxd, установите пакет vim или пакет с утилитой xxd через менеджер пакетов вашей дистрибуции (apt, yum, pacman и т.д.).
Простейший вызов:
xxd [FILE]По умолчанию xxd выводит:
- столбец со смещением (offset),
- шестнадцатеричный дамп байтов,
- справа — читаемые ASCII-символы (или точка для не-печатных байтов).
Это удобный формат для быстрого сканирования файлов: сигнатуры форматов обычно видны в начале (например, PNG начинается с байт 89 50 4E 47). Ниже — пример изображения с типичным фрагментом дампа.
Важно: xxd не «понимает» формат файла — оно лишь показывает сырые байты. Интерпретация остаётся за вами.
Полезные опции xxd
Ниже — краткая подборка часто используемых опций:
- -p : выводить «поток» шестнадцатеричных байтов (без адресов и ASCII), удобно для скриптов.
- -r : восстановить бинарный файл из hex-дампа (реверс-операция).
- -g N : группировать байты по N (N = 1,2,4,8) для удобства чтения.
- -c cols : задать количество байтов в строке (по умолчанию 16).
- -s offset : начать вывод с указанного смещения (offset может быть + или -).
- -l length : вывести не более length байтов.
Примеры:
# Стандартный дамп
xxd file.bin
# Поток hex без адресов
xxd -p file.bin
# Восстановление бинарного файла из hex
xxd -r -p dump.hex > file.bin
# Дамп с группировкой по 4 байта и 8 байтов в строке
xxd -g 4 -c 8 file.bin
# Начать с 0x100 и вывести 64 байта
xxd -s 0x100 -l 64 file.binКак анализировать файл: мини-методология
- Сначала запустите
xxd fileдля общего просмотра. Обратите внимание на первые 16–64 байта — там обычно находятся «магические байты». - Используйте
xxd -pдля получения чистого hex-потока, если нужно сравнение или обработка в скрипте. - Если увидели читаемые строки, выполните
strings fileилиgrepпо выводу, чтобы найти полезные метки. - Для изменения небольшого участка используйте hex-редактор; для восстановления применяйте
xxd -r.
Когда xxd не подходит (контрпримеры)
- Если нужно пошагово редактировать и проверять контрольные суммы — удобнее использовать hex-редактор с интерфейсом (например, hexedit, bless).
- Для подробного анализа структуры формата, включая парсинг заголовков и таблиц, лучше применять специализированные инструменты (ExifTool для метаданных изображений, binwalk для прошивок).
- Для больших файлов с требованием SLI/SLO/производительности массового чтения может не подойти — лучше инструменты потоковой обработки.
Альтернативы xxd
- hexdump — стандартная утилита на многих системах; синтаксис отличается, но возможности схожи.
- od — более старый инструмент, выводит содержимое в разных форматах (octal, hex, ascii).
- strings — удобна для быстрого извлечения printable-строк из бинарника.
- hex-редакторы (hexedit, bless, wxHexEditor) — для интерактивного редактирования.
Пример сравнения команд:
hexdump -C file.bin # похожий вывод: offset | hex | ASCII
od -An -tx1 -v file.bin # вывод в hex-байтах без адресовЧек-листы по ролям
Для разработчика:
- проверить сигнатуру файла (первые байты);
- найти версии/метки сборки в ASCII;
- при патчинге — тестировать контрольные суммы.
Для администратора/инженера поддержки:
- сохранить оригинал файла (backup);
- использовать
xxd -sи-lдля выборочного анализа; - документировать найденные строки и смещения.
Для дизайнера/верстальщика:
- использовать
xxd -pдля извлечения встроенных ресурсов (иногда цвета, метаданные); - при необходимости — извлечь встроенные CSS/тексты для правки.
- использовать
Критерии приёмки
- Утилита выводит смещение, hex-байты и читаемую ASCII-колонку.
- Можно восстановить бинарный файл с помощью
xxd -rиз корректного hex-дампа. - Опции
-s,-l,-g,-cработают как ожидается для выборочного анализа.
Краткий глоссарий (1 строка)
- Hex: шестнадцатеричная система счисления, 16 символов.
- Byte: 8 бит, минимальная адресуемая единица памяти.
- Nibble: 4 бита (пол-байта), соответствует одному hex-символу.
- Offset: смещение от начала файла, обычно выводится в hex.
- ASCII: стандарт отображаемых символов; не все байты соответствуют печатным символам.
Примеры тестов/приёмки
- Тест 1:
xxd file.png | headпоказывает сигнатуру PNG (89 50 4E 47). - Тест 2:
xxd -p file > dump.hexиxxd -r -p dump.hex > file2— file и file2 должны быть идентичны по битовой сумме (например,sha256sum).
Заключение
xxd — компактный и надёжный инструмент для быстрого осмотра бинарных файлов в шестнадцатеричном виде. Он особенно полезен, когда нужно найти встроенные строки, проверить сигнатуры форматов или подготовить данные для автоматизированной обработки. Для глубокого анализа или редактирования используйте специализированные инструменты в дополнение к xxd.
Часто задаваемые вопросы
Что делать, если на системе нет xxd?
Установите vim или пакет xxd через менеджер пакетов вашей системы (например, sudo apt install vim на Debian/Ubuntu).
Как преобразовать вывод xxd обратно в бинарный файл?
Используйте xxd -r вместе с флагом -p, если дамп был в поточном формате: xxd -r -p dump.hex > file.bin.
Можно ли редактировать файл напрямую через xxd?
xxd сам по себе не является интерактивным редактором, но предоставляет возможность конвертации в hex и обратно; для редактирования используйте hex-редактор (hexedit, bless) или отредактируйте дамп и верните его через xxd -r.
Похожие материалы
Как восстановить и отредактировать видео с телефона
Homebrew для PSP: установка и запуск
vReveal — обзор: улучшение видео бесплатно
Как сделать видео‑трибьют в Animoto за 10 минут