Как использовать xxd для просмотра файлов в шестнадцатеричном виде
![/files/3c14fa9e-cd25-49f6-bbe6-1ce799aad2f8.jpg?w=1600&h=900&fit=crop]
В большинстве задач вы не будете работать с отдельными битами или байтами каждый день. Тем не менее, знание инструментов для «дампа» файлов на уровне байтов полезно при отладке, цифровой криминалистике и анализе форматов. Утилита xxd — одна из таких. Она генерирует шестнадцатеричный дамп содержимого файла и умеет восстанавливать бинарные данные из такого дампа.
Что такое шестнадцатеричный дамп
Шестнадцатеричный дамп выводит содержимое файла в виде шестнадцатеричных чисел. В шестнадцатеричной системе используются 16 символов: 0–9 и A–F, где A–F соответствуют значениям 10–15. Один шестнадцатеричный символ кодирует четыре бита, а один байт представляется двумя шестнадцатеричными символами.
Короткое определение: шестнадцатеричный дамп показывает смещение, байты в hex и возможную ASCII-интерпретацию рядом.
Установка и где найти xxd
xxd обычно идёт в составе пакета Vim. На большинстве дистрибутивов его можно установить через пакетный менеджер, например:
- Debian/Ubuntu: sudo apt install vim-common
- Fedora/RHEL: sudo dnf install vim-common
Если вы используете минимальные образы, ищите пакет, который содержит утилиту xxd.
Базовое использование xxd
Чтобы запустить xxd, используйте простую форму:
xxd [FILE]По умолчанию xxd выводит три колонки в каждой строке:
- смещение (offset) в начале строки, в шестнадцатеричной форме;
- блок шестнадцатеричных байтов по 16 байт в строке;
- справа читаемые ASCII-символы для тех байтов, которые печатаемы
Пример типичного вывода (заголовок PNG):
00000000: 8950 4e47 0d0a 1a0a 0000 000d 4948 4452 .PNG........IHDR
00000010: 0000 0100 0000 0100 0802 0000 007a 3b7a ..............z;zВ этой записи видно стандартный заголовок PNG: 89 50 4E 47 и часть строки IHDR слева в ASCII.
Полезные опции xxd
- -p — «plain» вывод, только непрерывные шестнадцатеричные числа без смещений и ASCII. Удобно для передачи в пайп.
- -r — обратная операция: из шестнадцатеричного дампа в бинарный файл. Позволяет править дамп и собирать файл обратно.
- -c
— количество байт на строку, по умолчанию 16. - -g
— группировка байтов при выводе, например -g 1 группирует по одному байту. - -s
— начать дамп с указанного смещения. Можно указывать + или -. - -l
— вывести только указанное количество байт.
Примеры:
xxd -p image.png | head -c 200 # первые 200 символов в plain hex
xxd -s +64 -l 128 file.bin # вывести 128 байт, начиная с байта 64
xxd -r dump.hex > restored.bin # собрать бинарный файл из дампа
xxd -c 8 file.dat # по 8 байт в строкеРазбор типичного вывода
Строки начинаются со смещения, затем идут шестнадцатеричные байты, а справа — ASCII-часть. Если байт не печатаемый, вместо него обычно выводится точка. Это помогает быстро найти встроенные строки в бинарниках: тип файла, метаданные, пути и т.д.
Наличие читаемых строк в бинарном файле — нормальное явление. Они часто содержат сигнатуры форматов, версии библиотек и имена программ.
Когда xxd не подходит
- Большие файлы: xxd выводит весь файл в терминал по умолчанию. Для больших бинарников используйте -l/-s или комбинируйте с head/tail.
- Структурный анализ: xxd показывает сырые байты, но не даёт удобной структуры полей формата. Для анализа сложных форматов лучше использовать инструменты вроде 010 Editor, Kaitai Struct или специализированные парсеры.
- Интерпретация чисел: xxd не делает автоматическую интерпретацию целых типов в разных эндianness, вам придётся читать байты вручную или применять дополнительные утилиты.
Альтернативные инструменты
- hexdump — стандартная утилита, часто доступна по умолчанию.
- hd — простая обёртка над hexdump на некоторых системах.
- hexedit, bless, biew — интерактивные шестнадцатеричные редакторы с графическим/текстовым интерфейсом.
- vim -b — открыть файл в бинарном режиме и смотреть/править байты через xxd внутри Vim.
Методология быстрого анализа (mini чек-лист)
- Сначала посмотрите первые 64 байта: xxd -l 64 file
- Ищите сигнатуры форматов (PNG, PDF, ELF, PKZIP и т.д.)
- Если нужно изменить — извлеките нужный участок: xxd -s +offset -l length -p > part.hex
- Правьте дамп в текстовом редакторе, затем соберите обратно: xxd -r part.hex > part.bin
- Подмените часть файла с осторожностью, создайте резервную копию
Рольовые подсказки:
- Для разработчика: используйте -c и -g для читаемого вывода при отладке форматов.
- Для системного администратора: используйте -s/-l, чтобы безопасно просмотреть заголовки без полного дампа.
- Для аналитика безопасности: ищите строковые подписи и подозрительные плейсхолдеры в ASCII-части.
Небольшой глоссарий
- Байты: минимальная адресуемая единица хранения, обычно 8 бит.
- Смещение: позиция байта от начала файла, часто в шестнадцатеричной форме.
- ASCII-часть: текстовый интерпретируемый вид байтов слева.
Важно: перед изменением бинарного файла всегда делайте резервную копию. Неправильное изменение байта может повредить формат и сделать файл не читаемым.
Краткое резюме
xxd — простой и надёжный инструмент для просмотра и правки содержимого файлов на уровне байтов. Он удобен для быстрого обнаружения сигнатур, встроенных строк и диагностики повреждённых файлов. Для сложного анализа сочетайте xxd с другими инструментами и всегда работайте с копией файла.
Ключевые команды: xxd [FILE], xxd -p, xxd -r, xxd -s, xxd -l
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента