Como faço para anexar dados a um arquivo binário com um editor hexadecimal? -- binary camp askubuntu Relacionado O problema

How do I append data to a binary file with an hex editor?


1
vote

problema

português

Estou tentando anexar dados a um arquivo binário no Ubuntu usando o software HEXEDIT. É uma impossibilidade de anexar dados a um arquivo binário sem sobrescrever os dados já presentes no arquivo no Ubuntu?

english

I'm trying to append data to a binary file in ubuntu using the hexedit software. Is it an impossibility to append data to a binary file without overwriting the data already present in the file in ubuntu?

  
       
       

Lista de respostas

2
 
vote

hexedit aparentemente sobrescreve o arquivo inteiro se você salvar qualquer alteração; Mesmo se você fosse apenas anexando dados.

Inserir símbolos (como "& lt;" "& gt;") pode ser problemático, pois representam os comandos Hexedit. Para inseri-los como conteúdo de arquivo, use a tecla "Tab" para alternar para a edição HEX e inserir suas representações hexadecimais (3C e 3E de acordo). E como estas dificilmente são as únicas chaves como esta, eu aconselho que você tenha uma mesa ASCII à mão a qualquer momento em que você esteja em um editor hexadecimal.

Muitos administradores do Linux usarão o venerável "dd" quando se depararam com um reivindicato nos arquivos binários. O seguinte é um exemplo de como substituir uma seção de 4 bytes de um arquivo de 80 bytes de números aleatórios com zeros em uma posição 15 bytes no arquivo:

  dd if=/dev/urandom of=file.dat bs=1 count=80 #create primary file dd if=/dev/zero of=block.dat bs=1 count=4 #create replacement data dd if=./block.dat of=./file.dat bs=1 count=4 seek=15 conv=notrunc #replace data    

Para "inserir" dados em um arquivo binário usando dd não é estritamente prático, pois envolve a realocação da segunda metade do arquivo binário; uma evolução que se sobrescreve.

No entanto, você pode construir um terceiro arquivo que é uma concatenação do primeiro semestre de seu arquivo de dados, os dados inseridos e, em seguida, a segunda metade do arquivo de dados e produzir o efeito líquido:

  # Define where the insertion will take place; the 25th byte insertPoint=25 # Create new file with the first 24 bytes of data file dd if=file.dat bs=1 count=$(expr $insertPoint - 1) > file2.dat # Append insert data cat insert.dat >> file2.dat # Append rest of data file dd if=file.dat bs=1 skip=$(expr $insertPoint - 1) >> file2.dat    

Deve ser apontado que os arquivos binários são frequentemente, porque são usados ​​por serviços ou aplicativos. Como tal, deve ser tomado cuidado para garantir que você não esteja alterando um arquivo que está sendo usado ativamente por algum outro processo.

 

hexedit does apparently overwrite the entire file if you save any change; even if you were merely appending data.

Entering symbols (such as "<" ">") can be problematic as they represent hexedit commands. To enter them as file content, use "tab" key to switch to hex editing and enter their hexadecimal representations ( 3c and 3e accordingly). And as these are hardly the only keys like this, I'd advise you have an ASCII table handy anytime you are in a hex editor.

Many Linux admins will use the venerable "dd" when faced with bit-fiddling in binary files. The following is an example of how to replace a 4 byte section of an 80 byte file of random numbers with zeros at a position 15 bytes into the file:

dd if=/dev/urandom of=file.dat bs=1 count=80 #create primary file dd if=/dev/zero of=block.dat bs=1 count=4 #create replacement data dd if=./block.dat of=./file.dat bs=1 count=4 seek=15 conv=notrunc #replace data 

To "insert" data into a binary file using dd is not strictly practical as it involves relocating the second half of the binary file; an evolution that overwrites itself.

However, you can construct a third file that is a concatenation of the first half of your data file, the inserted data, and then the second half of your data file and produce the net effect:

# Define where the insertion will take place; the 25th byte insertPoint=25 # Create new file with the first 24 bytes of data file dd if=file.dat bs=1 count=$(expr $insertPoint - 1) > file2.dat # Append insert data cat insert.dat >> file2.dat # Append rest of data file dd if=file.dat bs=1 skip=$(expr $insertPoint - 1) >> file2.dat 

It should be pointed out that binary files are often such because they are used by services or applications. As such, care must be taken to ensure you are not altering a file that is actively being used by some other process.

 
 
   
   

Perguntas relacionadas

1  Não pode executar um binário linux  ( Cannot run a linux binary ) 
Eu estava tentando executar um binário linux deste site: http: //www.robots.ox .ac.uk / ~ vgg / pesquisa / afundo / descritores.html # binários Especifi...

1  Quais são as etapas para instalar Natron no Ubuntu?  ( What are the steps to install natron on ubuntu ) 
No começo eu tentei instalar das fontes oficiais, Natrron não estava lá, então procurei por um PPA e não encontrei Natron. Agora eu leio algo sobre binários...

0  Qual é a localização do comando "file"?  ( Which is the location of file command ) 
Quando verificarmos o tipo de arquivo, usamos file comando para fazer isso. Eu acho que file comando é um binário. Então, eu olho na pasta Bin para isso, ...

2  Como posso instalar o GEM5?  ( How can i install gem5 ) 
Eu estava ajudando meu amigo a instalar o simulador GEM5 no Linux para o trabalho de tese. Eu conheço Linux um pouco. De alguma forma, consegui instalar esse ...

2  É bom fazer upload de um arquivo de 'fonte' binário para lançado para a construção?  ( Is it okay to upload a binary source archive to launchpad for building ) 
Eu tenho um pacote que é extremamente complicado e usa bibliotecas não incluídas em qualquer um dos repositórios padrão. Posso fazer upload de um arquivo de...

2  "Bibliotecas JRE estão faltando ou não compatível" mensagem de erro "  ( Jre libraries are missing or not compatible error message ) 
Ao tentar instalar o SPSS (um pacote de análise estatística) usando /usr/lib/i386-linux-gnu/0 eu recebo o seguinte: /usr/lib/i386-linux-gnu/1 OpenJDK ...

25  Quais são alguns bons espectadores / editores binários da GUI?  ( What are some good gui binary viewers editors ) 
Quais são alguns aplicativos da GUI que vão me permitir visualizar e editar arquivos binários (executáveis, imagens, etc.). ...

85  Instalação global de compositor (manual)  ( Global installation of composer manual ) 
Eu segui compositor Manual (Instalação Global do Composer (Manual)) para instalar o compositor em Ubuntu. $ ll /usr/local/bin/ total 4760 drwxr-xr-x 2 r...

1  / usr / bin / arquivo do braço de 32 bits do Ubuntu  ( Usr bin file from ubuntu 32 bit arm ) 
Eu quero "arquivo" binário que geralmente é localizado em / usr / bin /. Eu quero isso de braço de 32 bits. Eu tenho apenas um Ubuntu de 64 bits instalado no ...

46  Bash: ./fileName: não é possível executar o arquivo binário  ( Bash filename cannot execute binary file ) 
Eu não consegui executar um código compilado Fortran no Ubuntu 11.10 32 bits. mensagem de erro é bash: ./filename : Cannot execute binary file. Eu in...




© 2022 pergunte.org All Rights Reserved. Casa de perguntas e respostas todos os direitos reservados


Licensed under cc by-sa 3.0 with attribution required.