1 #------------------------------------------------------------------------------
2 # $File: compress,v 1.79 2020/05/30 23:53:04 christos Exp $
3 # compress: file(1) magic for pure-compression formats (no archives)
5 # compress, gzip, pack, compact, huf, squeeze, crunch, freeze, yabba, etc.
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.
11 # standard unix compress
12 0 string \037\235 compress'd data
13 !:mime application/x-compress
15 >2 byte&0x80 >0 block compressed
16 >2 byte&0x1f x %d bits
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
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
35 # to display gzip compressed (strength=100=2*50) before other (strength=50)?
37 # no FNAME and FCOMMENT bit implies no file name/comment. That means only binary
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
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
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
63 # size of the original (uncompressed) input data modulo 2^32
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
73 # microcode-20180312.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
88 # size of the original (uncompressed) input data modulo 2^32
90 >>>-4 ulelong x \b, original size modulo 2^32 %u
91 >>-0 offset <48 \b, truncated
92 # display information of gzip compressed files
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
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
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
131 # This magic number is byte-order-independent.
132 0 short 0x1f1f old packed data
133 !:mime application/octet-stream
135 # XXX - why *two* entries for "compacted data", one of which is
136 # byte-order independent, and one of which is byte-order dependent?
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
148 0 string BZh bzip2 compressed data
149 !:mime application/x-bzip2
150 >3 byte >47 \b, block size = %c00k
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
159 0 string LZIP lzip compressed data
160 !:mime application/x-lzip
161 >4 byte x \b, version: %d
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
173 0 string \037\237 frozen file 2.1
174 0 string \037\236 frozen file 1.0 (or gzip 0.5)
176 # SCO compress -H (LZH)
177 0 string \037\240 SCO compress -H (LZH) data
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.
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.
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
192 #>132 byte&0xF0 0xd0 GSM 06.10 compressed audio
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
197 >>9 byte&0xf0 =0x00 - version 0.
198 >>9 beshort&0x0fff x \b%03x,
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
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,
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
233 # 4.3BSD-Quasijarus Strong Compression
234 # https://minnie.tuhs.org/Quasijarus/compress.html
235 0 string \037\241 Quasijarus strong compressed data
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
247 # 7-zip archiver, from Thomas Klausner (wiz@danbala.tuwien.ac.at)
248 # https://www.7-zip.org or DOC/7zFormat.txt
250 0 string 7z\274\257\047\034 7-zip archive data,
253 !:mime application/x-7z-compressed
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
266 # http://tukaani.org/xz/xz-file-format.txt
267 0 ustring \xFD7zXZ\x00 XZ compressed data
269 !:mime application/x-xz
271 # https://github.com/ckolivas/lrzip/blob/master/doc/magic.header.txt
272 0 string LRZI LRZIP compressed data
273 >4 byte x - version %d
275 !:mime application/x-lrzip
277 # https://fastcompression.blogspot.fi/2013/04/lz4-streaming-format-final.html
278 0 lelong 0x184d2204 LZ4 compressed data (v1.4+)
279 !:mime application/x-lz4
280 # Added by osm0sis@xda-developers.com
281 0 lelong 0x184c2103 LZ4 compressed data (v1.0-v1.3)
282 !:mime application/x-lz4
283 0 lelong 0x184c2102 LZ4 compressed data (v0.1-v0.9)
284 !:mime application/x-lz4
286 # Zstandard/LZ4 skippable frames
287 # https://github.com/facebook/zstd/blob/dev/zstd_compression_format.md
288 0 lelong&0xFFFFFFF0 0x184D2A50
291 # Zstandard Dictionary ID subroutine
292 0 name zstd-dictionary-id
293 # Single Segment = True
294 >0 byte &0x20 \b, Dictionary ID:
302 # Single Segment = False
303 >0 byte ^0x20 \b, Dictionary ID:
312 # Zstandard compressed data
313 # https://github.com/facebook/zstd/blob/dev/zstd_compression_format.md
314 0 lelong 0xFD2FB522 Zstandard compressed data (v0.2)
315 !:mime application/zstd
316 0 lelong 0xFD2FB523 Zstandard compressed data (v0.3)
317 !:mime application/zstd
318 0 lelong 0xFD2FB524 Zstandard compressed data (v0.4)
319 !:mime application/zstd
320 0 lelong 0xFD2FB525 Zstandard compressed data (v0.5)
321 !:mime application/zstd
322 0 lelong 0xFD2FB526 Zstandard compressed data (v0.6)
323 !:mime application/zstd
324 0 lelong 0xFD2FB527 Zstandard compressed data (v0.7)
325 !:mime application/zstd
326 >4 use zstd-dictionary-id
327 0 lelong 0xFD2FB528 Zstandard compressed data (v0.8+)
328 !:mime application/zstd
329 >4 use zstd-dictionary-id
331 # https://github.com/facebook/zstd/blob/dev/zstd_compression_format.md
332 0 lelong 0xEC30A437 Zstandard dictionary
333 !:mime application/x-std-dictionary
336 # AFX compressed files (Wolfram Kleff)
337 2 string -afx- AFX compressed file data
339 # Supplementary magic data for the file(1) command to support
340 # rzip(1). The format is described in magic(5).
342 # Copyright (C) 2003 by Andrew Tridgell. You may do whatever you want with
345 0 string RZIP rzip compressed data
346 >4 byte x - version %d
348 >6 belong x (%d bytes)
350 0 string ArC\x01 FreeArc archive <http://freearc.org>
352 # Type: DACT compressed files
353 0 long 0x444354C3 DACT compressed data
354 >4 byte >-1 (version %i.
357 >7 long >0 , original size: %i bytes
358 >15 long >30 , block size: %i bytes
360 # Valve Pack (VPK) files
361 0 lelong 0x55aa1234 Valve Pak file
362 >0x4 lelong x \b, version %u
363 >0x8 lelong x \b, %u entries
365 # Snappy framing format
366 # https://code.google.com/p/snappy/source/browse/trunk/framing_format.txt
367 0 string \377\006\0\0sNaPpY snappy framed data
368 !:mime application/x-snappy-framed
370 # qpress, https://www.quicklz.com/
371 0 string qpress10 qpress compressed data
372 !:mime application/x-qpress
374 # Zlib https://www.ietf.org/rfc/rfc6713.txt
378 >>>0 byte&0x80 =0 zlib compressed data
379 !:mime application/zlib
383 >3 byte 0 BWC compressed data
386 0 bequad 0x00e955434cff011a UCL compressed data
389 0 string SLIB Softlib archive
390 >4 leshort x \b, version %d
391 >6 leshort x (contains %d files)
393 # URL: https://github.com/lzfse/lzfse/blob/master/src/lzfse_internal.h#L276
394 # From: Eric Hall <eric.hall@darkart.com>
395 0 string bvx- lzfse encoded, no compression
396 0 string bvx1 lzfse compressed, uncompressed tables
397 0 string bvx2 lzfse compressed, compressed tables
398 0 string bvxn lzfse encoded, lzvn compressed
400 # pcxLib.exe compression program
401 # http://www.shikadi.net/moddingwiki/PCX_Library
403 >0x0A string/b Copyright\020(c)\020Genus\020Microprogramming,\020Inc. pcxLib compressed