Como obter um despejo binário simples (bruto) de qualquer arquivo no Unix / Linux? [fechadas]

5

Li muitas perguntas semelhantes na comunidade do Stack Exchange, mas nenhuma delas aborda um despejo binário 'limpo'. Eu usei: xxd e sed combinações para tentar obter um despejo binário limpo de qualquer arquivo fornecido.

Deixe-me explicar do que estou falando. Você provavelmente já viu a saída de 'xxd -p', parece algo assim:

f4d37fd532171a4a3445be1bb03e7d6b75f3871ffee937aebc9eb2c9417f
f4e2fc8516e0a60a2c7e83c6a14c1a5e1b1e3f2ab9e12904cbd18aa2a4b9
f493d317c7a3ce71b7ab99fad4b64431d34866ced4d1f3e3f38136860009
fd08800c90491c8f7230d8b07936c4c0c29d2d12b138cdb2c544be9cc9fa
0e79d66faf375737966b67e7c7bf7efcf1703616a4643193d9aaafd63215
cf09a6e3e152bd01e9696b79f5faa5edd9f9b05628fdd9f77ee0dae1c5e8
dc2351d59693d84abac088cc4cd72916b5499830e4482e214bda0892f38c
60e9856fa111172a529222a7905e20b3c272a5b25c6fec9fbe386bb7f6cf

Não há números de linha, nenhum ASCII correspondente, nada. Apenas simples coleção antiga de bytes. Essa é a coisa que eu estou procurando, exceto que eu preciso do binário.

Existem duas opções: primeiro posso obter um despejo hexadecimal xxd simples como o mostrado acima e converter esse em binário, OU pode ser que haja alguma ferramenta ou utilitário no bash que eu não sabe sobre o que poderia fazer isso.

Isso é o que eu quero: um despejo binário é assim:

001101100011010100110110001100010011100001100001
011000010011000000111001011001000011010100110010
001101000011001101100001011000110110010100110000
001100100110010001100001001100000011010100110011
001110000110011000111001011000100110000100110010
011001010110010000110011001100010110001100001010

Qualquer uma das opções acima é adequada para mim, desde que eu obtenha um despejo binário simples e limpo de qualquer arquivo. Então, minha pergunta é como obtê-lo - sem quebras de linha ou espaços ou números de linha ou nada?

    
por learnerX 08.04.2015 / 21:02

2 respostas

5

Uma solução pragmática com xxd , cut e tr :

xxd -b -c1 file | cut -d" " -f2 | tr -d "\n"
    
por 08.04.2015 / 21:19
0

Uma solução perl:

perl -ne 'use bytes; while ($a=substr $_,0,1,"") {printf "%08b\n", ord $a}'

Remova o \n de tudo em uma impressão de longa duração.

    
por 08.04.2015 / 23:01