8

Я искал, как сделать обратную hexdump и нашел упомянутое xxd. Тем не менее, это не похоже на работу с:

xxd -r hexdumpfile > binaryfile

Затем я сравнил разницу между выходными xxd infile и hexdump infile и обнаружил три различия:

  1. Выход xxd имеет двоеточие после адреса
  2. Выход xxd имеет позиции в обращенных данных (например, 5a42 на выходе hexdump становится 425a на выходе xxd)
  3. Есть несколько дополнительных символов после каждой строки

У меня есть только шестнадцатеричная версия определенных файлов на сервере. Как я могу правильно вернуть двоичные данные, используя xxd?

2 ответа2

6

Я не знаю ни одной команды, которая бы выполняла преобразование, но ее легко разбить на несколько шагов:

  1. Удалите адреса из вывода hexdump используя sed
  2. Преобразовать в двоичный файл, используя xxd
  3. Конвертирование в обратном порядке (например, 5a42 становится 425a) с использованием dd

Вот полная команда:

sed 's/^[0-9]*//' hexdump | xxd -r -p | dd conv=swab of=binaryfile
0

Вы можете сделать преобразование в одной команде sed . Достаточно добавить : после адреса и изменить порядковый номер (переключив ab12 на 12ab).

sed -E 's/ /: /;s/ (..)(..)/ \2\1/g' dump | xxd -r

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .