4

Я немного озадачен, я запускаю Windows 7 Professional N 64-bit и только что скачал скомпилированную библиотеку Twitter Bootstrap со своей домашней страницы.

При извлечении мне было предложено сделать резервную копию моего ключа шифрования, и файлы выглядят так в проводнике Windows:

Снимок экрана, показывающий извлеченные файлы Twitter Bootstrap с зелеными именами файлов

Я не использую шифрование на этом компьютере, почему это происходит?

1 ответ1

3

Я столкнулся с этим во время загрузки Bootstrap этим утром и подумал, что, возможно, обнаружил какое-то вредоносное ПО ...

Согласно этой проблеме GitHub это потому, что ZIP-файл был создан на Mac.

Этот пост в блоге описывает проблему:

Это действительно забавно. Спецификация ZIP требует, чтобы программа / ОС, создающая zip-архив, включала тег, сообщающий о себе программе, пытающейся распаковать архив. Эта информация называется «version made by» и выглядит следующим образом:

      0 - MS-DOS and OS/2 (FAT / VFAT / FAT32 file systems)
      1 - Amiga                     2 - OpenVMS
      3 - UNIX                      4 - VM/CMS
      5 - Atari ST                  6 - OS/2 H.P.F.S.
      7 - Macintosh                 8 - Z-System
      9 - CP/M                     10 - Windows NTFS
     11 - MVS (OS/390 - Z/OS)      12 - VSE
     13 - Acorn Risc               14 - VFAT
     15 - alternate MVS            16 - BeOS
     17 - Tandem                   18 - OS/400
     19 - OS/X (Darwin)            20 thru 255 - unused

Интересно, что Mac OS отмечает теги zip-архивов, которые она создает, значением 3 (UNIX). Хорошо, пока проблем нет, наверное.

Проблема возникает, когда Windows запутывается в том, как интерпретировать атрибуты файла / папки. В FAT / NTFS эти значения хранятся в соответствии с этим определением констант атрибутов файла. Вы увидите, что FILE_ATTRIBUTE_ENCRYPTED имеет значение 0x4000.

Интересно, как Mac OS хранит свои атрибуты файлов в zip-архиве. Mac OS, являющаяся операционной системой на основе UNIX, использует систему атрибутов файлов / папок UNIX (и разрешения, но это тема для другого времени ...) .. Ну, просто так получилось, что в POSIX флаг для описания каталога / папки (S_IFDIR) по совпадению также имеет значение 0x4000. Таким образом, оказывается, что код распаковки zip не знал, что могут быть другие операционные системы, которые могут создавать zip-архивы…

Вы можете изменить это поведение?

Нет, но вы можете легко удалить флаг шифрования из извлеченных файлов / папок.

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