vendor/file: upgrade from 5.40 to 5.41
[dragonfly.git] / contrib / file / magic / Magdir / compress
1 #------------------------------------------------------------------------------
2 # $File: compress,v 1.82 2021/06/30 08:11:29 christos Exp $
3 # compress:  file(1) magic for pure-compression formats (no archives)
4 #
5 # compress, gzip, pack, compact, huf, squeeze, crunch, freeze, yabba, etc.
6 #
7 # Formats for various forms of compressed data
8 # Formats for "compress" proper have been moved into "compress.c",
9 # because it tries to uncompress it to figure out what's inside.
10
11 # standard unix compress
12 0       string          \037\235        compress'd data
13 !:mime  application/x-compress
14 !:apple LZIVZIVU
15 >2      byte&0x80       >0              block compressed
16 >2      byte&0x1f       x               %d bits
17
18 # gzip (GNU zip, not to be confused with Info-ZIP or PKWARE zip archiver)
19 # URL: https://en.wikipedia.org/wiki/Gzip
20 # Reference: https://tools.ietf.org/html/rfc1952
21 # Update: Joerg Jenderek, Apr 2019
22 #   Edited by Chris Chittleborough <cchittleborough@yahoo.com.au>, March 2002
23 #       * Original filename is only at offset 10 if "extra field" absent
24 #       * Produce shorter output - notably, only report compression methods
25 #         other than 8 ("deflate", the only method defined in RFC 1952).
26 # Note: find defs -iname '*.trid.xml' -exec grep -q '<Bytes>1F8B08' {} \; -ls
27 # TODO:
28 # FBR   Blueberry FlashBack screen Record       https://www.flashbackrecorder.com/
29 # KPR   KOffice/Calligra KPresenter             application/x-kpresenter
30 # KPT   KOffice/Calligra KPresenter template?   application/x-kpresenter
31 # SAV   Diggles Saved Game File                 http://www.innonics.com
32 # SAV   FarCry (demo) saved game                http://www.farcry-thegame.com
33 # DAT   ZOAGZIP game data format                http://en.wikipedia.org/wiki/SD_Gundam_Capsule_Fighter
34 0       string          \037\213
35 # to display gzip compressed (strength=100=2*50) before other (strength=50)?
36 #!:strength * 2
37 # no FNAME and FCOMMENT bit implies no file name/comment. That means only binary
38 >3      byte&0x18       =0
39 # For binary gzipped no ASCII text should occur
40 #       mcd-monu-cad.trid.xml
41 >>10    string          MCD                     Monu-Cad Drawing, Component or Font
42 #>>36   string          Created\ with\ MONU-CAD 
43 #!:mime application/octet-stream
44 # http://fileformats.archiveteam.org/wiki/Monu-CAD
45 #       http://www.monucad.com/downloads/FullDemo-2005.EXE
46 #       /HANDS96.MCC    Component
47 #       /DEMO_DD01.MCD  Drawing
48 #       /MCALF020.FNT   Font
49 !:ext   mcc/mcd/fnt
50 # http://www.generalcadd.com
51 >>10    string          GXD                     General CADD, Drawing or Component
52 #!:mime application/octet-stream
53 #       /gxc/BUILDINGEDGE.gxc                   Component
54 #       /gxd/HOCKETT-STPAUL-WRHSE.gxd           Drawing
55 #       /gxd/POWERLAND-MILL-ADD-11.gxd          Drawing         v9.1.06
56 !:ext   gxc/gxd
57 #>>>13  ubyte           0                       \b, version 0
58 >>>13   string          09                      \b, version 9
59 # other gzipped binary like gzipped tar, VirtualBox extension package,...
60 >>10    default         x               gzip compressed data
61 !:mime  application/gzip
62 >>>0    use     gzip-info
63 # size of the original (uncompressed) input data modulo 2^32
64 >>-0    offset          >48
65 >>>-4   ulelong         x               \b, original size modulo 2^32 %u
66 >>-0    offset          <48             \b, truncated
67 # gzipped TAR or VirtualBox extension package
68 #!:mime application/x-compressed-tar
69 #!:mime application/x-virtualbox-vbox-extpack
70 # https://www.w3.org/TR/SVG/mimereg.html
71 #!:mime image/image/svg+xml-compressed
72 #       zlib.3.gz
73 #       microcode-20180312.tgz
74 #       tpz same as tgz
75 #       lua-md5_1.2-1_i386_i486.ipk     https://en.wikipedia.org/wiki/Opkg
76 #       Oracle_VM_VirtualBox_Extension_Pack-5.0.12-104815.vbox-extpack
77 !:ext   gz/tgz/tpz/ipk/vbox-extpack/svgz
78 # FNAME/FCOMMENT bit implies file name/comment as iso-8859-1 text
79 >3      byte&0x18       >0              gzip compressed data
80 !:mime  application/gzip
81 # gzipped tar, gzipped Abiword document
82 #!:mime application/x-compressed-tar
83 #!:mime application/x-abiword-compressed
84 #!:mime image/image/svg+xml-compressed
85 #       kleopatra_splashscreen.svgz     gzipped .svg
86 !:ext   gz/tgz/tpz/zabw/svgz
87 >>0     use     gzip-info
88 # size of the original (uncompressed) input data modulo 2^32
89 >>-0    offset          >48
90 >>>-4   ulelong         x               \b, original size modulo 2^32 %u
91 >>-0    offset          <48             \b, truncated
92 #       display information of gzip compressed files
93 0       name                            gzip-info
94 #>2     byte            x               THIS iS GZIP
95 >2      byte            <8              \b, reserved method
96 >2      byte            >8              \b, unknown method
97 >3      byte            &0x01           \b, ASCII
98 >3      byte            &0x02           \b, has CRC
99 >3      byte            &0x04           \b, extra field
100 >3      byte&0xC        =0x08
101 >>10    string          x               \b, was "%s"
102 >3      byte            &0x10           \b, has comment
103 >3      byte            &0x20           \b, encrypted
104 >4      ledate          >0              \b, last modified: %s
105 >8      byte            2               \b, max compression
106 >8      byte            4               \b, max speed
107 >9      byte            =0x00           \b, from FAT filesystem (MS-DOS, OS/2, NT)
108 >9      byte            =0x01           \b, from Amiga
109 >9      byte            =0x02           \b, from VMS
110 >9      byte            =0x03           \b, from Unix
111 >9      byte            =0x04           \b, from VM/CMS
112 >9      byte            =0x05           \b, from Atari
113 >9      byte            =0x06           \b, from HPFS filesystem (OS/2, NT)
114 >9      byte            =0x07           \b, from MacOS
115 >9      byte            =0x08           \b, from Z-System
116 >9      byte            =0x09           \b, from CP/M
117 >9      byte            =0x0A           \b, from TOPS/20
118 >9      byte            =0x0B           \b, from NTFS filesystem (NT)
119 >9      byte            =0x0C           \b, from QDOS
120 >9      byte            =0x0D           \b, from Acorn RISCOS
121 # size of the original (uncompressed) input data modulo 2^32
122 #>-4    ulelong         x               \b, original size modulo 2^32 %u
123 #ERROR: line 114: non zero offset 1048572 at level 1
124
125 # packed data, Huffman (minimum redundancy) codes on a byte-by-byte basis
126 0       string          \037\036        packed data
127 !:mime  application/octet-stream
128 >2      belong          >1              \b, %d characters originally
129 >2      belong          =1              \b, %d character originally
130 #
131 # This magic number is byte-order-independent.
132 0       short           0x1f1f          old packed data
133 !:mime  application/octet-stream
134
135 # XXX - why *two* entries for "compacted data", one of which is
136 # byte-order independent, and one of which is byte-order dependent?
137 #
138 0       short           0x1fff          compacted data
139 !:mime  application/octet-stream
140 # This string is valid for SunOS (BE) and a matching "short" is listed
141 # in the Ultrix (LE) magic file.
142 0       string          \377\037        compacted data
143 !:mime  application/octet-stream
144 0       short           0145405         huf output
145 !:mime  application/octet-stream
146
147 # bzip2
148 0       string          BZh             bzip2 compressed data
149 !:mime  application/x-bzip2
150 >3      byte            >47             \b, block size = %c00k
151
152 # bzip  a block-sorting file compressor
153 #       by Julian Seward <sewardj@cs.man.ac.uk> and others
154 0       string          BZ0             bzip compressed data
155 !:mime  application/x-bzip
156 >3      byte            >47             \b, block size = %c00k
157
158 # lzip
159 0       string          LZIP            lzip compressed data
160 !:mime application/x-lzip
161 >4      byte            x               \b, version: %d
162
163 # squeeze and crunch
164 # Michael Haardt <michael@cantor.informatik.rwth-aachen.de>
165 0       beshort         0x76FF          squeezed data,
166 >4      string          x               original name %s
167 0       beshort         0x76FE          crunched data,
168 >2      string          x               original name %s
169 0       beshort         0x76FD          LZH compressed data,
170 >2      string          x               original name %s
171
172 # Freeze
173 0       string          \037\237        frozen file 2.1
174 0       string          \037\236        frozen file 1.0 (or gzip 0.5)
175
176 # SCO compress -H (LZH)
177 0       string          \037\240        SCO compress -H (LZH) data
178
179 # European GSM 06.10 is a provisional standard for full-rate speech
180 # transcoding, prI-ETS 300 036, which uses RPE/LTP (residual pulse
181 # excitation/long term prediction) coding at 13 kbit/s.
182 #
183 # There's only a magic nibble (4 bits); that nibble repeats every 33
184 # bytes.  This isn't suited for use, but maybe we can use it someday.
185 #
186 # This will cause very short GSM files to be declared as data and
187 # mismatches to be declared as data too!
188 #0      byte&0xF0       0xd0            data
189 #>33    byte&0xF0       0xd0
190 #>66    byte&0xF0       0xd0
191 #>99    byte&0xF0       0xd0
192 #>132   byte&0xF0       0xd0            GSM 06.10 compressed audio
193
194 # lzop from <markus.oberhumer@jk.uni-linz.ac.at>
195 0       string          \x89\x4c\x5a\x4f\x00\x0d\x0a\x1a\x0a    lzop compressed data
196 >9      beshort         <0x0940
197 >>9     byte&0xf0       =0x00           - version 0.
198 >>9     beshort&0x0fff  x               \b%03x,
199 >>13    byte            1               LZO1X-1,
200 >>13    byte            2               LZO1X-1(15),
201 >>13    byte            3               LZO1X-999,
202 ## >>22 bedate          >0              last modified: %s,
203 >>14    byte            =0x00           os: MS-DOS
204 >>14    byte            =0x01           os: Amiga
205 >>14    byte            =0x02           os: VMS
206 >>14    byte            =0x03           os: Unix
207 >>14    byte            =0x05           os: Atari
208 >>14    byte            =0x06           os: OS/2
209 >>14    byte            =0x07           os: MacOS
210 >>14    byte            =0x0A           os: Tops/20
211 >>14    byte            =0x0B           os: WinNT
212 >>14    byte            =0x0E           os: Win32
213 >9      beshort         >0x0939
214 >>9     byte&0xf0       =0x00           - version 0.
215 >>9     byte&0xf0       =0x10           - version 1.
216 >>9     byte&0xf0       =0x20           - version 2.
217 >>9     beshort&0x0fff  x               \b%03x,
218 >>15    byte            1               LZO1X-1,
219 >>15    byte            2               LZO1X-1(15),
220 >>15    byte            3               LZO1X-999,
221 ## >>25 bedate          >0              last modified: %s,
222 >>17    byte            =0x00           os: MS-DOS
223 >>17    byte            =0x01           os: Amiga
224 >>17    byte            =0x02           os: VMS
225 >>17    byte            =0x03           os: Unix
226 >>17    byte            =0x05           os: Atari
227 >>17    byte            =0x06           os: OS/2
228 >>17    byte            =0x07           os: MacOS
229 >>17    byte            =0x0A           os: Tops/20
230 >>17    byte            =0x0B           os: WinNT
231 >>17    byte            =0x0E           os: Win32
232
233 # 4.3BSD-Quasijarus Strong Compression
234 # https://minnie.tuhs.org/Quasijarus/compress.html
235 0       string          \037\241        Quasijarus strong compressed data
236
237 # From: Cory Dikkers <cdikkers@swbell.net>
238 0       string          XPKF            Amiga xpkf.library compressed data
239 0       string          PP11            Power Packer 1.1 compressed data
240 0       string          PP20            Power Packer 2.0 compressed data,
241 >4      belong          0x09090909      fast compression
242 >4      belong          0x090A0A0A      mediocre compression
243 >4      belong          0x090A0B0B      good compression
244 >4      belong          0x090A0C0C      very good compression
245 >4      belong          0x090A0C0D      best compression
246
247 # 7-zip archiver, from Thomas Klausner (wiz@danbala.tuwien.ac.at)
248 # https://www.7-zip.org or DOC/7zFormat.txt
249 #
250 0       string          7z\274\257\047\034      7-zip archive data,
251 >6      byte            x                       version %d
252 >7      byte            x                       \b.%d
253 !:mime  application/x-7z-compressed
254 !:ext 7z/cb7
255
256 # Type: LZMA
257 0       lelong&0xffffff =0x5d
258 >12     leshort         0xff                    LZMA compressed data,
259 !:mime  application/x-lzma
260 >>5     lequad          =0xffffffffffffffff     streamed
261 >>5     lequad          !0xffffffffffffffff     non-streamed, size %lld
262 >12     leshort         0                       LZMA compressed data,
263 >>5     lequad          =0xffffffffffffffff     streamed
264 >>5     lequad          !0xffffffffffffffff     non-streamed, size %lld
265
266 # http://tukaani.org/xz/xz-file-format.txt
267 0       ustring         \xFD7zXZ\x00            XZ compressed data, checksum
268 !:strength * 2
269 !:mime  application/x-xz
270 >7      byte&0xf        0x0                     NONE
271 >7      byte&0xf        0x1                     CRC32
272 >7      byte&0xf        0x4                     CRC64
273 >7      byte&0xf        0xa                     SHA-256
274
275 # https://github.com/ckolivas/lrzip/blob/master/doc/magic.header.txt
276 0       string          LRZI                    LRZIP compressed data
277 >4      byte            x                       - version %d
278 >5      byte            x                       \b.%d
279 >22     byte            1                       \b, encrypted
280 !:mime  application/x-lrzip
281
282 # https://fastcompression.blogspot.fi/2013/04/lz4-streaming-format-final.html
283 0       lelong          0x184d2204      LZ4 compressed data (v1.4+)
284 !:mime  application/x-lz4
285 # Added by osm0sis@xda-developers.com
286 0       lelong          0x184c2103      LZ4 compressed data (v1.0-v1.3)
287 !:mime  application/x-lz4
288 0       lelong          0x184c2102      LZ4 compressed data (v0.1-v0.9)
289 !:mime  application/x-lz4
290
291 # Zstandard/LZ4 skippable frames
292 # https://github.com/facebook/zstd/blob/dev/zstd_compression_format.md
293 0         lelong&0xFFFFFFF0  0x184D2A50
294 >(4.l+8)  indirect      x
295
296 # Zstandard Dictionary ID subroutine
297 0     name        zstd-dictionary-id
298 # Single Segment = True
299 >0    byte        &0x20   \b, Dictionary ID:
300 >>0   byte&0x03   0       None
301 >>0   byte&0x03   1
302 >>>1  byte        x       %u
303 >>0   byte&0x03   2
304 >>>1  leshort     x       %u
305 >>0   byte&0x03   3
306 >>>1  lelong      x       %u
307 # Single Segment = False
308 >0    byte        ^0x20   \b, Dictionary ID:
309 >>0   byte&0x03   0       None
310 >>0   byte&0x03   1
311 >>>2  byte        x       %u
312 >>0   byte&0x03   2
313 >>>2  leshort     x       %u
314 >>0   byte&0x03   3
315 >>>2  lelong      x       %u
316
317 # Zstandard compressed data
318 # https://github.com/facebook/zstd/blob/dev/zstd_compression_format.md
319 0     lelong       0xFD2FB522  Zstandard compressed data (v0.2)
320 !:mime  application/zstd
321 0     lelong       0xFD2FB523  Zstandard compressed data (v0.3)
322 !:mime  application/zstd
323 0     lelong       0xFD2FB524  Zstandard compressed data (v0.4)
324 !:mime  application/zstd
325 0     lelong       0xFD2FB525  Zstandard compressed data (v0.5)
326 !:mime  application/zstd
327 0     lelong       0xFD2FB526  Zstandard compressed data (v0.6)
328 !:mime  application/zstd
329 0     lelong       0xFD2FB527  Zstandard compressed data (v0.7)
330 !:mime  application/zstd
331 >4    use          zstd-dictionary-id
332 0     lelong       0xFD2FB528  Zstandard compressed data (v0.8+)
333 !:mime  application/zstd
334 >4    use          zstd-dictionary-id
335
336 # https://github.com/facebook/zstd/blob/dev/zstd_compression_format.md
337 0  lelong    0xEC30A437  Zstandard dictionary
338 !:mime  application/x-std-dictionary
339 >4 lelong    x           (ID %u)
340
341 # AFX compressed files (Wolfram Kleff)
342 2       string          -afx-           AFX compressed file data
343
344 # Supplementary magic data for the file(1) command to support
345 # rzip(1).  The format is described in magic(5).
346 #
347 # Copyright (C) 2003 by Andrew Tridgell.  You may do whatever you want with
348 # this file.
349 #
350 0       string          RZIP            rzip compressed data
351 >4      byte            x               - version %d
352 >5      byte            x               \b.%d
353 >6      belong          x               (%d bytes)
354
355 0       string          ArC\x01         FreeArc archive <http://freearc.org>
356
357 # Type: DACT compressed files
358 0       long    0x444354C3      DACT compressed data
359 >4      byte    >-1             (version %i.
360 >5      byte    >-1             %i.
361 >6      byte    >-1             %i)
362 >7      long    >0              , original size: %i bytes
363 >15     long    >30             , block size: %i bytes
364
365 # Valve Pack (VPK) files
366 0       lelong  0x55aa1234      Valve Pak file
367 >0x4    lelong  x               \b, version %u
368 >0x8    lelong  x               \b, %u entries
369
370 # Snappy framing format
371 # https://code.google.com/p/snappy/source/browse/trunk/framing_format.txt
372 0       string  \377\006\0\0sNaPpY      snappy framed data
373 !:mime  application/x-snappy-framed
374
375 # qpress, https://www.quicklz.com/
376 0       string  qpress10        qpress compressed data
377 !:mime  application/x-qpress
378
379 # Zlib https://www.ietf.org/rfc/rfc6713.txt
380 0       string/b        x
381 >0      beshort%31      =0
382 >>0     byte&0xf        =8
383 >>>0    byte&0x80       =0      zlib compressed data
384 !:mime  application/zlib
385
386 # BWC compression
387 0       string          BWC
388 >3      byte            0       BWC compressed data
389
390 # UCL compression
391 0       bequad          0x00e955434cff011a      UCL compressed data
392
393 # Softlib archive
394 0       string          SLIB    Softlib archive
395 >4      leshort         x       \b, version %d
396 >6      leshort         x       (contains %d files)
397
398 # URL:  https://github.com/lzfse/lzfse/blob/master/src/lzfse_internal.h#L276
399 # From: Eric Hall <eric.hall@darkart.com>
400 0       string  bvx-    lzfse encoded, no compression
401 0       string  bvx1    lzfse compressed, uncompressed tables
402 0       string  bvx2    lzfse compressed, compressed tables
403 0       string  bvxn    lzfse encoded, lzvn compressed
404
405 # pcxLib.exe compression program
406 # http://www.shikadi.net/moddingwiki/PCX_Library
407 0       string/b        pcxLib
408 >0x0A   string/b        Copyright\020(c)\020Genus\020Microprogramming,\020Inc.  pcxLib compressed