xref: /freebsd/contrib/file/magic/Magdir/compress (revision 77a1348b3c1cfe8547be49a121b56299a1e18b69)
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
120	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
340       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
890	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
1220	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.
1280	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#
1340	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.
1380	string		\377\037	compacted data
139!:mime	application/octet-stream
1400	short		0145405		huf output
141!:mime	application/octet-stream
142
143# bzip2
1440	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
1500	string		BZ0		bzip compressed data
151!:mime	application/x-bzip
152>3	byte		>47		\b, block size = %c00k
153
154# lzip
1550	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>
1610	beshort		0x76FF		squeezed data,
162>4	string		x		original name %s
1630	beshort		0x76FE		crunched data,
164>2	string		x		original name %s
1650	beshort		0x76FD		LZH compressed data,
166>2	string		x		original name %s
167
168# Freeze
1690	string		\037\237	frozen file 2.1
1700	string		\037\236	frozen file 1.0 (or gzip 0.5)
171
172# SCO compress -H (LZH)
1730	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>
1910	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
2310	string		\037\241	Quasijarus strong compressed data
232
233# From: Cory Dikkers <cdikkers@swbell.net>
2340	string		XPKF		Amiga xpkf.library compressed data
2350	string		PP11		Power Packer 1.1 compressed data
2360	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#
2460	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
2530	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
2630	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
2680	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
2740	lelong		0x184d2204	LZ4 compressed data (v1.4+)
275!:mime	application/x-lz4
276# Added by osm0sis@xda-developers.com
2770 	lelong		0x184c2103	LZ4 compressed data (v1.0-v1.3)
278!:mime	application/x-lz4
2790	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
2840         lelong&0xFFFFFFF0  0x184D2A50
285>(4.l+8)  indirect	x
286
287# Zstandard Dictionary ID subroutine
2880     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
3100     lelong       0xFD2FB522  Zstandard compressed data (v0.2)
311!:mime  application/zstd
3120     lelong       0xFD2FB523  Zstandard compressed data (v0.3)
313!:mime  application/zstd
3140     lelong       0xFD2FB524  Zstandard compressed data (v0.4)
315!:mime  application/zstd
3160     lelong       0xFD2FB525  Zstandard compressed data (v0.5)
317!:mime  application/zstd
3180     lelong       0xFD2FB526  Zstandard compressed data (v0.6)
319!:mime  application/zstd
3200     lelong       0xFD2FB527  Zstandard compressed data (v0.7)
321!:mime  application/zstd
322>4    use          zstd-dictionary-id
3230     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
3280  lelong    0xEC30A437  Zstandard dictionary
329!:mime  application/x-std-dictionary
330>4 lelong    x           (ID %u)
331
332# AFX compressed files (Wolfram Kleff)
3332	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#
3410	string		RZIP		rzip compressed data
342>4	byte		x		- version %d
343>5	byte		x		\b.%d
344>6	belong		x		(%d bytes)
345
3460	string		ArC\x01		FreeArc archive <http://freearc.org>
347
348# Type:	DACT compressed files
3490	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
3570	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
3630	string	\377\006\0\0sNaPpY	snappy framed data
364!:mime	application/x-snappy-framed
365
366# qpress, https://www.quicklz.com/
3670	string	qpress10	qpress compressed data
368!:mime	application/x-qpress
369
370# Zlib https://www.ietf.org/rfc/rfc6713.txt
3710	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
3780	string		BWC
379>3	byte		0	BWC compressed data
380
381# UCL compression
3820	bequad		0x00e955434cff011a	UCL compressed data
383
384# Softlib archive
3850	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>
3910	string	bvx-	lzfse encoded, no compression
3920	string	bvx1	lzfse compressed, uncompressed tables
3930	string	bvx2	lzfse compressed, compressed tables
3940	string	bvxn	lzfse encoded, lzvn compressed
395