Saya mengalami ini saat mengunduh Bootstrap pagi ini dan berpikir saya mungkin telah mengambil beberapa malware ...
Agak lucu kok. Spesifikasi ZIP mengamanatkan bahwa suatu program / OS yang membuat arsip zip menyertakan sebuah tag yang memberitahukan tentang dirinya kepada program yang mencoba mendekompresi arsip. Informasi ini disebut "versi dibuat oleh", dan terlihat seperti ini:
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
Sekarang, yang menarik, tampaknya Mac OS menandai tag zip yang dibuatnya dengan nilai 3 (UNIX). Ok, sejauh ini tidak ada masalah, saya kira.
Masalahnya terjadi ketika Windows menjadi bingung tentang bagaimana menafsirkan atribut file / folder. Dalam FAT / NTFS, nilai-nilai ini disimpan sesuai dengan definisi Konstanta Atribut File. Anda akan melihat bahwa FILE_ATTRIBUTE_ENCRYPTED memiliki nilai 0x4000.
Bagian yang menarik adalah bagaimana Mac OS menyimpan atribut file dalam arsip zip. Mac OS, menjadi OS berbasis UNIX, menggunakan sistem atribut file / folder UNIX (dan izin, tapi itu topik untuk lain waktu ...) .. Ya, kebetulan bahwa pada POSIX, bendera untuk menggambarkan direktori / folder (S_IFDIR) secara kebetulan juga memiliki nilai 0x4000. Jadi ternyata kode dekompresi zip tidak menyadari bahwa mungkin ada sistem operasi lain di luar sana yang dapat membuat arsip zip ...
Bisakah Anda mengubah perilaku ini?
Tidak, tetapi Anda dapat menghapus flag enkripsi dari file / folder yang diekstraksi dengan mudah.