Skip to content

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 Compression method
12 2 Last modification time
14 2 Last modification date
16 4 Checksum (CRC-32)
20 4 Compressed data size
24 4 Uncompressed data size
28 2 File name size
30 2 Extra field size
32 2 File comment size
34 2 Segment file (disk) number
36 2 Internal file attributes
38 4 External file attributes
42 4 Local header offset, which is relative to the start of the segment file it is stored in
46 ... 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
The value is stored as: ( major number x 10 ) + minor number

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.
This flag hints end-of-line conversion for cross-platform text files but does not enforce it.

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).
The value seems to be similar to stat.st_mode value.