Como eu mudo os cabeçalhos dos arquivos a partir da linha de comando?

1

Eu vi e usei o editor hexadecimal da GUI bless , para modificar os bitmaps para corresponder a um tipo de arquivo separado (formulário bmp para srf). Minha pergunta é como modificar os cabeçalhos de arquivos programaticamente com a linha de comando. Quais programas permitiriam que eu fizesse alterações nos cabeçalhos dos arquivos a partir do shell script?

Eu olhei no gerenciador de pacotes synaptic, mas sou novo em modificar arquivos em hexadecimal. Os bitmaps contam como arquivos binários? Onde esta é uma solicitação de recomendação de software, uma resposta aceitável permitiria que eu escrevesse, sobrescrevesse ou alterasse valores específicos para locais específicos (como os primeiros 16 bytes de um arquivo), na linha de comando.

    
por j0h 10.05.2018 / 01:03

1 resposta

3

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 ):

por dessert 10.05.2018 / 09:45