Zip-архив содержит файлы без имен, как его распаковать? - PullRequest
0 голосов
/ 07 марта 2019

У меня есть ZIP-архив с несколькими фотографиями. Проблема в том, что я не могу разархивировать все файлы из этого архива.

Команда распаковать:

unzip archive.zip
Archive:  archive.zip
mapname:  conversion of  failed
mapname:  conversion of  failed
mapname:  conversion of  failed
mapname:  conversion of  failed
mapname:  conversion of  failed
mapname:  conversion of  failed
mapname:  conversion of  failed
mapname:  conversion of  failed
mapname:  conversion of  failed
mapname:  conversion of  failed
mapname:  conversion of  failed
mapname:  conversion of  failed

Список файлов внутри ZIP-архива (каждый файл без имени ...):

unzip -l archive.zip 
Archive:  archive.zip
  Length      Date    Time    Name
---------  ---------- -----   ----
    61684  03-07-2019 10:01   
    55901  03-07-2019 10:01   
    71678  03-07-2019 10:01   
    69684  03-07-2019 10:01   
    57131  03-07-2019 10:01   
    95984  03-07-2019 10:01   
    69633  03-07-2019 10:01   
    73401  03-07-2019 10:01   
    79661  03-07-2019 10:01   
    53126  03-07-2019 10:01   
    68691  03-07-2019 10:01   
    66707  03-07-2019 10:01   
---------                     -------
   823281                     12 files

Разархивировать команду тестирования:

unzip -t archive.zip 
Archive:  archive.zip
    testing:                          OK
    testing:                          OK
    testing:                          OK
    testing:                          OK
    testing:                          OK
    testing:                          OK
    testing:                          OK
    testing:                          OK
    testing:                          OK
    testing:                          OK
    testing:                          OK
    testing:                          OK

Если я попытаюсь использовать команду конвейера unzip, то у меня будет один файл JPEG, который содержит все фотографии архива.

unzip -p archive.zip | cat > $(date +%s%3N).jpeg

Пожалуйста, есть ли шанс распаковать такой архив?


ОБНОВЛЕНО

Когда показывать ZIP архив в HEX-редакторе, то я вижу, что в архивных файлах не заданы имена. На изображении находится конец ZIP-файла, он содержит информацию о каждом файле архива. Выбранные байты на изображении представляют собой информационный контейнер одного архивного файла. Information Bytes of one of archived file

1 Ответ

0 голосов
/ 07 марта 2019

Во-первых, ваша локаль в оболочке не должна быть ASCII, я думаю, как простой пользователь Linux.

locale

Это может быть кодировка архива.На ум приходят большие байты UTF-16 / UTF-32, так как для букв ASCII предшествующий нуль-байт будет содержать пустую строку.записи и выбрав свое имя для хранения каждого файла.Java ZipInputStream подойдет.

Я думаю, что это тот случай, когда кто-то запрограммировал заархивировать каталог, но забыл установить имя файла записи.

...