]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - magic/Magdir/compress
Vendor import of file 5.38
[FreeBSD/FreeBSD.git] / magic / Magdir / compress
1 #------------------------------------------------------------------------------
2 # $File: compress,v 1.77 2019/10/08 20:25:13 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 >>>-4   ulelong         x               \b, original size modulo 2^32 %u
65 # gzipped TAR or VirtualBox extension package
66 #!:mime application/x-compressed-tar
67 #!:mime application/x-virtualbox-vbox-extpack
68 # https://www.w3.org/TR/SVG/mimereg.html
69 #!:mime image/image/svg+xml-compressed
70 #       zlib.3.gz
71 #       microcode-20180312.tgz
72 #       tpz same as tgz
73 #       lua-md5_1.2-1_i386_i486.ipk     https://en.wikipedia.org/wiki/Opkg
74 #       Oracle_VM_VirtualBox_Extension_Pack-5.0.12-104815.vbox-extpack
75 !:ext   gz/tgz/tpz/ipk/vbox-extpack/svgz
76 # FNAME/FCOMMENT bit implies file name/comment as iso-8859-1 text
77 >3      byte&0x18       >0              gzip compressed data
78 !:mime  application/gzip
79 # gzipped tar, gzipped Abiword document
80 #!:mime application/x-compressed-tar
81 #!:mime application/x-abiword-compressed
82 #!:mime image/image/svg+xml-compressed
83 #       kleopatra_splashscreen.svgz     gzipped .svg
84 !:ext   gz/tgz/tpz/zabw/svgz
85 >>0     use     gzip-info
86 # size of the original (uncompressed) input data modulo 2^32
87 >>-4    ulelong         x               \b, original size modulo 2^32 %u
88 #       display information of gzip compressed files
89 0       name                            gzip-info
90 #>2     byte            x               THIS iS GZIP
91 >2      byte            <8              \b, reserved method
92 >2      byte            >8              \b, unknown method
93 >3      byte            &0x01           \b, ASCII
94 >3      byte            &0x02           \b, has CRC
95 >3      byte            &0x04           \b, extra field
96 >3      byte&0xC        =0x08
97 >>10    string          x               \b, was "%s"
98 >3      byte            &0x10           \b, has comment
99 >3      byte            &0x20           \b, encrypted
100 >4      ledate          >0              \b, last modified: %s
101 >8      byte            2               \b, max compression
102 >8      byte            4               \b, max speed
103 >9      byte            =0x00           \b, from FAT filesystem (MS-DOS, OS/2, NT)
104 >9      byte            =0x01           \b, from Amiga
105 >9      byte            =0x02           \b, from VMS
106 >9      byte            =0x03           \b, from Unix
107 >9      byte            =0x04           \b, from VM/CMS
108 >9      byte            =0x05           \b, from Atari
109 >9      byte            =0x06           \b, from HPFS filesystem (OS/2, NT)
110 >9      byte            =0x07           \b, from MacOS
111 >9      byte            =0x08           \b, from Z-System
112 >9      byte            =0x09           \b, from CP/M
113 >9      byte            =0x0A           \b, from TOPS/20
114 >9      byte            =0x0B           \b, from NTFS filesystem (NT)
115 >9      byte            =0x0C           \b, from QDOS
116 >9      byte            =0x0D           \b, from Acorn RISCOS
117 # size of the original (uncompressed) input data modulo 2^32
118 #>-4    ulelong         x               \b, original size modulo 2^32 %u
119 #ERROR: line 114: non zero offset 1048572 at level 1
120
121 # packed data, Huffman (minimum redundancy) codes on a byte-by-byte basis
122 0       string          \037\036        packed data
123 !:mime  application/octet-stream
124 >2      belong          >1              \b, %d characters originally
125 >2      belong          =1              \b, %d character originally
126 #
127 # This magic number is byte-order-independent.
128 0       short           0x1f1f          old packed data
129 !:mime  application/octet-stream
130
131 # XXX - why *two* entries for "compacted data", one of which is
132 # byte-order independent, and one of which is byte-order dependent?
133 #
134 0       short           0x1fff          compacted data
135 !:mime  application/octet-stream
136 # This string is valid for SunOS (BE) and a matching "short" is listed
137 # in the Ultrix (LE) magic file.
138 0       string          \377\037        compacted data
139 !:mime  application/octet-stream
140 0       short           0145405         huf output
141 !:mime  application/octet-stream
142
143 # bzip2
144 0       string          BZh             bzip2 compressed data
145 !:mime  application/x-bzip2
146 >3      byte            >47             \b, block size = %c00k
147
148 # bzip  a block-sorting file compressor
149 #       by Julian Seward <sewardj@cs.man.ac.uk> and others
150 0       string          BZ0             bzip compressed data
151 !:mime  application/x-bzip
152 >3      byte            >47             \b, block size = %c00k
153
154 # lzip
155 0       string          LZIP            lzip compressed data
156 !:mime application/x-lzip
157 >4      byte            x               \b, version: %d
158
159 # squeeze and crunch
160 # Michael Haardt <michael@cantor.informatik.rwth-aachen.de>
161 0       beshort         0x76FF          squeezed data,
162 >4      string          x               original name %s
163 0       beshort         0x76FE          crunched data,
164 >2      string          x               original name %s
165 0       beshort         0x76FD          LZH compressed data,
166 >2      string          x               original name %s
167
168 # Freeze
169 0       string          \037\237        frozen file 2.1
170 0       string          \037\236        frozen file 1.0 (or gzip 0.5)
171
172 # SCO compress -H (LZH)
173 0       string          \037\240        SCO compress -H (LZH) data
174
175 # European GSM 06.10 is a provisional standard for full-rate speech
176 # transcoding, prI-ETS 300 036, which uses RPE/LTP (residual pulse
177 # excitation/long term prediction) coding at 13 kbit/s.
178 #
179 # There's only a magic nibble (4 bits); that nibble repeats every 33
180 # bytes.  This isn't suited for use, but maybe we can use it someday.
181 #
182 # This will cause very short GSM files to be declared as data and
183 # mismatches to be declared as data too!
184 #0      byte&0xF0       0xd0            data
185 #>33    byte&0xF0       0xd0
186 #>66    byte&0xF0       0xd0
187 #>99    byte&0xF0       0xd0
188 #>132   byte&0xF0       0xd0            GSM 06.10 compressed audio
189
190 # lzop from <markus.oberhumer@jk.uni-linz.ac.at>
191 0       string          \x89\x4c\x5a\x4f\x00\x0d\x0a\x1a\x0a    lzop compressed data
192 >9      beshort         <0x0940
193 >>9     byte&0xf0       =0x00           - version 0.
194 >>9     beshort&0x0fff  x               \b%03x,
195 >>13    byte            1               LZO1X-1,
196 >>13    byte            2               LZO1X-1(15),
197 >>13    byte            3               LZO1X-999,
198 ## >>22 bedate          >0              last modified: %s,
199 >>14    byte            =0x00           os: MS-DOS
200 >>14    byte            =0x01           os: Amiga
201 >>14    byte            =0x02           os: VMS
202 >>14    byte            =0x03           os: Unix
203 >>14    byte            =0x05           os: Atari
204 >>14    byte            =0x06           os: OS/2
205 >>14    byte            =0x07           os: MacOS
206 >>14    byte            =0x0A           os: Tops/20
207 >>14    byte            =0x0B           os: WinNT
208 >>14    byte            =0x0E           os: Win32
209 >9      beshort         >0x0939
210 >>9     byte&0xf0       =0x00           - version 0.
211 >>9     byte&0xf0       =0x10           - version 1.
212 >>9     byte&0xf0       =0x20           - version 2.
213 >>9     beshort&0x0fff  x               \b%03x,
214 >>15    byte            1               LZO1X-1,
215 >>15    byte            2               LZO1X-1(15),
216 >>15    byte            3               LZO1X-999,
217 ## >>25 bedate          >0              last modified: %s,
218 >>17    byte            =0x00           os: MS-DOS
219 >>17    byte            =0x01           os: Amiga
220 >>17    byte            =0x02           os: VMS
221 >>17    byte            =0x03           os: Unix
222 >>17    byte            =0x05           os: Atari
223 >>17    byte            =0x06           os: OS/2
224 >>17    byte            =0x07           os: MacOS
225 >>17    byte            =0x0A           os: Tops/20
226 >>17    byte            =0x0B           os: WinNT
227 >>17    byte            =0x0E           os: Win32
228
229 # 4.3BSD-Quasijarus Strong Compression
230 # https://minnie.tuhs.org/Quasijarus/compress.html
231 0       string          \037\241        Quasijarus strong compressed data
232
233 # From: Cory Dikkers <cdikkers@swbell.net>
234 0       string          XPKF            Amiga xpkf.library compressed data
235 0       string          PP11            Power Packer 1.1 compressed data
236 0       string          PP20            Power Packer 2.0 compressed data,
237 >4      belong          0x09090909      fast compression
238 >4      belong          0x090A0A0A      mediocre compression
239 >4      belong          0x090A0B0B      good compression
240 >4      belong          0x090A0C0C      very good compression
241 >4      belong          0x090A0C0D      best compression
242
243 # 7-zip archiver, from Thomas Klausner (wiz@danbala.tuwien.ac.at)
244 # https://www.7-zip.org or DOC/7zFormat.txt
245 #
246 0       string          7z\274\257\047\034      7-zip archive data,
247 >6      byte            x                       version %d
248 >7      byte            x                       \b.%d
249 !:mime  application/x-7z-compressed
250 !:ext 7z/cb7
251
252 # Type: LZMA
253 0       lelong&0xffffff =0x5d
254 >12     leshort         0xff                    LZMA compressed data,
255 !:mime  application/x-lzma
256 >>5     lequad          =0xffffffffffffffff     streamed
257 >>5     lequad          !0xffffffffffffffff     non-streamed, size %lld
258 >12     leshort         0                       LZMA compressed data,
259 >>5     lequad          =0xffffffffffffffff     streamed
260 >>5     lequad          !0xffffffffffffffff     non-streamed, size %lld
261
262 # http://tukaani.org/xz/xz-file-format.txt
263 0       ustring         \xFD7zXZ\x00            XZ compressed data
264 !:strength * 2
265 !:mime  application/x-xz
266
267 # https://github.com/ckolivas/lrzip/blob/master/doc/magic.header.txt
268 0       string          LRZI                    LRZIP compressed data
269 >4      byte            x                       - version %d
270 >5      byte            x                       \b.%d
271 !:mime  application/x-lrzip
272
273 # https://fastcompression.blogspot.fi/2013/04/lz4-streaming-format-final.html
274 0       lelong          0x184d2204      LZ4 compressed data (v1.4+)
275 !:mime  application/x-lz4
276 # Added by osm0sis@xda-developers.com
277 0       lelong          0x184c2103      LZ4 compressed data (v1.0-v1.3)
278 !:mime  application/x-lz4
279 0       lelong          0x184c2102      LZ4 compressed data (v0.1-v0.9)
280 !:mime  application/x-lz4
281
282 # Zstandard/LZ4 skippable frames
283 # https://github.com/facebook/zstd/blob/dev/zstd_compression_format.md
284 0         lelong&0xFFFFFFF0  0x184D2A50
285 >(4.l+8)  indirect      x
286
287 # Zstandard Dictionary ID subroutine
288 0     name        zstd-dictionary-id
289 # Single Segment = True
290 >0    byte        &0x20   \b, Dictionary ID:
291 >>0   byte&0x03   0       None
292 >>0   byte&0x03   1
293 >>>1  byte        x       %u
294 >>0   byte&0x03   2
295 >>>1  leshort     x       %u
296 >>0   byte&0x03   3
297 >>>1  lelong      x       %u
298 # Single Segment = False
299 >0    byte        ^0x20   \b, Dictionary ID:
300 >>0   byte&0x03   0       None
301 >>0   byte&0x03   1
302 >>>2  byte        x       %u
303 >>0   byte&0x03   2
304 >>>2  leshort     x       %u
305 >>0   byte&0x03   3
306 >>>2  lelong      x       %u
307
308 # Zstandard compressed data
309 # https://github.com/facebook/zstd/blob/dev/zstd_compression_format.md
310 0     lelong       0xFD2FB522  Zstandard compressed data (v0.2)
311 !:mime  application/zstd
312 0     lelong       0xFD2FB523  Zstandard compressed data (v0.3)
313 !:mime  application/zstd
314 0     lelong       0xFD2FB524  Zstandard compressed data (v0.4)
315 !:mime  application/zstd
316 0     lelong       0xFD2FB525  Zstandard compressed data (v0.5)
317 !:mime  application/zstd
318 0     lelong       0xFD2FB526  Zstandard compressed data (v0.6)
319 !:mime  application/zstd
320 0     lelong       0xFD2FB527  Zstandard compressed data (v0.7)
321 !:mime  application/zstd
322 >4    use          zstd-dictionary-id
323 0     lelong       0xFD2FB528  Zstandard compressed data (v0.8+)
324 !:mime  application/zstd
325 >4    use          zstd-dictionary-id
326
327 # https://github.com/facebook/zstd/blob/dev/zstd_compression_format.md
328 0  lelong    0xEC30A437  Zstandard dictionary
329 !:mime  application/x-std-dictionary
330 >4 lelong    x           (ID %u)
331
332 # AFX compressed files (Wolfram Kleff)
333 2       string          -afx-           AFX compressed file data
334
335 # Supplementary magic data for the file(1) command to support
336 # rzip(1).  The format is described in magic(5).
337 #
338 # Copyright (C) 2003 by Andrew Tridgell.  You may do whatever you want with
339 # this file.
340 #
341 0       string          RZIP            rzip compressed data
342 >4      byte            x               - version %d
343 >5      byte            x               \b.%d
344 >6      belong          x               (%d bytes)
345
346 0       string          ArC\x01         FreeArc archive <http://freearc.org>
347
348 # Type: DACT compressed files
349 0       long    0x444354C3      DACT compressed data
350 >4      byte    >-1             (version %i.
351 >5      byte    >-1             %i.
352 >6      byte    >-1             %i)
353 >7      long    >0              , original size: %i bytes
354 >15     long    >30             , block size: %i bytes
355
356 # Valve Pack (VPK) files
357 0       lelong  0x55aa1234      Valve Pak file
358 >0x4    lelong  x               \b, version %u
359 >0x8    lelong  x               \b, %u entries
360
361 # Snappy framing format
362 # https://code.google.com/p/snappy/source/browse/trunk/framing_format.txt
363 0       string  \377\006\0\0sNaPpY      snappy framed data
364 !:mime  application/x-snappy-framed
365
366 # qpress, https://www.quicklz.com/
367 0       string  qpress10        qpress compressed data
368 !:mime  application/x-qpress
369
370 # Zlib https://www.ietf.org/rfc/rfc6713.txt
371 0       string/b        x
372 >0      beshort%31      =0
373 >>0     byte&0xf        =8
374 >>>0    byte&0x80       =0      zlib compressed data
375 !:mime  application/zlib
376
377 # BWC compression
378 0       string          BWC
379 >3      byte            0       BWC compressed data
380
381 # UCL compression
382 0       bequad          0x00e955434cff011a      UCL compressed data
383
384 # Softlib archive
385 0       string          SLIB    Softlib archive
386 >4      leshort         x       \b, version %d
387 >6      leshort         x       (contains %d files)
388
389 # URL:  https://github.com/lzfse/lzfse/blob/master/src/lzfse_internal.h#L276
390 # From: Eric Hall <eric.hall@darkart.com>
391 0       string  bvx-    lzfse encoded, no compression
392 0       string  bvx1    lzfse compressed, uncompressed tables
393 0       string  bvx2    lzfse compressed, compressed tables
394 0       string  bvxn    lzfse encoded, lzvn compressed