[Back to ARCHIVES SWAG index] [Back to Main SWAG index] [Original]

    System of Origin : IBM

    Original author : Phil Katz

    FILE FORMAT
    -----------

    Files stored in arbitrary order.  Large zipfiles can span multiple
    diskette media.

              Local File Header 1
                        file 1 extra field
                        file 1 comment
                   file data 1
              Local File Header 2
                        file 2 extra field
                        file 2 comment
                   file data 2
              .
              .
              .
              Local File Header n
                        file n extra field
                        file n comment
                   file data n
         Central Directory
                   central extra field
                   central comment
              End of Central Directory
                        end comment
    EOF

    LOCAL FILE HEADER
    -----------------

    OFFSET LABEL       TYP  VALUE        DESCRIPTION
    ------ ----------- ---- ----------- ----------------------------------
    00     ZIPLOCSIG   HEX  04034B50    ;Local File Header Signature
    04     ZIPVER      DW   0000        ;Version needed to extract
    06     ZIPGENFLG   DW   0000        ;General purpose bit flag
    08     ZIPMTHD     DW   0000        ;Compression method
    0A     ZIPTIME     DW   0000        ;Last mod file time (MS-DOS)
    0C     ZIPDATE     DW   0000        ;Last mod file date (MS-DOS)
    0E     ZIPCRC      HEX  00000000    ;CRC-32
    12     ZIPSIZE     HEX  00000000    ;Compressed size
    16     ZIPUNCMP    HEX  00000000    ;Uncompressed size
    1A     ZIPFNLN     DW   0000        ;Filename length
    1C     ZIPXTRALN   DW   0000        ;Extra field length
    1E     ZIPNAME     DS   ZIPFNLN     ;filename
    --     ZIPXTRA     DS   ZIPXTRALN   ;extra field

    CENTRAL DIRECTORY STRUCTURE
    ---------------------------

    OFFSET LABEL       TYP  VALUE        DESCRIPTION
    ------ ----------- ---- ----------- ----------------------------------
    00     ZIPCENSIG   HEX  02014B50    ;Central file header signature
    04     ZIPCVER     DB   00          ;Version made by
    05     ZIPCOS      DB   00          ;Host operating system
    06     ZIPCVXT     DB   00          ;Version needed to extract
    07     ZIPCEXOS    DB   00          ;O/S of version needed for extraction
    08     ZIPCFLG     DW   0000        ;General purpose bit flag
    0A     ZIPCMTHD    DW   0000        ;Compression method
    0C     ZIPCTIM     DW   0000        ;Last mod file time (MS-DOS)
    0E     ZIPCDAT     DW   0000        ;Last mod file date (MS-DOS)
    10     ZIPCCRC     HEX  00000000    ;CRC-32
    14     ZIPCSIZ     HEX  00000000    ;Compressed size
    18     ZIPCUNC     HEX  00000000    ;Uncompressed size
    1C     ZIPCFNL     DW   0000        ;Filename length
    1E     ZIPCXTL     DW   0000        ;Extra field length
    20     ZIPCCML     DW   0000        ;File comment length
    22     ZIPDSK      DW   0000        ;Disk number start
    24     ZIPINT      DW   0000        ;Internal file attributes

           LABEL       BIT        DESCRIPTION
           ----------- --------- -----------------------------------------
           ZIPINT         0       if = 1, file is apparently an ASCII or
                                  text file
                          0       if = 0, file apparently contains binary
                                  data

                         1-7      unused in version 1.0.

    26     ZIPEXT      HEX  00000000    ;External file attributes, host
                                        ;system dependent
    2A     ZIPOFST     HEX  00000000    ;Relative offset of local header
                                        ;from the start of the first disk
                                        ;on which this file appears
    2E     ZIPCFN      DS   ZIPCFNL     ;Filename or path - should not
                                        ;contain a drive or device letter,
                                        ;or a leading slash. All slashes
                                        ;should be forward slashes '/'
    --     ZIPCXTR     DS   ZIPCXTL     ;extra field
    --     ZIPCOM      DS   ZIPCCML     ;file comment

    END OF CENTRAL DIR STRUCTURE
    ----------------------------

    OFFSET LABEL       TYP  VALUE        DESCRIPTION
    ------ ----------- ---- ----------- ----------------------------------
    00     ZIPESIG     HEX  06064B50    ;End of central dir signature
    04     ZIPEDSK     DW   0000        ;Number of this disk
    06     ZIPECEN     DW   0000        ;Number of disk with start central dir
    08     ZIPENUM     DW   0000        ;Total number of entries in central dir
                                        ;on this disk
    0A     ZIPECENN    DW   0000        ;total number entries in central dir
    0C     ZIPECSZ     HEX  00000000    ;Size of the central directory
    10     ZIPEOFST    HEX  00000000    ;Offset of start of central directory
                                        ;with respect to the starting disk
                                        ;number
    14     ZIPECOML    DW   0000        ;zipfile comment length
    16     ZIPECOM     DS   ZIPECOML    ;zipfile comment

    ZIP VALUES LEGEND
    -----------------

           HOST O/S

           VALUE  DESCRIPTION               VALUE  DESCRIPTION
           ----- -------------------------- ----- ------------------------
           0      MS-DOS and OS/2 (FAT)     5      Atari ST
           1      Amiga                     6      OS/2 1.2 extended file sys
           2      VMS                       7      Macintosh
           3      *nix                      8 thru
           4      VM/CMS                    255    unused

           GENERAL PURPOSE BIT FLAG

           LABEL       BIT        DESCRIPTION
           ----------- --------- -----------------------------------------
           ZIPGENFLG      0       If set, file is encrypted
              or          1       If file Imploded and this bit is set, 8K
           ZIPCFLG                sliding dictionary was used. If clear, 4K
                                  sliding dictionary was used.
                          2       If file Imploded and this bit is set, 3
                                  Shannon-Fano trees were used. If clear, 2
                                  Shannon-Fano trees were used.
                         3-4      unused
                         5-7      used internaly by ZIP

           Note:  Bits 1 and 2 are undefined if the compression method is
                  other than type 6 (Imploding).

           COMPRESSION METHOD

           NAME        METHOD  DESCRIPTION
           ----------- ------ --------------------------------------------
           Stored         0    No compression used
           Shrunk         1    LZW, 8K buffer, 9-13 bits with partial clearing
           Reduced-1      2    Probalistic compression, L(X) = lower 7 bits
           Reduced-2      3    Probalistic compression, L(X) = lower 6 bits
           Reduced-3      4    Probalistic compression, L(X) = lower 5 bits
           Reduced-4      5    Probalistic compression, L(X) = lower 4 bits
           Imploded       6    2 Shanno-Fano trees, 4K sliding dictionary
           Imploded       7    3 Shanno-Fano trees, 4K sliding dictionary
           Imploded       8    2 Shanno-Fano trees, 8K sliding dictionary
           Imploded       9    3 Shanno-Fano trees, 8K sliding dictionary

           EXTRA FIELD

           OFFSET LABEL       TYP  VALUE       DESCRIPTION
           ------ ----------- ---- ---------- ----------------------------
           00     EX1ID       DW   0000        ;0-31 reserved by PKWARE
           02     EX1LN       DW   0000
           04     EX1DAT      DS   EX1LN       ;Specific data for individual
           .                                   ;files. Data field should begin
           .                                   ;with a s/w specific unique ID
           EX1LN+4
                  EXnID       DW   0000
                  EXnLN       DW   0000

                  EXnDAT      DS   EXnLN       ;entire header may not exceed 64k

[Back to ARCHIVES SWAG index] [Back to Main SWAG index] [Original]