1

Я получаю данные каждый день от клиента, но не могу их прочитать. Это закодированный файл. Если я открою его напрямую с помощью cat , less или vi , я не смогу прочитать его.

Клиент поделился файлом данных как file_name.ZIP.zip (120 Мб). После того, как я извлек содержимое, я получил еще один zip-файл, такой как file_name.ZIP.zip (120 Мб) и file_name.ZIP (125 МБ). Еще раз извлекая я получаю file_name (4-5 ГБ) с типом файла application/octet-stream; charset=binary format .

ПРИМЕЧАНИЕ. Я получаю файл в нескольких различных форматах, таких как двоичный файл, ISO8859 и т.д.

Пример данных:

$ hexdump -C file_name | head 
00000000 40 40 40 40 60 60 40 40 40 40 40 40 40 40 40 40 |@@@@``@@@@@@@@@@|
00000010 40 40 40 40 40 00 00 00 00 00 00 00 00 00 00 00 |@@@@@...........|
00000020 00 00 00 00 00 60 60 40 40 40 40 40 40 60 60 40 |.....``@@@@@@``@|
00000030 40 40 40 40 40 40 40 40 40 40 00 00 00 00 00 00 |@@@@@@@@@@......|
00000040 00 00 00 00 00 00 00 00 00 00 60 60 40 40 40 40 |..........``@@@@|
00000050 40 40 60 60 40 40 40 40 40 40 40 40 40 40 00 00 |@@``@@@@@@@@@@..|
00000060 00 00 00 00 00 00 00 00 00 00 00 00 00 00 60 60 |..............``|
00000070 40 40 40 40 40 40 60 60 40 40 40 40 40 40 40 40 |@@@@@@``@@@@@@@@|
00000080 40 40 40 00 00 00 00 00 00 00 00 00 00 00 00 00 |@@@.............|
00000090 00 00 00 60 60 40 40 40 40 40 40 60 60 40 40 40 |...``@@@@@@``@@@|

Проверка формата / типа файла,

$ file -bi file_name
application/octet-stream; charset=binary

После этого я попытался изменить формат файла, используя iconv -l ,

iconv -f ascii -t utf-8 file_name > New_file_name.txt;

или же

iconv -f ISO8859-1 -t utf-8 file_name -o New_file_name.txt;

Как я могу декодировать или просмотреть этот файл в удобочитаемом формате?

Если я использую hexdump,

$ hexdump -C file_name | head
00000000  40 40 40 40 60 60 40 40  40 40 40 40 40 40 40 40  |@@@@``@@@@@@@@@@|
00000010  40 40 40 40 40 00 00 00  00 00 00 00 00 00 00 00  |@@@@@...........|
00000020  00 00 00 00 00 60 60 40  40 40 40 40 40 60 60 40  |.....``@@@@@@``@|
00000030  40 40 40 40 40 40 40 40  40 40 00 00 00 00 00 00  |@@@@@@@@@@......|
00000040  00 00 00 00 00 00 00 00  00 00 60 60 40 40 40 40  |..........``@@@@|
00000050  40 40 60 60 40 40 40 40  40 40 40 40 40 40 00 00  |@@``@@@@@@@@@@..|
00000060  00 00 00 00 00 00 00 00  00 00 00 00 00 00 60 60  |..............``|
00000070  40 40 40 40 40 40 60 60  40 40 40 40 40 40 40 40  |@@@@@@``@@@@@@@@|
00000080  40 40 40 00 00 00 00 00  00 00 00 00 00 00 00 00  |@@@.............|
00000090  00 00 00 60 60 40 40 40  40 40 40 60 60 40 40 40  |...``@@@@@@``@@@|

1 ответ1

2

Нельзя использовать iconv для нетекстовых файлов.

Что вы можете сделать, это использовать программу hex-dump для просмотра содержимого двоичного файла.

$ hexdump -C binary.data | head
00000000  7f 45 4c 46 02 01 01 00  00 00 00 00 00 00 00 00  |.ELF............|
00000010  02 00 3e 00 01 00 00 00  c0 0e 40 00 00 00 00 00  |..>.......@.....|
00000020  40 00 00 00 00 00 00 00  80 56 00 00 00 00 00 00  |@........V......|
00000030  00 00 00 00 40 00 38 00  08 00 40 00 1f 00 1e 00  |....@.8...@.....|
00000040  06 00 00 00 05 00 00 00  40 00 00 00 00 00 00 00  |........@.......|
00000050  40 00 40 00 00 00 00 00  40 00 40 00 00 00 00 00  |@.@.....@.@.....|
00000060  c0 01 00 00 00 00 00 00  c0 01 00 00 00 00 00 00  |................|
00000070  08 00 00 00 00 00 00 00  03 00 00 00 04 00 00 00  |................|
00000080  00 02 00 00 00 00 00 00  00 02 40 00 00 00 00 00  |..........@.....|
00000090  00 02 40 00 00 00 00 00  1c 00 00 00 00 00 00 00  |..@.............|

Во многих случаях это не будет сразу полезным, вам нужно сделать одну из двух вещей

  • Получите спецификацию для формата файла и получите или напишите декодер, который представляет данные в удобочитаемой форме.
  • Используйте любое знание предметной области и дедуктивного мышления, чтобы исследовать двоичное содержимое и проработать (обратный инжиниринг) структуру и значение. Это обычно тяжелая работа.

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