Я пришел через это в вопросе - Что в мире файл .el8? , Мне любопытно, как @slhck определил, что данный файл указывает на программное обеспечение - eLecta

4 ответа4

4

Моя догадка:

Скорее всего, "raw двоичный дамп" на самом деле означал hexdump - список, который показывает каждый байт в файле в виде шестнадцатеричных чисел вместо (или в дополнение к) самого байта.

Обычно это выглядит так:

...
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  .@.......UFB>...
0000130: 585f d353 2ef2 07ff d9e3 aeb6 7329 2192  X_.S........s)!.
0000140: e0a9 7d75 390f 3c16 def6 d806 469e af64  ..}u9.<.....F..d
...

В которой каждая строка имеет начальную позицию, 16 байтов в шестнадцатеричном формате и те же 16 байтов в "безопасной" форме (то есть байты между 0x20 и 0x7f, показанные непосредственно, остальные заменены на . ).

В Linux могут использоваться xxd , hd , hexdump -C или различные варианты od . В Windows есть несколько бинарных редакторов, таких как hiew или HxD.

3

Файл был просто открыт в текстовом редакторе. В данном случае в vi, который, вероятно, был ссылкой на Vim. Обычные символы ASCII были показаны. Непечатные символы были заменены знаками ^@ .

Цель этого состояла в том, чтобы увидеть, есть ли в файле магические числа . В этом случае файла не было, но он содержал путь к временному каталогу, в который была сделана запись. Нам повезло, потому что это содержало имя программы в пути.

Более продвинутой версией будет использование шестнадцатеричного редактора или настройка vi [m] для отображения данных в другом формате с помощью xxd.

3

Чтобы ответить на вопрос, который задает тема вашего сообщения (как получить «сырой двоичный дамп» файла?):

Файл a.a имеет букву «a», за которой следует CR LF.

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

xxd -b (двоичный) не поддерживает -ps (обычный), так что вы получите мусор (0000000: и a..)

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

Вот решение:

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

Производит

011000010000110100001010

Ниже работает.

Давайте посмотрим, как составляется 0000000: 01100001 00001101 00001010 a.. Итак, большой разрыв - это куча пробелов.

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

Я удалил длинную последовательность пробелов и все, что следует за ними. Так что это там:

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

Удалите от 0 до двоеточия включительно и удалите все остальные пробелы:

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

И вот есть решение

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

xxd доступен в Vim 7.x, а sed доступен в GnuWin32.

2

@slhck посмотрел на вопрос, содержащий дамп vi . Цитируя часть этого здесь:

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

В Windows получите бинарный дамп с HxD. Или вы можете просто попытаться открыть файл в блокноте. Аналогичное относится к * nix системам.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .