xref: /freebsd/contrib/file/magic/Magdir/compress (revision 3e41d09d08f5bfa2fc1386241f334b865d6da085)
1b6cee71dSXin LI#------------------------------------------------------------------------------
2*3e41d09dSXin LI# $File: compress,v 1.65 2015/12/04 20:48:03 christos Exp $
3b6cee71dSXin LI# compress:  file(1) magic for pure-compression formats (no archives)
4b6cee71dSXin LI#
5b6cee71dSXin LI# compress, gzip, pack, compact, huf, squeeze, crunch, freeze, yabba, etc.
6b6cee71dSXin LI#
7b6cee71dSXin LI# Formats for various forms of compressed data
8b6cee71dSXin LI# Formats for "compress" proper have been moved into "compress.c",
9b6cee71dSXin LI# because it tries to uncompress it to figure out what's inside.
10b6cee71dSXin LI
11b6cee71dSXin LI# standard unix compress
12b6cee71dSXin LI0	string		\037\235	compress'd data
13b6cee71dSXin LI!:mime	application/x-compress
14b6cee71dSXin LI!:apple	LZIVZIVU
15b6cee71dSXin LI>2	byte&0x80	>0		block compressed
16b6cee71dSXin LI>2	byte&0x1f	x		%d bits
17b6cee71dSXin LI
18b6cee71dSXin LI# gzip (GNU zip, not to be confused with Info-ZIP or PKWARE zip archiver)
19b6cee71dSXin LI#   Edited by Chris Chittleborough <cchittleborough@yahoo.com.au>, March 2002
20b6cee71dSXin LI#	* Original filename is only at offset 10 if "extra field" absent
21b6cee71dSXin LI#	* Produce shorter output - notably, only report compression methods
22b6cee71dSXin LI#         other than 8 ("deflate", the only method defined in RFC 1952).
23b6cee71dSXin LI0       string          \037\213        gzip compressed data
24b6cee71dSXin LI!:mime	application/x-gzip
25b6cee71dSXin LI!:strength * 2
26b6cee71dSXin LI>2	byte		<8		\b, reserved method
27b6cee71dSXin LI>2	byte		>8		\b, unknown method
28b6cee71dSXin LI>3	byte		&0x01		\b, ASCII
29b6cee71dSXin LI>3	byte		&0x02		\b, has CRC
30b6cee71dSXin LI>3	byte		&0x04		\b, extra field
31b6cee71dSXin LI>3	byte&0xC	=0x08
32b6cee71dSXin LI>>10	string		x		\b, was "%s"
33b6cee71dSXin LI>3	byte		&0x10		\b, has comment
34b6cee71dSXin LI>3	byte		&0x20		\b, encrypted
35b6cee71dSXin LI>4	ledate		>0		\b, last modified: %s
36b6cee71dSXin LI>8	byte		2		\b, max compression
37b6cee71dSXin LI>8	byte		4		\b, max speed
38b6cee71dSXin LI>9	byte		=0x00		\b, from FAT filesystem (MS-DOS, OS/2, NT)
39b6cee71dSXin LI>9	byte		=0x01		\b, from Amiga
40b6cee71dSXin LI>9	byte		=0x02		\b, from VMS
41b6cee71dSXin LI>9	byte		=0x03		\b, from Unix
42b6cee71dSXin LI>9	byte		=0x04		\b, from VM/CMS
43b6cee71dSXin LI>9	byte		=0x05		\b, from Atari
44b6cee71dSXin LI>9	byte		=0x06		\b, from HPFS filesystem (OS/2, NT)
45b6cee71dSXin LI>9	byte		=0x07		\b, from MacOS
46b6cee71dSXin LI>9	byte		=0x08		\b, from Z-System
47b6cee71dSXin LI>9	byte		=0x09		\b, from CP/M
48b6cee71dSXin LI>9	byte		=0x0A		\b, from TOPS/20
49b6cee71dSXin LI>9	byte		=0x0B		\b, from NTFS filesystem (NT)
50b6cee71dSXin LI>9	byte		=0x0C		\b, from QDOS
51b6cee71dSXin LI>9	byte		=0x0D		\b, from Acorn RISCOS
52b6cee71dSXin LI
53b6cee71dSXin LI# packed data, Huffman (minimum redundancy) codes on a byte-by-byte basis
54b6cee71dSXin LI0	string		\037\036	packed data
55b6cee71dSXin LI!:mime	application/octet-stream
56b6cee71dSXin LI>2	belong		>1		\b, %d characters originally
57b6cee71dSXin LI>2	belong		=1		\b, %d character originally
58b6cee71dSXin LI#
59b6cee71dSXin LI# This magic number is byte-order-independent.
60b6cee71dSXin LI0	short		0x1f1f		old packed data
61b6cee71dSXin LI!:mime	application/octet-stream
62b6cee71dSXin LI
63b6cee71dSXin LI# XXX - why *two* entries for "compacted data", one of which is
64b6cee71dSXin LI# byte-order independent, and one of which is byte-order dependent?
65b6cee71dSXin LI#
66b6cee71dSXin LI0	short		0x1fff		compacted data
67b6cee71dSXin LI!:mime	application/octet-stream
68b6cee71dSXin LI# This string is valid for SunOS (BE) and a matching "short" is listed
69b6cee71dSXin LI# in the Ultrix (LE) magic file.
70b6cee71dSXin LI0	string		\377\037	compacted data
71b6cee71dSXin LI!:mime	application/octet-stream
72b6cee71dSXin LI0	short		0145405		huf output
73b6cee71dSXin LI!:mime	application/octet-stream
74b6cee71dSXin LI
75b6cee71dSXin LI# bzip2
76b6cee71dSXin LI0	string		BZh		bzip2 compressed data
77b6cee71dSXin LI!:mime	application/x-bzip2
78b6cee71dSXin LI>3	byte		>47		\b, block size = %c00k
79b6cee71dSXin LI
80b6cee71dSXin LI# lzip
81b6cee71dSXin LI0	string		LZIP		lzip compressed data
82b6cee71dSXin LI!:mime application/x-lzip
83b6cee71dSXin LI>4	byte		x		\b, version: %d
84b6cee71dSXin LI
85b6cee71dSXin LI# squeeze and crunch
86b6cee71dSXin LI# Michael Haardt <michael@cantor.informatik.rwth-aachen.de>
87b6cee71dSXin LI0	beshort		0x76FF		squeezed data,
88b6cee71dSXin LI>4	string		x		original name %s
89b6cee71dSXin LI0	beshort		0x76FE		crunched data,
90b6cee71dSXin LI>2	string		x		original name %s
91b6cee71dSXin LI0	beshort		0x76FD		LZH compressed data,
92b6cee71dSXin LI>2	string		x		original name %s
93b6cee71dSXin LI
94b6cee71dSXin LI# Freeze
95b6cee71dSXin LI0	string		\037\237	frozen file 2.1
96b6cee71dSXin LI0	string		\037\236	frozen file 1.0 (or gzip 0.5)
97b6cee71dSXin LI
98b6cee71dSXin LI# SCO compress -H (LZH)
99b6cee71dSXin LI0	string		\037\240	SCO compress -H (LZH) data
100b6cee71dSXin LI
101b6cee71dSXin LI# European GSM 06.10 is a provisional standard for full-rate speech
102b6cee71dSXin LI# transcoding, prI-ETS 300 036, which uses RPE/LTP (residual pulse
103b6cee71dSXin LI# excitation/long term prediction) coding at 13 kbit/s.
104b6cee71dSXin LI#
105b6cee71dSXin LI# There's only a magic nibble (4 bits); that nibble repeats every 33
106b6cee71dSXin LI# bytes.  This isn't suited for use, but maybe we can use it someday.
107b6cee71dSXin LI#
108b6cee71dSXin LI# This will cause very short GSM files to be declared as data and
109b6cee71dSXin LI# mismatches to be declared as data too!
110b6cee71dSXin LI#0	byte&0xF0	0xd0		data
111b6cee71dSXin LI#>33	byte&0xF0	0xd0
112b6cee71dSXin LI#>66	byte&0xF0	0xd0
113b6cee71dSXin LI#>99	byte&0xF0	0xd0
114b6cee71dSXin LI#>132	byte&0xF0	0xd0		GSM 06.10 compressed audio
115b6cee71dSXin LI
116b6cee71dSXin LI# bzip	a block-sorting file compressor
117b6cee71dSXin LI#	by Julian Seward <sewardj@cs.man.ac.uk> and others
118b6cee71dSXin LI#
119b6cee71dSXin LI#0	string		BZ		bzip compressed data
120b6cee71dSXin LI#>2	byte		x		\b, version: %c
121b6cee71dSXin LI#>3	string		=1		\b, compression block size 100k
122b6cee71dSXin LI#>3	string		=2		\b, compression block size 200k
123b6cee71dSXin LI#>3	string		=3		\b, compression block size 300k
124b6cee71dSXin LI#>3	string		=4		\b, compression block size 400k
125b6cee71dSXin LI#>3	string		=5		\b, compression block size 500k
126b6cee71dSXin LI#>3	string		=6		\b, compression block size 600k
127b6cee71dSXin LI#>3	string		=7		\b, compression block size 700k
128b6cee71dSXin LI#>3	string		=8		\b, compression block size 800k
129b6cee71dSXin LI#>3	string		=9		\b, compression block size 900k
130b6cee71dSXin LI
131b6cee71dSXin LI# lzop from <markus.oberhumer@jk.uni-linz.ac.at>
132b6cee71dSXin LI0	string		\x89\x4c\x5a\x4f\x00\x0d\x0a\x1a\x0a	lzop compressed data
133b6cee71dSXin LI>9	beshort		<0x0940
134b6cee71dSXin LI>>9	byte&0xf0	=0x00		- version 0.
135b6cee71dSXin LI>>9	beshort&0x0fff	x		\b%03x,
136b6cee71dSXin LI>>13	byte		1		LZO1X-1,
137b6cee71dSXin LI>>13	byte		2		LZO1X-1(15),
138b6cee71dSXin LI>>13	byte		3		LZO1X-999,
139b6cee71dSXin LI## >>22	bedate		>0		last modified: %s,
140b6cee71dSXin LI>>14	byte		=0x00		os: MS-DOS
141b6cee71dSXin LI>>14	byte		=0x01		os: Amiga
142b6cee71dSXin LI>>14	byte		=0x02		os: VMS
143b6cee71dSXin LI>>14	byte		=0x03		os: Unix
144b6cee71dSXin LI>>14	byte		=0x05		os: Atari
145b6cee71dSXin LI>>14	byte		=0x06		os: OS/2
146b6cee71dSXin LI>>14	byte		=0x07		os: MacOS
147b6cee71dSXin LI>>14	byte		=0x0A		os: Tops/20
148b6cee71dSXin LI>>14	byte		=0x0B		os: WinNT
149b6cee71dSXin LI>>14	byte		=0x0E		os: Win32
150b6cee71dSXin LI>9	beshort		>0x0939
151b6cee71dSXin LI>>9	byte&0xf0	=0x00		- version 0.
152b6cee71dSXin LI>>9	byte&0xf0	=0x10		- version 1.
153b6cee71dSXin LI>>9	byte&0xf0	=0x20		- version 2.
154b6cee71dSXin LI>>9	beshort&0x0fff	x		\b%03x,
155b6cee71dSXin LI>>15	byte		1		LZO1X-1,
156b6cee71dSXin LI>>15	byte		2		LZO1X-1(15),
157b6cee71dSXin LI>>15	byte		3		LZO1X-999,
158b6cee71dSXin LI## >>25	bedate		>0		last modified: %s,
159b6cee71dSXin LI>>17	byte		=0x00		os: MS-DOS
160b6cee71dSXin LI>>17	byte		=0x01		os: Amiga
161b6cee71dSXin LI>>17	byte		=0x02		os: VMS
162b6cee71dSXin LI>>17	byte		=0x03		os: Unix
163b6cee71dSXin LI>>17	byte		=0x05		os: Atari
164b6cee71dSXin LI>>17	byte		=0x06		os: OS/2
165b6cee71dSXin LI>>17	byte		=0x07		os: MacOS
166b6cee71dSXin LI>>17	byte		=0x0A		os: Tops/20
167b6cee71dSXin LI>>17	byte		=0x0B		os: WinNT
168b6cee71dSXin LI>>17	byte		=0x0E		os: Win32
169b6cee71dSXin LI
170b6cee71dSXin LI# 4.3BSD-Quasijarus Strong Compression
171b6cee71dSXin LI# http://minnie.tuhs.org/Quasijarus/compress.html
172b6cee71dSXin LI0	string		\037\241	Quasijarus strong compressed data
173b6cee71dSXin LI
174b6cee71dSXin LI# From: Cory Dikkers <cdikkers@swbell.net>
175b6cee71dSXin LI0	string		XPKF		Amiga xpkf.library compressed data
176b6cee71dSXin LI0	string		PP11		Power Packer 1.1 compressed data
177b6cee71dSXin LI0	string		PP20		Power Packer 2.0 compressed data,
178b6cee71dSXin LI>4	belong		0x09090909	fast compression
179b6cee71dSXin LI>4	belong		0x090A0A0A	mediocre compression
180b6cee71dSXin LI>4	belong		0x090A0B0B	good compression
181b6cee71dSXin LI>4	belong		0x090A0C0C	very good compression
182b6cee71dSXin LI>4	belong		0x090A0C0D	best compression
183b6cee71dSXin LI
184b6cee71dSXin LI# 7-zip archiver, from Thomas Klausner (wiz@danbala.tuwien.ac.at)
185b6cee71dSXin LI# http://www.7-zip.org or DOC/7zFormat.txt
186b6cee71dSXin LI#
187b6cee71dSXin LI0	string		7z\274\257\047\034	7-zip archive data,
188b6cee71dSXin LI>6	byte		x			version %d
189b6cee71dSXin LI>7	byte		x			\b.%d
190b6cee71dSXin LI!:mime	application/x-7z-compressed
191*3e41d09dSXin LI!:ext 7z/cb7
192b6cee71dSXin LI
193b6cee71dSXin LI# Type: LZMA
194b6cee71dSXin LI0	lelong&0xffffff	=0x5d
195b6cee71dSXin LI>12	leshort		0xff			LZMA compressed data,
196b6cee71dSXin LI!:mime	application/x-lzma
197b6cee71dSXin LI>>5	lequad		=0xffffffffffffffff	streamed
198b6cee71dSXin LI>>5	lequad		!0xffffffffffffffff	non-streamed, size %lld
199b6cee71dSXin LI>12	leshort		0			LZMA compressed data,
200b6cee71dSXin LI>>5	lequad		=0xffffffffffffffff	streamed
201b6cee71dSXin LI>>5	lequad		!0xffffffffffffffff	non-streamed, size %lld
202b6cee71dSXin LI
203b6cee71dSXin LI# http://tukaani.org/xz/xz-file-format.txt
204b6cee71dSXin LI0	ustring		\xFD7zXZ\x00		XZ compressed data
2055f0216bdSXin LI!:strength * 2
206b6cee71dSXin LI!:mime	application/x-xz
207b6cee71dSXin LI
208b6cee71dSXin LI# https://github.com/ckolivas/lrzip/blob/master/doc/magic.header.txt
209b6cee71dSXin LI0	string		LRZI			LRZIP compressed data
210b6cee71dSXin LI>4	byte		x			- version %d
211b6cee71dSXin LI>5	byte		x			\b.%d
212b6cee71dSXin LI!:mime	application/x-lrzip
213b6cee71dSXin LI
214b6cee71dSXin LI# http://fastcompression.blogspot.fi/2013/04/lz4-streaming-format-final.html
215b6cee71dSXin LI0	lelong		0x184d2204	LZ4 compressed data (v1.4+)
216b6cee71dSXin LI!:mime	application/x-lz4
217b6cee71dSXin LI# Added by osm0sis@xda-developers.com
218b6cee71dSXin LI0 	lelong		0x184c2103	LZ4 compressed data (v1.0-v1.3)
219b6cee71dSXin LI!:mime	application/x-lz4
220b6cee71dSXin LI0	lelong		0x184c2102	LZ4 compressed data (v0.1-v0.9)
221b6cee71dSXin LI!:mime	application/x-lz4
222b6cee71dSXin LI
223b6cee71dSXin LI# AFX compressed files (Wolfram Kleff)
224b6cee71dSXin LI2	string		-afx-		AFX compressed file data
225b6cee71dSXin LI
226b6cee71dSXin LI# Supplementary magic data for the file(1) command to support
227b6cee71dSXin LI# rzip(1).  The format is described in magic(5).
228b6cee71dSXin LI#
229b6cee71dSXin LI# Copyright (C) 2003 by Andrew Tridgell.  You may do whatever you want with
230b6cee71dSXin LI# this file.
231b6cee71dSXin LI#
232b6cee71dSXin LI0	string		RZIP		rzip compressed data
233b6cee71dSXin LI>4	byte		x		- version %d
234b6cee71dSXin LI>5	byte		x		\b.%d
235b6cee71dSXin LI>6	belong		x		(%d bytes)
236b6cee71dSXin LI
237b6cee71dSXin LI0	string		ArC\x01		FreeArc archive <http://freearc.org>
238b6cee71dSXin LI
239b6cee71dSXin LI# Type:	DACT compressed files
240b6cee71dSXin LI0	long	0x444354C3	DACT compressed data
241b6cee71dSXin LI>4	byte	>-1		(version %i.
242b6cee71dSXin LI>5	byte	>-1		%i.
243b6cee71dSXin LI>6	byte	>-1		%i)
244b6cee71dSXin LI>7	long	>0		, original size: %i bytes
245b6cee71dSXin LI>15	long	>30		, block size: %i bytes
246b6cee71dSXin LI
247b6cee71dSXin LI# Valve Pack (VPK) files
248b6cee71dSXin LI0	lelong	0x55aa1234	Valve Pak file
249b6cee71dSXin LI>0x4	lelong	x		\b, version %u
250b6cee71dSXin LI>0x8	lelong	x		\b, %u entries
251b6cee71dSXin LI
252b6cee71dSXin LI# Snappy framing format
253b6cee71dSXin LI# http://code.google.com/p/snappy/source/browse/trunk/framing_format.txt
254b6cee71dSXin LI0	string	\377\006\0\0sNaPpY	snappy framed data
255b6cee71dSXin LI!:mime	application/x-snappy-framed
256c2931133SXin LI
257c2931133SXin LI# qpress, http://www.quicklz.com/
258c2931133SXin LI0	string	qpress10	qpress compressed data
259c2931133SXin LI!:mime	application/x-qpress
260c2931133SXin LI
261c2931133SXin LI# Zlib https://www.ietf.org/rfc/rfc6713.txt
2629ce06829SXin LI0	string/b	x
2639ce06829SXin LI>0	beshort%31	=0
2649ce06829SXin LI>>0	byte&0xf	=8
2659ce06829SXin LI>>>0	byte&0x80 	=0	zlib compressed data
266c2931133SXin LI!:mime	application/zlib
267