CLI: Editando cadeias binárias

1

Há um bom utilitário binutils da CLI para interpretar arquivos binários e gerar seqüências de texto legíveis, em uma forma cat -like. É chamado strings .

Se você tentar cat um arquivo binário, você verá um monte de texto ilegível e símbolos alienígenas. E provavelmente tem que reset do seu shell. O que às vezes nem é possível

Assim como cat , o uso básico é simplesmente:

strings ./example.bin

Pessoalmente, para uma leitura rápida, gosto de:

strings -aws ' ' ./example.bin | fold -sw $COLUMNS ; echo

Se você quiser testá-lo em um arquivo real, pode tentar algo no diretório /bin , como:

strings -aws ' ' /bin/true | fold -sw $COLUMNS ; echo

Minha pergunta: existe um recurso semelhante, rápido e amp; método fácil para editar essas seqüências de caracteres?

    
por tjt263 17.06.2018 / 10:56

2 respostas

2

Sim. %código%. O vim -b filename significa arquivo binário. Veja man page para vim.

   -b          Binary mode.  A few options will be set that makes it
               possible to  edit  a  binary  or  executable file.

-b também é adequado.

$ bvi /bin/ls
00000000  7F 45 4C 46 02 01 01 00 00 00 00 00 00 00 00 00 02 00 3E 00 01 00 00 00 .ELF..............>.....
00000018  A0 49 40 00 00 00 00 00 40 00 00 00 00 00 00 00 38 E7 01 00 00 00 00 00 .I@[email protected].......
00000030  00 00 00 00 40 00 38 00 09 00 40 00 1D 00 1C 00 06 00 00 00 05 00 00 00 [email protected]...@.............
00000048  40 00 00 00 00 00 00 00 40 00 40 00 00 00 00 00 40 00 40 00 00 00 00 00 @.......@.@.....@.@.....
00000060  F8 01 00 00 00 00 00 00 F8 01 00 00 00 00 00 00 08 00 00 00 00 00 00 00 ........................
    
por 17.06.2018 / 12:01
1

Eu tropecei neste artigo legal sobre manipulação de dados binários: Manipulando dados binários em Bash

Ele explica principalmente uma ferramenta muito útil chamada xxd

Por exemplo, para descarregar um arquivo binário em ASCII, você fará:

xxd -b myfile.bin

Para converter uma string curta, você pode usar o bom e velho bc :

$ echo "obase=16; ibase=2; 1010" | bc
A

Outro método a considerar:

$ base64 < binary.file > text.file

ibase and obase define the conversion base for input and output numbers. The default for both input and output is base 10.

    
por 17.06.2018 / 12:09