gnu linux badge

Como converter arquivos texto para formato binário (0 e 1) ou hexadecimal?

O comando xxd, do UNIX e do GNU/Linux pode ser usado para brincar, gerando saídas em sequências de 0 e 1. Também é usado, por hackers para alterar ou corrigir arquivos de programas em formato binário.
O comando xxd gera uma saída em hexadecimal ou hex dump a partir de um dado arquivo.
Ele pode fazer o processo contrário, também — ou seja, converter um arquivo com conteúdo em hexadecimal para o modo binário original ou texto.
binarytext-twitter-in-stream-photo
O procedimento de converter arquivos binários para hexadecimal é útil para transmitir dados naquele formato via email, de maneira segura, em formato ASCII.
Este procedimento também é útil para permitir que arquivos binários, possam ser editados em editores de texto comuns, sem sofrer danos.
Ao converter um arquivo binário para hexadecimal, é possível editá-lo com mais segurança — e depois converter de volta.
Normalmente, usam-se hex editors para isto. Mas, se você não tiver um por perto, pode usar este utilitário padrão no Unix/Linux.
Nos meus exemplos vou usar um trecho do poema ‘Não passou’, de Carlos Drummond de Andrade, dentro do meu arquivo ‘carlosdrummonddeandrade.txt’. Você pode usar qualquer outro arquivo texto, disponível no seu sistema:

cat carlosdrummonddeandrade.txt 
Não passou

(Carlos Drummond de Andrade)

Hoje somos mais vivos do que nunca.
Mentira, estarmos sós.
Nada, que eu sinta, passa realmente.
É tudo ilusão de ter passado

Para ver o texto representado em modo hexadecimal, use o xxd, sem opção alguma:

xxd carlosdrummonddeandrade.txt 
0000000: 4ec3 a36f 2070 6173 736f 750a 0a28 4361  N..o passou..(Ca
0000010: 726c 6f73 2044 7275 6d6d 6f6e 6420 6465  rlos Drummond de
0000020: 2041 6e64 7261 6465 290a 0a48 6f6a 6520   Andrade)..Hoje 
0000030: 736f 6d6f 7320 6d61 6973 2076 6976 6f73  somos mais vivos
0000040: 2064 6f20 7175 6520 6e75 6e63 612e 0a4d   do que nunca..M
0000050: 656e 7469 7261 2c20 6573 7461 726d 6f73  entira, estarmos
0000060: 2073 c3b3 732e 0a4e 6164 612c 2071 7565   s..s..Nada, que
0000070: 2065 7520 7369 6e74 612c 2070 6173 7361   eu sinta, passa
0000080: 2072 6561 6c6d 656e 7465 2e0a c389 2074   realmente.... t
0000090: 7564 6f20 696c 7573 c3a3 6f20 6465 2074  udo ilus..o de t
00000a0: 6572 2070 6173 7361 646f 0a              er passado.

Se preferir, você pode jogá-lo para dentro de outro arquivo. Para isto, informe o nome do arquivo de entrada seguido do nome do arquivo de saída:

xxd carlosdrummonddeandrade.txt carlosdrummonddeandrade.hex
cat carlosdrummonddeandrade.hex
0000000: 4ec3 a36f 2070 6173 736f 750a 0a28 4361  N..o passou..(Ca
0000010: 726c 6f73 2044 7275 6d6d 6f6e 6420 6465  rlos Drummond de
0000020: 2041 6e64 7261 6465 290a 0a48 6f6a 6520   Andrade)..Hoje 
0000030: 736f 6d6f 7320 6d61 6973 2076 6976 6f73  somos mais vivos
0000040: 2064 6f20 7175 6520 6e75 6e63 612e 0a4d   do que nunca..M
0000050: 656e 7469 7261 2c20 6573 7461 726d 6f73  entira, estarmos
0000060: 2073 c3b3 732e 0a4e 6164 612c 2071 7565   s..s..Nada, que
0000070: 2065 7520 7369 6e74 612c 2070 6173 7361   eu sinta, passa
0000080: 2072 6561 6c6d 656e 7465 2e0a c389 2074   realmente.... t
0000090: 7564 6f20 696c 7573 c3a3 6f20 6465 2074  udo ilus..o de t
00000a0: 6572 2070 6173 7361 646f 0a              er passado.

Como converter o arquivo para modo binário

Para ver a saída no modo binário, em vez de hexadecimal, use a opção ‘-b’.
Esta opção altera a formatação da saída para binary digits ou dígitos binários — ele reescreve o conteúdo do texto em octetos de zeros e uns.
Veja um exemplo:

xxd -b carlosdrummonddeandrade.txt 
0000000: 01001110 11000011 10100011 01101111 00100000 01110000  N..o p
0000006: 01100001 01110011 01110011 01101111 01110101 00001010  assou.
000000c: 00001010 00101000 01000011 01100001 01110010 01101100  .(Carl
0000012: 01101111 01110011 00100000 01000100 01110010 01110101  os Dru
0000018: 01101101 01101101 01101111 01101110 01100100 00100000  mmond 
000001e: 01100100 01100101 00100000 01000001 01101110 01100100  de And
0000024: 01110010 01100001 01100100 01100101 00101001 00001010  rade).
000002a: 00001010 01001000 01101111 01101010 01100101 00100000  .Hoje 
0000030: 01110011 01101111 01101101 01101111 01110011 00100000  somos 
0000036: 01101101 01100001 01101001 01110011 00100000 01110110  mais v
000003c: 01101001 01110110 01101111 01110011 00100000 01100100  ivos d
0000042: 01101111 00100000 01110001 01110101 01100101 00100000  o que 
0000048: 01101110 01110101 01101110 01100011 01100001 00101110  nunca.
000004e: 00001010 01001101 01100101 01101110 01110100 01101001  .Menti
0000054: 01110010 01100001 00101100 00100000 01100101 01110011  ra, es
000005a: 01110100 01100001 01110010 01101101 01101111 01110011  tarmos
0000060: 00100000 01110011 11000011 10110011 01110011 00101110   s..s.
0000066: 00001010 01001110 01100001 01100100 01100001 00101100  .Nada,
000006c: 00100000 01110001 01110101 01100101 00100000 01100101   que e
0000072: 01110101 00100000 01110011 01101001 01101110 01110100  u sint
0000078: 01100001 00101100 00100000 01110000 01100001 01110011  a, pas
000007e: 01110011 01100001 00100000 01110010 01100101 01100001  sa rea
0000084: 01101100 01101101 01100101 01101110 01110100 01100101  lmente
000008a: 00101110 00001010 11000011 10001001 00100000 01110100  .... t
0000090: 01110101 01100100 01101111 00100000 01101001 01101100  udo il
0000096: 01110101 01110011 11000011 10100011 01101111 00100000  us..o 
000009c: 01100100 01100101 00100000 01110100 01100101 01110010  de ter
00000a2: 00100000 01110000 01100001 01110011 01110011 01100001   passa
00000a8: 01100100 01101111 00001010                             do.

Se você prefere uma solução mais limpa, use a seguinte expressão:

xxd -b -g0 carlosdrummonddeandrade.txt | cut -d' ' -f2
010011101100001110100011011011110010000001110000
011000010111001101110011011011110111010100001010
000010100010100001000011011000010111001001101100
011011110111001100100000010001000111001001110101
011011010110110101101111011011100110010000100000
011001000110010100100000010000010110111001100100
011100100110000101100100011001010010100100001010
000010100100100001101111011010100110010100100000
011100110110111101101101011011110111001100100000
011011010110000101101001011100110010000001110110
011010010111011001101111011100110010000001100100
011011110010000001110001011101010110010100100000
011011100111010101101110011000110110000100101110
000010100100110101100101011011100111010001101001
011100100110000100101100001000000110010101110011
011101000110000101110010011011010110111101110011
001000000111001111000011101100110111001100101110
000010100100111001100001011001000110000100101100
001000000111000101110101011001010010000001100101
011101010010000001110011011010010110111001110100
011000010010110000100000011100000110000101110011
011100110110000100100000011100100110010101100001
011011000110110101100101011011100111010001100101
001011100000101011000011100010010010000001110100
011101010110010001101111001000000110100101101100
011101010111001111000011101000110110111100100000
011001000110010100100000011101000110010101110010
001000000111000001100001011100110111001101100001
011001000110111100001010

Publicado por

Elias Praciano

Autor de tecnologia (livre, de preferência), apaixonado por programação e astronomia. Fã de séries, como "Rick and Morty" e "BoJack Horseman". Me siga no Twitter e vamos trocar ideias!

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *