Zip
.ZIP is an archive file format that supports lossless data compression.
TODO describe ZIP64
File format
| ZIP | ZIP64 | |
|---|---|---|
| Maximum archive size (bytes) | 4,294,967,295 | 18,446,755,073,709,551,615 ( 264-1 ) |
| Maximum object size in archive (bytes) | 4,294,967,295 | 18,446,755,073,709,551,615 ( 264-1 ) |
| Maximum objects in archive | 65,535 | 18,446,755,073,709,551,615 ( 264-1 ) |
| Maximum central directory size (bytes) | 4,294,967,295 | 18,446,755,073,709,551,615 ( 264-1 ) |
| Maximum spanned archive segments | 999 | 4,294,967,294 |
| Maximum split archive segments | 65,535 | 4,294,967,294 |
| Overall ZIP File Structure |
|---|
| Files |
| local file header 1 |
| encryption header 1 |
| file data 1 |
| data descriptor 1 |
| ... |
| local file header n |
| encryption header n |
| file data n |
| data descriptor n |
| Central directory |
| archive decryption header |
| archive extra data record |
| central directory header 1 |
| ... |
| central directory header n |
| zip64 end of central directory record |
| zip64 end of central directory locator |
| end of central directory record |
| Characteristics | Description |
|---|---|
| Byte order | little-endian |
| Date and time values | |
| Character strings |
Central directory (archived) file header
The central directory (archived) file header is variable of size and consists of:
Offset |
Size |
Value |
Description |
|---|---|---|---|
0 |
4 |
"PK\x01\x02" |
Signature |
4 |
2 |
Creator version |
|
6 |
2 |
Extractor version |
|
8 |
2 |
Flags |
|
10 |
2 |
Last modification time |
|
12 |
2 |
Last modification date |
|
14 |
4 |
Checksum (CRC-32) |
|
18 |
4 |
Uncompressed data size |
|
22 |
4 |
Compressed data size |
|
26 |
2 |
File name size |
|
28 |
2 |
Extra field size |
|
30 |
2 |
File comment size |
|
32 |
2 |
Segment file (disk) number |
|
34 |
2 |
internal file attributes |
|
36 |
4 |
external file attributes |
|
40 |
4 |
local header offset |
|
44 |
... |
File name |
|
... |
... |
Extra field |
|
... |
... |
File comment |
Creator version
The creator (or version made by) is 2 bytes of size and consists of:
Offset |
Size |
Value |
Description |
|---|---|---|---|
0 |
1 |
ZIP format version |
|
1 |
1 |
Creator system indicator |
Creator system indicator
| Value | Identifier | Description |
|---|---|---|
| 0 | MS-DOS and OS/2 (FAT / VFAT / FAT32 file systems) or compatible 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 - 255 | unused |
Internal file attributes
Value |
Identifier |
Description |
|---|---|---|
0x01 |
If set the uncompressed data needs to be treated as text instead
of binary data. |
|
0x02 |
If set the file contains control fields for mainframe data transfer support. |
External file attributes
The external attributes are creator system dependent.
The external attributes MS-DOS (0) is 4 bytes of size and consists of:
| Offset | Size | Value | Description |
|---|---|---|---|
| 0 | 1 | FAT (MS-DOS) file attributes. | |
| 1 | 3 | Unknown |
The external attributes UNIX (3) is 4 bytes of size and consists of:
Offset |
Size |
Value |
Description |
|---|---|---|---|
0 |
1 |
FAT (MS-DOS) file attributes. |
|
1 |
1 |
Unknown |
|
2 |
16 bits |
The UNIX mode (or permission). |
External Links
- .ZIP File Format Specification, PKWARE Inc., September 1, 2012
- Wikipedia: Zip (file format)