xxd
é um poderoso editor hexadecimal de linha de comando que permite alterar arquivos binários com uma única linha de comando. Você pode usá-lo desta maneira:
xxd -r -p -o OFFSET <(echo NEW HEX SIGNATURE) FILE # or
echo NEW HEX SIGNATURE | xxd -r -p -o OFFSET - FILE
Vamos “converter” o arquivo 01.png
para o formato rar (assinatura hex 5261 7221 1A07 0000
, deslocamento 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
Veja man xxd
para outras opções úteis e muitos exemplos úteis .
1 Se o deslocamento for 0
, a opção -o
pode ser omitida, eu incluo aqui apenas para mostrar seu uso.
Se você gostar mais, poderá fazer o truncamento com dd
, mas isso parece desnecessariamente complicado:
dd conv=notrunc obs=1 if=<(xxd -r -p -o 0 <(echo 5261 7221 1A07 0000)) of=01.png
Outras leituras (além da ajuda usual na linha de comando ):