Como você obtém 'despejo binário bruto' de um arquivo?

0

Eu passei por isso em uma pergunta - O que no mundo é um arquivo .el8? . Estou curioso como @slhck determinou que o arquivo em questão estava apontando para o software - eLecta

    
por Shashank Sabniveesu 25.08.2013 / 20:11

4 respostas

4

Meu palpite:

É mais provável que "despejo binário bruto" realmente significasse um hexdump - uma listagem que mostra cada byte no arquivo como números hexadecimais, em vez de (ou além de) o próprio byte.

Geralmente é assim:

...
00000a0: 6d65 3233 3a6d 6564 6961 7769 6b69 2d31  me23:mediawiki-1
00000b0: 2e31 352e 312e 7461 722e 677a 3132 3a70  .15.1.tar.gz12:p
00000c0: 6965 6365 206c 656e 6774 6869 3332 3736  iece lengthi3276
00000d0: 3865 363a 7069 6563 6573 3636 3230 3ae9  8e6:pieces6620:.
00000e0: b08a 7ef8 00f8 d8b4 a53e 15e3 6bd6 e2c4  ..~......>..k...
00000f0: a7e4 1aa6 c67f 7106 cd3e 1672 decc b5c7  ......q..>.r....
0000100: 455c a86d 4751 379a f59f 3665 1e8c 128a  E\.mGQ7...6e....
0000110: dec4 e670 ca0f e960 353b 48fe 3dfb c455  ...p...'5;H.=..U
0000120: f940 e102 13d6 8385 1655 4642 3e83 060b  [email protected]>...
0000130: 585f d353 2ef2 07ff d9e3 aeb6 7329 2192  X_.S........s)!.
0000140: e0a9 7d75 390f 3c16 def6 d806 469e af64  ..}u9.<.....F..d
...

Em que cada linha tem uma posição inicial, 16 bytes em hexadecimais, e os mesmos 16 bytes em forma "segura" (isto é, bytes entre 0x20 e 0x7f mostrados diretamente, o restante substituído por . 's).

No Linux, xxd , hd , hexdump -C ou vários encantamentos de od podem ser usados. No Windows, vários editores binários como hiew ou HxD.

    
por 25.08.2013 / 20:31
3

O arquivo foi aberto simplesmente em um editor de texto. Neste caso, em vi , que provavelmente era um link para Vim . Caracteres ASCII regulares foram mostrados. Caracteres não imprimíveis foram substituídos pelos sinais ^@ .

O objetivo disso era ver se o arquivo tinha números mágicos nele. Nesse caso, o arquivo não tinha nenhum, mas continha o caminho para o diretório temporário onde a gravação foi feita. Nós tivemos sorte porque continha o nome do programa no caminho.

Uma versão mais avançada seria usar um editor hexadecimal ou configure vi [m] para mostrar os dados em um formato diferente com xxd .

    
por 25.08.2013 / 20:31
3

Para responder à pergunta que o assunto do seu post pergunta (como você obtém um 'despejo binário bruto' de um arquivo?):

O arquivo a.a tem a letra 'a' seguida por CR LF .

C:\Program Files\Vim\vim73
>type a.a
a

xxd -b (binário) não suporta -ps (simples), então você recebe algum lixo (o 0000000: e o a.. )

C:\Program Files\Vim\vim73
>xxd -b a.a
0000000: 01100001 00001101 00001010                             a..

Aqui está a solução:

xxd -b a.a | sed -r "s/\d32{3,}.*//g" | sed "s/.*://" | sed "s/\d32//g"

Produz

011000010000110100001010

Abaixo está o trabalho.

Vamos ver como 0000000: 01100001 00001101 00001010 a.. é composto. OK, então a grande lacuna é um monte de espaços.

C:\Program Files\Vim\vim73
>xxd -b a.a | od -tx1
0000000 30 30 30 30 30 30 30 3a 20 30 31 31 30 30 30 30
0000020 31 20 30 30 30 30 31 31 30 31 20 30 30 30 30 31
0000040 30 31 30 20 20 20 20 20 20 20 20 20 20 20 20 20
0000060 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0000100 61 2e 2e 0d 0a
0000105

Eu removi a longa seqüência de espaços e tudo o que os segue. Então está chegando lá:

C:\Program Files\Vim\vim73
>xxd -b a.a | sed -r "s/\d32{3,}.*//g"
0000000: 01100001 00001101 00001010

Remova os 0s até e incluindo os dois pontos e remova todos os outros espaços:

C:\Program Files\Vim\vim73
xxd -b a.a | sed -r "s/\d32{3,}.*//g" | sed "s/.*://"
 01100001 00001101 00001010

C:\Program Files\Vim\vim73
>xxd -b a.a | sed -r "s/\d32{3,}.*//g" | sed "s/.*://" | sed "s/\d32//g"
011000010000110100001010

E então há uma solução

C:\Program Files\Vim\vim73
>xxd -b a.a | sed -r "s/\d32{3,}.*//g" | sed "s/.*://" | sed "s/\d32//g"
011000010000110100001010

xxd está disponível em Vim 7.xe sed está disponível em GnuWin32 .

    
por 30.08.2013 / 19:28
2

@slhck analisou a questão, contendo um vi dump. Citando parte disso aqui:

^@^@^@^@^@^@^@^@ò½^@^@;C:\eLecta\Server\TempRecordings\U734806R4970S3962792726.el8¢s³wÕs³w^@^@^@^@è(D

No Windows, obtenha um despejo binário com HxD . Ou você pode tentar abrir o arquivo no Bloco de Notas. Similar se aplica aos sistemas * nix.

    
por 25.08.2013 / 20:14