Я видел и использовал hex-редактор GUI bless
, чтобы модифицировать растровые изображения в соответствии с отдельным типом файла (от bmp до srf). Мой вопрос заключается в том, как программно изменять заголовки файлов с помощью командной строки. Какие программы позволят мне вносить изменения в заголовки файлов из сценария оболочки?
Я посмотрел в менеджере пакетов synaptic, но я новичок в модификации файлов в шестнадцатеричном формате. Растровые изображения считаются двоичными файлами? Если это запрос на рекомендацию программного обеспечения, приемлемый ответ позволил бы мне записывать, перезаписывать или изменять конкретные значения в определенных местах (например, в первых 16 байтах файла) в командной строке.
xxd
очень мощный Hex-редактор командной строки, который позволяет Вам изменять двоичные файлы с единственной командной строкой. Можно использовать его этот путь:
xxd -r -p -o OFFSET <(echo NEW HEX SIGNATURE) FILE # or
echo NEW HEX SIGNATURE | xxd -r -p -o OFFSET - FILE
Давайте “преобразуем” 01.png
файл к rar формату (преобразовывают подпись в шестнадцатеричную систему 5261 7221 1A07 0000
, смещение 0
1):
$ file 01.png
01.png: PNG image data, 1280 x 1024, 8-bit/color RGB, non-interlaced
$ xxd 01.png | head -1
00000000: 8950 4e47 0d0a 1a0a 0000 000d 4948 4452 .PNG........IHDR
$ xxd -r -p -o 0 <(echo 5261 7221 1A07 0000) 01.png
$ file 01.png
01.png: RAR archive data, vdb, os: MS-DOS
$ xxd 01.png | head -1
00000000: 5261 7221 1a07 0000 0000 000d 4948 4452 Rar!........IHDR
Посмотрите man xxd
для других полезных опций и большого количества полезных примеров.
1If смещение 0
опция -o
может быть опущен, я включаю его здесь только для показа его использования.
Если Вам нравится он лучше, можно сделать усечение с dd
также, но это кажется излишне сложным:
dd conv=notrunc obs=1 if=<(xxd -r -p -o 0 <(echo 5261 7221 1A07 0000)) of=01.png
Дополнительные материалы для чтения (помимо обычной справки командной строки):