Utilizar os comandos hexedit e xxd para visualizar e modificar ficheiros binários

Pode instalar o hexedit, um editor de ficheiros do sistema Linux. É possível visualizar o conteúdo de ficheiros binários e efetuar alterações nos mesmos.

Com o hexedit, pode editar imagens, ficheiros executáveis e outros ficheiros binários. No entanto, é necessário conhecer muito bem o formato do ficheiro que está a editar para efetuar alterações eficazes que não comprometam o formato do ficheiro. Afinal, estará a editar um byte de cada vez. Isto não significa que não possa utilizar este comando para visualizar ou editar ficheiros de texto. Há pouca ou nenhuma razão para o fazer.

Utilizar o HexEdit

Apesar do comentário acima sobre ficheiros de texto, o exemplo seguinte utiliza o hexedit para visualizar/modificar um ficheiro de texto, mas apenas para ilustrar como o comando apresenta o conteúdo do ficheiro e para sugerir uma forma fácil de se familiarizar com o funcionamento do hexedit.Gateway de computação periférica

$ hexedit o-meu-ficheiro.txt

00000000 54 68 69 73 20 69 73 20 61 20 74 65 78 74 20 66 Este é um texto f

00000010 69 6C 65 20 74 68 61 74 20 49 20 63 72 65 61 74 ficheiro que eu crio

00000020 65 64 20 75 73 69 6E 67 20 76 69 20 6F 6E 20 6D editado com o vi no m

00000030 79 20 4C 69 6E 75 78 20 73 79 73 74 65 6D 2E 0A e sistema Linux...

00000040 49 74 20 63 6F 6E 74 61 69 6E 73 20 6F 6E 6C 79 Contém apenas

00000050 20 61 20 66 65 77 20 6C 69 6E 65 73 20 6F 66 20 algumas linhas de

00000060 74 65 78 74 2E 0A 54 68 65 20 45 6E 64 21 0A texto... Fim!.

DTU/Gateway Edge/Plataforma IoT/Módulo de Gateway/Comandos hexedit e xxd do Linux

A imagem acima mostra que uma nova linha (“0A” na saída hexadecimal) aparece como um ponto no texto à direita. Cada segmento adicional de 2 bytes apresentado entre o número da linha (hexadecimal) à esquerda e o texto à direita representa um carácter. Por exemplo, as quatro cadeias de caracteres de dois bytes (54 68 69 73) no lado esquerdo da primeira linha de texto correspondem à palavra “This” apresentada à direita. Se quiser alterar esta palavra para “That”, pode tocar na tecla de seta para a direita para chegar ao 9 e digitar “1”; em seguida, toque novamente para a direita para chegar ao 3 e digite “4”. O texto apresentado à direita será ajustado em conformidade.

Pode utilizar ^s para procurar bytes específicos. Ser-lhe-á solicitado que introduza o que pretende procurar. Se quiser guardar as alterações, saia com ^x e responda com “y”. Mantenha premida a tecla de seta para baixo para percorrer a linha de dados.

A navegação dentro de um ficheiro binário funciona da mesma forma, mas é necessário compreender quais as partes do ficheiro que podem ser alteradas sem comprometer o formato do ficheiro.

Os ficheiros executáveis começam normalmente com algo semelhante a isto:

00000000 7F 45 4C 46 02 01 01 00 00 00 00 00 00 00 00 00 .ELF…………

00000010 03 00 3E 00 01 00 00 00 10 6B 00 00 00 00 00 00 ..>……k……

00000020 40 00 00 00 00 00 00 00 40 22 02 00 00 00 00 00 @…..@”……

00000030 00 00 00 00 40 00 38 00 0D 00 40 00 1F 00 1E 00 ….@.8…@…..

00000040 06 00 00 00 04 00 00 00 40 00 00 00 00 00 00 00 ……..@…….

00000050 40 00 00 00 00 00 00 00 40 00 00 00 00 00 00 00 @…..@…..

00000060 D8 02 00 00 00 00 00 00 D8 02 00 00 00 00 00 00 …………

00000070 08 00 00 00 00 00 00 00 03 00 00 00 04 00 00 00 …………

O ELF na linha superior, à direita do ponto «.», identifica este ficheiro como um ficheiro ELF. O ELF é o padrão universal para ficheiros executáveis, mas o conteúdo não será texto legível; será código compilado. Se alterar alguma coisa neste ficheiro, é muito provável que ele deixe de funcionar corretamente e possa causar uma falha de segmentação.

O comando hexedit é, por vezes, utilizado em investigações de cibercrime, uma vez que nada fica oculto ao utilizador, pelo que pode ajudar a detetar malware incorporado, entre outros. No entanto, é útil saber o que se está à procura e onde esses dados podem ser encontrados. É sempre uma boa ideia fazer uma cópia de segurança de qualquer ficheiro que pretenda editar, para que possa restaurá-lo facilmente caso seja necessário.

A página de manual do comando hexedit descreve como navegar pelos ficheiros, sair sem guardar ou guardando as alterações, efetuar pesquisas e realizar outras operações. Assim que souber quais as alterações válidas, é muito fácil navegar pelo ficheiro e efetuar alterações.

A revelar os segredos da rede NB/HexEdit

Utilizar o xxd

O comando xxd permite criar um dump hexadecimal a partir de um ficheiro. Por outras palavras, obtém-se basicamente o mesmo resultado que com o hexedit, mas o xxd limita-se a apresentar o resultado. Não oferece qualquer forma de editar o conteúdo do ficheiro. No exemplo abaixo, utilizamos o xxd para apresentar o conteúdo hexadecimal na parte superior de um ficheiro jpg, juntamente com as conversões disponíveis de hexadecimal para caracteres. Poderá notar que a imagem em questão parece ter sido criada com o Photoshop.

$xxd micro.jpg | cabeça

00000000: ffd8 ffe0 0010 4a46 4946 0001 0100 0048……JFIF…..H

00000010: 0048 0000 ffe1 004c 4578 6966 0000 4d4d .H….LExif..MM

00000020: 002a 0000 0008 0001 8769 0004 0000 0001 .*…….i……

00000030: 0000 001a 0000 0000 0003 a001 0003 0000 …………

00000040: 0001 0001 0000 a002 0004 0000 0001 0000 …………

00000050: 002a a003 0004 0000 0001 0000 0036 0000 .*…….6..

00000060: 0000 ffed 0038 5068 6f74 6f73 686f 7020 …..8Photoshop

00000070: 332e 3000 3842 494d 0404 0000 0000 0000 3.0.8BIM…..

00000080: 3842 494d 0425 0000 0000 0010 d41d 8cd9 8BIM.%…..

00000090: 8f00 b204 e980 0998 ecf8 427e ffc0 0011 …..B~….

Também pode redirecionar a saída do comando xxd para um ficheiro, para análise posterior.

$xxd micro.jpg > micro.txt

$ headmicro.txt

00000000: ffd8 ffe0 0010 4a46 4946 0001 0100 0048……JFIF…..H

00000010: 0048 0000 ffe1 004c 4578 6966 0000 4d4d .H….LExif..MM

00000020: 002a 0000 0008 0001 8769 0004 0000 0001 .*…….i……

00000030: 0000 001a 0000 0000 0003 a001 0003 0000 …………

00000040: 0001 0001 0000 a002 0004 0000 0001 0000 …………

00000050: 002a a003 0004 0000 0001 0000 0036 0000 .*…….6..

00000060: 0000 ffed 0038 5068 6f74 6f73 686f 7020 …..8Photoshop

00000070: 332e 3000 3842 494d 0404 0000 0000 0000 3.0.8BIM…..

00000080: 3842 494d 0425 0000 0000 0010 d41d 8cd9 8BIM.%…..

00000090: 8f00 b204 e980 0998 ecf8 427e ffc0 0011 …..B~….

Note-se que o hexedit utiliza letras maiúsculas nos seus caracteres hexadecimais, enquanto o xxd utiliza letras minúsculas e apresenta o valor em blocos de quatro bytes, em vez de blocos de dois bytes.

Resumir

O comando hexedit pode ser utilizado para visualizar o conteúdo de ficheiros binários (imagens, executáveis, etc.) e o comando xxd pode ser utilizado para visualizar e guardar o conteúdo desses ficheiros para análise posterior, no formato apresentado acima.

 

Sobre mim
e87d0ef219292bb40d6f120e7d321bcb?s=150&d=mp&r=g
Mais publicações