xref: /freebsd/contrib/file/magic/Magdir/archive (revision 2dc4dbb9673c9a3309c2dad59cb588c6f04beaea)
1b6cee71dSXin LI#------------------------------------------------------------------------------
2*2dc4dbb9SEitan Adler# $File: archive,v 1.119 2018/04/24 23:19:45 christos Exp $
3b6cee71dSXin LI# archive:  file(1) magic for archive formats (see also "msdos" for self-
4b6cee71dSXin LI#           extracting compressed archives)
5b6cee71dSXin LI#
6b6cee71dSXin LI# cpio, ar, arc, arj, hpack, lha/lharc, rar, squish, uc2, zip, zoo, etc.
758a0f0d0SEitan Adler# pre-POSIX "tar" archives are also handled in the C code ../../src/is_tar.c.
8b6cee71dSXin LI
9b6cee71dSXin LI# POSIX tar archives
1058a0f0d0SEitan Adler# URL: https://en.wikipedia.org/wiki/Tar_(computing)
1158a0f0d0SEitan Adler# Reference: https://www.freebsd.org/cgi/man.cgi?query=tar&sektion=5&manpath=FreeBSD+8-current
1258a0f0d0SEitan Adler# header mainly padded with nul bytes
1358a0f0d0SEitan Adler500	quad		0
14*2dc4dbb9SEitan Adler!:strength /2
1558a0f0d0SEitan Adler# filename or extended attribute printable strings in range space null til umlaut ue
1658a0f0d0SEitan Adler>0	ubeshort	>0x1F00
1758a0f0d0SEitan Adler>>0	ubeshort	<0xFCFD
1858a0f0d0SEitan Adler# last 4 header bytes often null but tar\0 in gtarfail2.tar gtarfail.tar-bad
1958a0f0d0SEitan Adler# at https://sourceforge.net/projects/s-tar/files/testscripts/
2058a0f0d0SEitan Adler>>>508	ubelong&0x8B9E8DFF	0
2158a0f0d0SEitan Adler# nul, space or ascii digit 0-7 at start of mode
2258a0f0d0SEitan Adler>>>>100	ubyte&0xC8	=0
2358a0f0d0SEitan Adler>>>>>101 ubyte&0xC8	=0
2458a0f0d0SEitan Adler# nul, space at end of check sum
2558a0f0d0SEitan Adler>>>>>>155 ubyte&0xDF	=0
2658a0f0d0SEitan Adler# space or ascii digit 0 at start of check sum
2758a0f0d0SEitan Adler>>>>>>>148	ubyte&0xEF	=0x20
2858a0f0d0SEitan Adler>>>>>>>>0	use	tar-file
2958a0f0d0SEitan Adler#	minimal check and then display tar archive information which can also be
3058a0f0d0SEitan Adler#	embedded inside others like Android Backup, Clam AntiVirus database
3158a0f0d0SEitan Adler0	name		tar-file
3258a0f0d0SEitan Adler>257	string		!ustar
3358a0f0d0SEitan Adler# header padded with nuls
3458a0f0d0SEitan Adler>>257	ulong		=0
3558a0f0d0SEitan Adler# GNU tar version 1.29 with non pax format option without refusing
3658a0f0d0SEitan Adler# creates misleading V7 header for Long path, Multi-volume, Volume type
3758a0f0d0SEitan Adler>>>156	ubyte		0x4c		GNU tar archive
3858a0f0d0SEitan Adler!:mime	application/x-gtar
3958a0f0d0SEitan Adler!:ext	tar/gtar
4058a0f0d0SEitan Adler>>>156	ubyte		0x4d		GNU tar archive
4158a0f0d0SEitan Adler!:mime	application/x-gtar
4258a0f0d0SEitan Adler!:ext	tar/gtar
4358a0f0d0SEitan Adler>>>156	ubyte		0x56		GNU tar archive
4458a0f0d0SEitan Adler!:mime	application/x-gtar
4558a0f0d0SEitan Adler!:ext	tar/gtar
4658a0f0d0SEitan Adler>>>156	default		x		tar archive (V7)
4758a0f0d0SEitan Adler!:mime	application/x-tar
4858a0f0d0SEitan Adler!:ext	tar
4958a0f0d0SEitan Adler# other stuff in padding
5058a0f0d0SEitan Adler# some implementations add new fields to the blank area at the end of the header record
5158a0f0d0SEitan Adler# created for example by DOS TAR 3.20g 1994 Tim V.Shapore with -j option
5258a0f0d0SEitan Adler>>257	ulong		!0		tar archive (old)
5358a0f0d0SEitan Adler!:mime	application/x-tar
5458a0f0d0SEitan Adler!:ext	tar
5558a0f0d0SEitan Adler# magic in newer, GNU, posix variants
5658a0f0d0SEitan Adler>257	string		=ustar
5758a0f0d0SEitan Adler# 2 last char of magic and UStar version because string expression does not work
5858a0f0d0SEitan Adler# 2 space characters followed by a null for GNU variant
5958a0f0d0SEitan Adler>>261	ubelong		=0x72202000	POSIX tar archive (GNU)
6058a0f0d0SEitan Adler!:mime	application/x-gtar
6158a0f0d0SEitan Adler!:ext	tar/gtar
6258a0f0d0SEitan Adler# UStar version with ASCII "00"
6358a0f0d0SEitan Adler>>261	ubelong		0x72003030	POSIX
6458a0f0d0SEitan Adler# gLOBAL and ExTENSION type only found in POSIX.1-2001 format
6558a0f0d0SEitan Adler>>>156	ubyte		0x67		\b.1-2001
6658a0f0d0SEitan Adler>>>156	ubyte		0x78		\b.1-2001
6758a0f0d0SEitan Adler>>>156	ubyte		x		tar archive
6858a0f0d0SEitan Adler!:mime	application/x-ustar
6958a0f0d0SEitan Adler!:ext	tar/ustar
7058a0f0d0SEitan Adler# version with 2 binary nuls embedded in Android Backup like com.android.settings.ab
7158a0f0d0SEitan Adler>>261	ubelong		0x72000000	tar archive (ustar)
7258a0f0d0SEitan Adler!:mime	application/x-ustar
7358a0f0d0SEitan Adler!:ext	tar/ustar
7458a0f0d0SEitan Adler# not seen ustar variant with garbish version
7558a0f0d0SEitan Adler>>261	default		x		tar archive (unknown ustar)
7658a0f0d0SEitan Adler!:mime	application/x-ustar
7758a0f0d0SEitan Adler!:ext	tar/ustar
7858a0f0d0SEitan Adler# type flag of 1st tar archive member
7958a0f0d0SEitan Adler#>156	ubyte		x		\b, %c-type
8058a0f0d0SEitan Adler>156	ubyte		x
8158a0f0d0SEitan Adler>>156	ubyte		0		\b, file
8258a0f0d0SEitan Adler>>156	ubyte		0x30		\b, file
8358a0f0d0SEitan Adler>>156	ubyte		0x31		\b, hard link
8458a0f0d0SEitan Adler>>156	ubyte		0x32		\b, symlink
8558a0f0d0SEitan Adler>>156	ubyte		0x33		\b, char device
8658a0f0d0SEitan Adler>>156	ubyte		0x34		\b, block device
8758a0f0d0SEitan Adler>>156	ubyte		0x35		\b, directory
8858a0f0d0SEitan Adler>>156	ubyte		0x36		\b, fifo
8958a0f0d0SEitan Adler>>156	ubyte		0x37		\b, reserved
9058a0f0d0SEitan Adler>>156	ubyte		0x4c		\b, long path
9158a0f0d0SEitan Adler>>156	ubyte		0x4d		\b, multi volume
9258a0f0d0SEitan Adler>>156	ubyte		0x56		\b, volume
9358a0f0d0SEitan Adler>>156	ubyte		0x67		\b, global
9458a0f0d0SEitan Adler>>156	ubyte		0x78		\b, extension
9558a0f0d0SEitan Adler>>156	default		x		\b, type
9658a0f0d0SEitan Adler>>>156	ubyte		x		'%c'
9758a0f0d0SEitan Adler# name[100]
9858a0f0d0SEitan Adler>0	string		>\0		%-.60s
9958a0f0d0SEitan Adler# mode mainly stored as an octal number in ASCII null or space terminated
10058a0f0d0SEitan Adler>100	string		>\0		\b, mode %-.7s
10158a0f0d0SEitan Adler# user id mainly as octal numbers in ASCII null or space terminated
10258a0f0d0SEitan Adler>108	string		>\0		\b, uid %-.7s
10358a0f0d0SEitan Adler# group id mainly as octal numbers in ASCII null or space terminated
10458a0f0d0SEitan Adler>116	string		>\0		\b, gid %-.7s
10558a0f0d0SEitan Adler# size mainly as octal number in ASCII
10658a0f0d0SEitan Adler>124	ubyte		<0x38
10758a0f0d0SEitan Adler>>124	string		>\0		\b, size %-.12s
10858a0f0d0SEitan Adler# coding indicated by setting the high-order bit of the leftmost byte
10958a0f0d0SEitan Adler>124	ubyte		>0xEF		\b, size 0x
11058a0f0d0SEitan Adler>>124	ubyte		!0xff		\b%2.2x
11158a0f0d0SEitan Adler>>125	ubyte		!0xff		\b%2.2x
11258a0f0d0SEitan Adler>>126	ubyte		!0xff		\b%2.2x
11358a0f0d0SEitan Adler>>127	ubyte		!0xff		\b%2.2x
11458a0f0d0SEitan Adler>>128	ubyte		!0xff		\b%2.2x
11558a0f0d0SEitan Adler>>129	ubyte		!0xff		\b%2.2x
11658a0f0d0SEitan Adler>>130	ubyte		!0xff		\b%2.2x
11758a0f0d0SEitan Adler>>131	ubyte		!0xff		\b%2.2x
11858a0f0d0SEitan Adler>>132	ubyte		!0xff		\b%2.2x
11958a0f0d0SEitan Adler>>133	ubyte		!0xff		\b%2.2x
12058a0f0d0SEitan Adler>>134	ubyte		!0xff		\b%2.2x
12158a0f0d0SEitan Adler>>135	ubyte		!0xff		\b%2.2x
12258a0f0d0SEitan Adler# seconds since 0:0:0 1 jan 1970 UTC as octal number mainly in ASCII null or space terminated
12358a0f0d0SEitan Adler>136	string		>\0		\b, seconds %-.11s
12458a0f0d0SEitan Adler# header checksum stored as an octal number in ASCII null or space terminated
12558a0f0d0SEitan Adler#>148	string		x		\b, cksum %.7s
12658a0f0d0SEitan Adler# linkname[100]
12758a0f0d0SEitan Adler>157	string		>\0		\b, linkname %-.40s
12858a0f0d0SEitan Adler# additional fields for ustar
12958a0f0d0SEitan Adler>257	string		=ustar
13058a0f0d0SEitan Adler# owner user name null terminated
13158a0f0d0SEitan Adler>>265	string		>\0		\b, user %-.32s
13258a0f0d0SEitan Adler# group name null terminated
13358a0f0d0SEitan Adler>>297	string		>\0		\b, group %-.32s
13458a0f0d0SEitan Adler# device major minor if not zero
13558a0f0d0SEitan Adler>>329	ubequad&0xCFCFCFCFcFcFcFdf	!0
13658a0f0d0SEitan Adler>>>329	string		x		\b, devmaj %-.7s
13758a0f0d0SEitan Adler>>337	ubequad&0xCFCFCFCFcFcFcFdf	!0
13858a0f0d0SEitan Adler>>>337	string		x		\b, devmin %-.7s
13958a0f0d0SEitan Adler# prefix[155]
14058a0f0d0SEitan Adler>>345	string		>\0		\b, prefix %-.155s
14158a0f0d0SEitan Adler# old non ustar/POSIX tar
14258a0f0d0SEitan Adler>257	string		!ustar
14358a0f0d0SEitan Adler>>508	string		=tar\0
14458a0f0d0SEitan Adler# padding[255] in old star
14558a0f0d0SEitan Adler>>>257	string		>\0		\b, padding: %-.40s
14658a0f0d0SEitan Adler>>508	default		x
14758a0f0d0SEitan Adler# padding[255] in old tar sometimes comment field
14858a0f0d0SEitan Adler>>>257	string		>\0		\b, comment: %-.40s
149b6cee71dSXin LI
150b6cee71dSXin LI# Incremental snapshot gnu-tar format from:
151b6cee71dSXin LI# http://www.gnu.org/software/tar/manual/html_node/Snapshot-Files.html
152b6cee71dSXin LI0	string		GNU\ tar-	GNU tar incremental snapshot data
153b6cee71dSXin LI>&0	regex		[0-9]\.[0-9]+-[0-9]+	version %s
154b6cee71dSXin LI
155b6cee71dSXin LI# cpio archives
156b6cee71dSXin LI#
157b6cee71dSXin LI# Yes, the top two "cpio archive" formats *are* supposed to just be "short".
158b6cee71dSXin LI# The idea is to indicate archives produced on machines with the same
159b6cee71dSXin LI# byte order as the machine running "file" with "cpio archive", and
160b6cee71dSXin LI# to indicate archives produced on machines with the opposite byte order
161b6cee71dSXin LI# from the machine running "file" with "byte-swapped cpio archive".
162b6cee71dSXin LI#
163b6cee71dSXin LI# The SVR4 "cpio(4)" hints that there are additional formats, but they
164b6cee71dSXin LI# are defined as "short"s; I think all the new formats are
165b6cee71dSXin LI# character-header formats and thus are strings, not numbers.
166b6cee71dSXin LI0	short		070707		cpio archive
167b6cee71dSXin LI!:mime	application/x-cpio
168b6cee71dSXin LI0	short		0143561		byte-swapped cpio archive
169b6cee71dSXin LI!:mime	application/x-cpio # encoding: swapped
170b6cee71dSXin LI0	string		070707		ASCII cpio archive (pre-SVR4 or odc)
171b6cee71dSXin LI0	string		070701		ASCII cpio archive (SVR4 with no CRC)
172b6cee71dSXin LI0	string		070702		ASCII cpio archive (SVR4 with CRC)
173b6cee71dSXin LI
174b6cee71dSXin LI#
175b6cee71dSXin LI# Various archive formats used by various versions of the "ar"
176b6cee71dSXin LI# command.
177b6cee71dSXin LI#
178b6cee71dSXin LI
179b6cee71dSXin LI#
180b6cee71dSXin LI# Original UNIX archive formats.
181b6cee71dSXin LI# They were written with binary values in host byte order, and
182b6cee71dSXin LI# the magic number was a host "int", which might have been 16 bits
183b6cee71dSXin LI# or 32 bits.  We don't say "PDP-11" or "VAX", as there might have
184b6cee71dSXin LI# been ports to little-endian 16-bit-int or 32-bit-int platforms
185b6cee71dSXin LI# (x86?) using some of those formats; if none existed, feel free
186b6cee71dSXin LI# to use "PDP-11" for little-endian 16-bit and "VAX" for little-endian
187b6cee71dSXin LI# 32-bit.  There might have been big-endian ports of that sort as
188b6cee71dSXin LI# well.
189b6cee71dSXin LI#
190b6cee71dSXin LI0	leshort		0177555		very old 16-bit-int little-endian archive
191b6cee71dSXin LI0	beshort		0177555		very old 16-bit-int big-endian archive
192b6cee71dSXin LI0	lelong		0177555		very old 32-bit-int little-endian archive
193b6cee71dSXin LI0	belong		0177555		very old 32-bit-int big-endian archive
194b6cee71dSXin LI
195b6cee71dSXin LI0	leshort		0177545		old 16-bit-int little-endian archive
196b6cee71dSXin LI>2	string		__.SYMDEF	random library
197b6cee71dSXin LI0	beshort		0177545		old 16-bit-int big-endian archive
198b6cee71dSXin LI>2	string		__.SYMDEF	random library
199b6cee71dSXin LI0	lelong		0177545		old 32-bit-int little-endian archive
200b6cee71dSXin LI>4	string		__.SYMDEF	random library
201b6cee71dSXin LI0	belong		0177545		old 32-bit-int big-endian archive
202b6cee71dSXin LI>4	string		__.SYMDEF	random library
203b6cee71dSXin LI
204b6cee71dSXin LI#
205b6cee71dSXin LI# From "pdp" (but why a 4-byte quantity?)
206b6cee71dSXin LI#
207b6cee71dSXin LI0	lelong		0x39bed		PDP-11 old archive
208b6cee71dSXin LI0	lelong		0x39bee		PDP-11 4.0 archive
209b6cee71dSXin LI
210b6cee71dSXin LI#
211b6cee71dSXin LI# XXX - what flavor of APL used this, and was it a variant of
212b6cee71dSXin LI# some ar archive format?  It's similar to, but not the same
213b6cee71dSXin LI# as, the APL workspace magic numbers in pdp.
214b6cee71dSXin LI#
215b6cee71dSXin LI0	long		0100554		apl workspace
216b6cee71dSXin LI
217b6cee71dSXin LI#
218b6cee71dSXin LI# System V Release 1 portable(?) archive format.
219b6cee71dSXin LI#
220b6cee71dSXin LI0	string		=<ar>		System V Release 1 ar archive
221b6cee71dSXin LI!:mime	application/x-archive
222b6cee71dSXin LI
223b6cee71dSXin LI#
224b6cee71dSXin LI# Debian package; it's in the portable archive format, and needs to go
225b6cee71dSXin LI# before the entry for regular portable archives, as it's recognized as
226b6cee71dSXin LI# a portable archive whose first member has a name beginning with
227b6cee71dSXin LI# "debian".
228b6cee71dSXin LI#
229b6cee71dSXin LI0	string		=!<arch>\ndebian
230b6cee71dSXin LI>8	string		debian-split	part of multipart Debian package
231b6cee71dSXin LI!:mime	application/vnd.debian.binary-package
232b6cee71dSXin LI>8	string		debian-binary	Debian binary package
233b6cee71dSXin LI!:mime	application/vnd.debian.binary-package
234b6cee71dSXin LI>8	string		!debian
235b6cee71dSXin LI>68	string		>\0		(format %s)
236b6cee71dSXin LI# These next two lines do not work, because a bzip2 Debian archive
237b6cee71dSXin LI# still uses gzip for the control.tar (first in the archive).  Only
238b6cee71dSXin LI# data.tar varies, and the location of its filename varies too.
239b6cee71dSXin LI# file/libmagic does not current have support for ascii-string based
240b6cee71dSXin LI# (offsets) as of 2005-09-15.
241b6cee71dSXin LI#>81	string		bz2		\b, uses bzip2 compression
242b6cee71dSXin LI#>84	string		gz		\b, uses gzip compression
243b6cee71dSXin LI#>136	ledate		x		created: %s
244b6cee71dSXin LI
245b6cee71dSXin LI#
246b6cee71dSXin LI# MIPS archive; they're in the portable archive format, and need to go
247b6cee71dSXin LI# before the entry for regular portable archives, as it's recognized as
248b6cee71dSXin LI# a portable archive whose first member has a name beginning with
249b6cee71dSXin LI# "__________E".
250b6cee71dSXin LI#
251b6cee71dSXin LI0	string	=!<arch>\n__________E	MIPS archive
252b6cee71dSXin LI!:mime	application/x-archive
253b6cee71dSXin LI>20	string	U			with MIPS Ucode members
254b6cee71dSXin LI>21	string	L			with MIPSEL members
255b6cee71dSXin LI>21	string	B			with MIPSEB members
256b6cee71dSXin LI>19	string	L			and an EL hash table
257b6cee71dSXin LI>19	string	B			and an EB hash table
258b6cee71dSXin LI>22	string	X			-- out of date
259b6cee71dSXin LI
260b6cee71dSXin LI0	search/1	-h-		Software Tools format archive text
261b6cee71dSXin LI
262b6cee71dSXin LI#
263b6cee71dSXin LI# BSD/SVR2-and-later portable archive formats.
264b6cee71dSXin LI#
265*2dc4dbb9SEitan Adler0	string		=!<arch>\n		current ar archive
266b6cee71dSXin LI!:mime	application/x-archive
267b6cee71dSXin LI>8	string		__.SYMDEF	random library
268b6cee71dSXin LI>68	string		__.SYMDEF\ SORTED	random library
269b6cee71dSXin LI
270b6cee71dSXin LI#
271b6cee71dSXin LI# "Thin" archive, as can be produced by GNU ar.
272b6cee71dSXin LI#
273b6cee71dSXin LI0	string		=!<thin>\n	thin archive with
274b6cee71dSXin LI>68	belong		0		no symbol entries
275b6cee71dSXin LI>68	belong		1		%d symbol entry
276b6cee71dSXin LI>68	belong		>1		%d symbol entries
277b6cee71dSXin LI
278b6cee71dSXin LI# ARC archiver, from Daniel Quinlan (quinlan@yggdrasil.com)
279b6cee71dSXin LI#
280b6cee71dSXin LI# The first byte is the magic (0x1a), byte 2 is the compression type for
281b6cee71dSXin LI# the first file (0x01 through 0x09), and bytes 3 to 15 are the MS-DOS
282b6cee71dSXin LI# filename of the first file (null terminated).  Since some types collide
283b6cee71dSXin LI# we only test some types on basis of frequency: 0x08 (83%), 0x09 (5%),
284b6cee71dSXin LI# 0x02 (5%), 0x03 (3%), 0x04 (2%), 0x06 (2%).  0x01 collides with terminfo.
285b6cee71dSXin LI0	lelong&0x8080ffff	0x0000081a	ARC archive data, dynamic LZW
286b6cee71dSXin LI!:mime	application/x-arc
287b6cee71dSXin LI0	lelong&0x8080ffff	0x0000091a	ARC archive data, squashed
288b6cee71dSXin LI!:mime	application/x-arc
289b6cee71dSXin LI0	lelong&0x8080ffff	0x0000021a	ARC archive data, uncompressed
290b6cee71dSXin LI!:mime	application/x-arc
291b6cee71dSXin LI0	lelong&0x8080ffff	0x0000031a	ARC archive data, packed
292b6cee71dSXin LI!:mime	application/x-arc
293b6cee71dSXin LI0	lelong&0x8080ffff	0x0000041a	ARC archive data, squeezed
294b6cee71dSXin LI!:mime	application/x-arc
295b6cee71dSXin LI0	lelong&0x8080ffff	0x0000061a	ARC archive data, crunched
296b6cee71dSXin LI!:mime	application/x-arc
297b6cee71dSXin LI# [JW] stuff taken from idarc, obviously ARC successors:
298b6cee71dSXin LI0	lelong&0x8080ffff	0x00000a1a	PAK archive data
299b6cee71dSXin LI!:mime	application/x-arc
300b6cee71dSXin LI0	lelong&0x8080ffff	0x0000141a	ARC+ archive data
301b6cee71dSXin LI!:mime	application/x-arc
302b6cee71dSXin LI0	lelong&0x8080ffff	0x0000481a	HYP archive data
303b6cee71dSXin LI!:mime	application/x-arc
304b6cee71dSXin LI
305b6cee71dSXin LI# Acorn archive formats (Disaster prone simpleton, m91dps@ecs.ox.ac.uk)
306b6cee71dSXin LI# I can't create either SPARK or ArcFS archives so I have not tested this stuff
307b6cee71dSXin LI# [GRR:  the original entries collide with ARC, above; replaced with combined
308b6cee71dSXin LI#  version (not tested)]
309b6cee71dSXin LI#0	byte		0x1a		RISC OS archive (spark format)
310b6cee71dSXin LI0	string		\032archive	RISC OS archive (ArcFS format)
311b6cee71dSXin LI0       string          Archive\000     RISC OS archive (ArcFS format)
312b6cee71dSXin LI
313b6cee71dSXin LI# All these were taken from idarc, many could not be verified. Unfortunately,
314b6cee71dSXin LI# there were many low-quality sigs, i.e. easy to trigger false positives.
315b6cee71dSXin LI# Please notify me of any real-world fishy/ambiguous signatures and I'll try
316b6cee71dSXin LI# to get my hands on the actual archiver and see if I find something better. [JW]
317b6cee71dSXin LI# probably many can be enhanced by finding some 0-byte or control char near the start
318b6cee71dSXin LI
319b6cee71dSXin LI# idarc calls this Crush/Uncompressed... *shrug*
320b6cee71dSXin LI0	string	CRUSH Crush archive data
321b6cee71dSXin LI# Squeeze It (.sqz)
322b6cee71dSXin LI0	string	HLSQZ Squeeze It archive data
323b6cee71dSXin LI# SQWEZ
324b6cee71dSXin LI0	string	SQWEZ SQWEZ archive data
325b6cee71dSXin LI# HPack (.hpk)
326b6cee71dSXin LI0	string	HPAK HPack archive data
327b6cee71dSXin LI# HAP
328b6cee71dSXin LI0	string	\x91\x33HF HAP archive data
329b6cee71dSXin LI# MD/MDCD
330b6cee71dSXin LI0	string	MDmd MDCD archive data
331b6cee71dSXin LI# LIM
332b6cee71dSXin LI0	string	LIM\x1a LIM archive data
333b6cee71dSXin LI# SAR
334b6cee71dSXin LI3	string	LH5 SAR archive data
335b6cee71dSXin LI# BSArc/BS2
336b6cee71dSXin LI0	string	\212\3SB\020\0	BSArc/BS2 archive data
337b6cee71dSXin LI# Bethesda Softworks Archive (Oblivion)
338b6cee71dSXin LI0	string	BSA\0 		BSArc archive data
339b6cee71dSXin LI>4	lelong	x		version %d
340b6cee71dSXin LI# MAR
341b6cee71dSXin LI2	string	=-ah MAR archive data
342b6cee71dSXin LI# ACB
343b6cee71dSXin LI#0	belong&0x00f800ff	0x00800000 ACB archive data
344b6cee71dSXin LI# CPZ
345b6cee71dSXin LI# TODO, this is what idarc says: 0	string	\0\0\0 CPZ archive data
346b6cee71dSXin LI# JRC
347b6cee71dSXin LI0	string	JRchive JRC archive data
348b6cee71dSXin LI# Quantum
349b6cee71dSXin LI0	string	DS\0 Quantum archive data
350b6cee71dSXin LI# ReSOF
351b6cee71dSXin LI0	string	PK\3\6 ReSOF archive data
352b6cee71dSXin LI# QuArk
353b6cee71dSXin LI0	string	7\4 QuArk archive data
354b6cee71dSXin LI# YAC
355b6cee71dSXin LI14	string	YC YAC archive data
356b6cee71dSXin LI# X1
357b6cee71dSXin LI0	string	X1 X1 archive data
358b6cee71dSXin LI0	string	XhDr X1 archive data
359b6cee71dSXin LI# CDC Codec (.dqt)
360b6cee71dSXin LI0	belong&0xffffe000	0x76ff2000 CDC Codec archive data
361b6cee71dSXin LI# AMGC
362b6cee71dSXin LI0	string	\xad6" AMGC archive data
363b6cee71dSXin LI# NuLIB
364b6cee71dSXin LI0	string	N\xc3\xb5F\xc3\xa9lx\xc3\xa5 NuLIB archive data
365b6cee71dSXin LI# PakLeo
366b6cee71dSXin LI0	string	LEOLZW PAKLeo archive data
367b6cee71dSXin LI# ChArc
368b6cee71dSXin LI0	string	SChF ChArc archive data
369b6cee71dSXin LI# PSA
370b6cee71dSXin LI0	string	PSA PSA archive data
371b6cee71dSXin LI# CrossePAC
372b6cee71dSXin LI0	string	DSIGDCC CrossePAC archive data
373b6cee71dSXin LI# Freeze
374b6cee71dSXin LI0	string	\x1f\x9f\x4a\x10\x0a Freeze archive data
375b6cee71dSXin LI# KBoom
376b6cee71dSXin LI0	string	\xc2\xa8MP\xc2\xa8 KBoom archive data
377b6cee71dSXin LI# NSQ, must go after CDC Codec
378b6cee71dSXin LI0	string	\x76\xff NSQ archive data
379b6cee71dSXin LI# DPA
380b6cee71dSXin LI0	string	Dirk\ Paehl DPA archive data
381b6cee71dSXin LI# BA
382b6cee71dSXin LI# TODO: idarc says "bytes 0-2 == bytes 3-5"
383b6cee71dSXin LI# TTComp
3843e41d09dSXin LI# URL: http://fileformats.archiveteam.org/wiki/TTComp_archive
3853e41d09dSXin LI# Update: Joerg Jenderek
3863e41d09dSXin LI# GRR: line below is too general as it matches also Panorama database "TCDB 2003-10 demo.pan", others
3873e41d09dSXin LI0	string	\0\6
3883e41d09dSXin LI# look for first keyword of Panorama database *.pan
3893e41d09dSXin LI>12	search/261	DESIGN
3903e41d09dSXin LI# skip keyword with low entropy
3913e41d09dSXin LI>12	default		x	TTComp archive, binary, 4K dictionary
3923e41d09dSXin LI# (version 5.25) labeled the above entry as "TTComp archive data"
393b6cee71dSXin LI# ESP, could this conflict with Easy Software Products' (e.g.ESP ghostscript) documentation?
394b6cee71dSXin LI0	string	ESP ESP archive data
395b6cee71dSXin LI# ZPack
396b6cee71dSXin LI0	string	\1ZPK\1 ZPack archive data
397b6cee71dSXin LI# Sky
398b6cee71dSXin LI0	string	\xbc\x40 Sky archive data
399b6cee71dSXin LI# UFA
400b6cee71dSXin LI0	string	UFA UFA archive data
401b6cee71dSXin LI# Dry
402b6cee71dSXin LI0	string	=-H2O DRY archive data
403b6cee71dSXin LI# FoxSQZ
404b6cee71dSXin LI0	string	FOXSQZ FoxSQZ archive data
405b6cee71dSXin LI# AR7
406b6cee71dSXin LI0	string	,AR7 AR7 archive data
407b6cee71dSXin LI# PPMZ
408b6cee71dSXin LI0	string	PPMZ PPMZ archive data
409b6cee71dSXin LI# MS Compress
41058a0f0d0SEitan Adler# Update: Joerg Jenderek
41158a0f0d0SEitan Adler# URL: http://fileformats.archiveteam.org/wiki/MS-DOS_installation_compression
41258a0f0d0SEitan Adler# Reference: https://hwiegman.home.xs4all.nl/fileformats/compress/szdd_kwaj_format.html
41358a0f0d0SEitan Adler# Note: use correct version of extracting tool like EXPAND, UNPACK, DECOMP or 7Z
41458a0f0d0SEitan Adler4	string	\x88\xf0\x27
41558a0f0d0SEitan Adler#		KWAJ variant
41658a0f0d0SEitan Adler>0	string	KWAJ		MS Compress archive data, KWAJ variant
41758a0f0d0SEitan Adler!:mime	application/x-ms-compress-kwaj
41858a0f0d0SEitan Adler# extension not working in version 5.32
41958a0f0d0SEitan Adler# magic/Magdir/archive, 284: Warning: EXTENSION type ` ??_' has bad char '?'
42058a0f0d0SEitan Adler# file: line 284: Bad magic entry '   ??_'
42158a0f0d0SEitan Adler!:ext	??_
42258a0f0d0SEitan Adler# compression method (0-4)
42358a0f0d0SEitan Adler>>8	uleshort	x	\b, %u method
42458a0f0d0SEitan Adler# offset of compressed data
42558a0f0d0SEitan Adler>>10	uleshort	x	\b, 0x%x offset
42658a0f0d0SEitan Adler#>>(10.s)	uleshort	x
42758a0f0d0SEitan Adler#>>>&-6		string	x	\b, TEST extension %-.3s
42858a0f0d0SEitan Adler# header flags to mark header extensions
42958a0f0d0SEitan Adler>>12	uleshort	>0	\b, 0x%x flags
43058a0f0d0SEitan Adler# 4 bytes: decompressed length of file
43158a0f0d0SEitan Adler>>12	uleshort	&0x01
43258a0f0d0SEitan Adler>>>14	ulelong		x	\b, original size: %u bytes
43358a0f0d0SEitan Adler# 2 bytes: unknown purpose
43458a0f0d0SEitan Adler# 2 bytes: length of unknown data + mentioned bytes
43558a0f0d0SEitan Adler# 1-9 bytes: null-terminated file name
43658a0f0d0SEitan Adler# 1-4 bytes: null-terminated file extension
43758a0f0d0SEitan Adler>>12	uleshort	&0x08
43858a0f0d0SEitan Adler>>>12	uleshort				^0x01
43958a0f0d0SEitan Adler>>>>12		uleshort			^0x02
44058a0f0d0SEitan Adler>>>>>12			uleshort		^0x04
44158a0f0d0SEitan Adler>>>>>>12			uleshort	^0x10
44258a0f0d0SEitan Adler>>>>>>>14				string	x	\b, %-.8s
44358a0f0d0SEitan Adler>>>>>>12			uleshort	&0x10
44458a0f0d0SEitan Adler>>>>>>>14				string	x	\b, %-.8s
44558a0f0d0SEitan Adler>>>>>>>>&1				string	x	\b.%-.3s
44658a0f0d0SEitan Adler>>>>>12			uleshort		&0x04
44758a0f0d0SEitan Adler>>>>>>12			uleshort	^0x10
44858a0f0d0SEitan Adler>>>>>>>(14.s)			uleshort	x
44958a0f0d0SEitan Adler>>>>>>>>&14				string	x	\b, %-.8s
45058a0f0d0SEitan Adler>>>>>>12			uleshort	&0x10
45158a0f0d0SEitan Adler>>>>>>>(14.s)			uleshort	x
45258a0f0d0SEitan Adler>>>>>>>>&14				string	x	\b, %-.8s
45358a0f0d0SEitan Adler>>>>>>>>>&1				string	x	\b.%-.3s
45458a0f0d0SEitan Adler>>>>12		uleshort			&0x02
45558a0f0d0SEitan Adler>>>>>12			uleshort		^0x04
45658a0f0d0SEitan Adler>>>>>>12			uleshort	^0x10
45758a0f0d0SEitan Adler>>>>>>>16				string	x	\b, %-.8s
45858a0f0d0SEitan Adler>>>>>>12			uleshort	&0x10
45958a0f0d0SEitan Adler>>>>>>>16				string	x	\b, %-.8s
46058a0f0d0SEitan Adler>>>>>>>>&1				string	x	\b.%-.3s
46158a0f0d0SEitan Adler>>>>>12			uleshort		&0x04
46258a0f0d0SEitan Adler>>>>>>12			uleshort	^0x10
46358a0f0d0SEitan Adler>>>>>>>(16.s)			uleshort	x
46458a0f0d0SEitan Adler>>>>>>>>&16				string	x	\b, %-.8s
46558a0f0d0SEitan Adler>>>>>>12			uleshort	&0x10
46658a0f0d0SEitan Adler>>>>>>>(16.s)			uleshort	x
46758a0f0d0SEitan Adler>>>>>>>&16				string	x	%-.8s
46858a0f0d0SEitan Adler>>>>>>>>&1				string	x	\b.%-.3s
46958a0f0d0SEitan Adler>>>12	uleshort				&0x01
47058a0f0d0SEitan Adler>>>>12		uleshort			^0x02
47158a0f0d0SEitan Adler>>>>>12			uleshort		^0x04
47258a0f0d0SEitan Adler>>>>>>12			uleshort	^0x10
47358a0f0d0SEitan Adler>>>>>>>18				string	x	\b, %-.8s
47458a0f0d0SEitan Adler>>>>>>12			uleshort	&0x10
47558a0f0d0SEitan Adler>>>>>>>18				string	x	\b, %-.8s
47658a0f0d0SEitan Adler>>>>>>>>&1				string	x	\b.%-.3s
47758a0f0d0SEitan Adler>>>>>12			uleshort		&0x04
47858a0f0d0SEitan Adler>>>>>>12			uleshort	^0x10
47958a0f0d0SEitan Adler>>>>>>>(18.s)			uleshort	x
48058a0f0d0SEitan Adler>>>>>>>>&18				string	x	\b, %-.8s
48158a0f0d0SEitan Adler>>>>>>12			uleshort	&0x10
48258a0f0d0SEitan Adler>>>>>>>(18.s)			uleshort	x
48358a0f0d0SEitan Adler>>>>>>>>&18				string	x	\b, %-.8s
48458a0f0d0SEitan Adler>>>>>>>>>&1				string	x	\b.%-.3s
48558a0f0d0SEitan Adler>>>>12		uleshort			&0x02
48658a0f0d0SEitan Adler>>>>>12			uleshort		^0x04
48758a0f0d0SEitan Adler>>>>>>12			uleshort	^0x10
48858a0f0d0SEitan Adler>>>>>>>20				string	x	\b, %-.8s
48958a0f0d0SEitan Adler>>>>>>12			uleshort	&0x10
49058a0f0d0SEitan Adler>>>>>>>20				string	x	\b, %-.8s
49158a0f0d0SEitan Adler>>>>>>>>&1				string	x	\b.%-.3s
49258a0f0d0SEitan Adler>>>>>12			uleshort		&0x04
49358a0f0d0SEitan Adler>>>>>>12			uleshort	^0x10
49458a0f0d0SEitan Adler>>>>>>>(20.s)			uleshort	x
49558a0f0d0SEitan Adler>>>>>>>>&20				string	x	\b, %-.8s
49658a0f0d0SEitan Adler>>>>>>12			uleshort	&0x10
49758a0f0d0SEitan Adler>>>>>>>(20.s)			uleshort	x
49858a0f0d0SEitan Adler>>>>>>>>&20				string	x	\b, %-.8s
49958a0f0d0SEitan Adler>>>>>>>>>&1				string	x	\b.%-.3s
50058a0f0d0SEitan Adler# 2 bytes: length of data + mentioned bytes
50158a0f0d0SEitan Adler#
50258a0f0d0SEitan Adler#		SZDD variant Haruhiko Okumura's LZSS or 7z type MsLZ
50358a0f0d0SEitan Adler>0	string	SZDD		MS Compress archive data, SZDD variant
50458a0f0d0SEitan Adler!:mime	application/x-ms-compress-szdd
50558a0f0d0SEitan Adler!:ext	??_
50658a0f0d0SEitan Adler# The character missing from the end of the filename (0=unknown)
50758a0f0d0SEitan Adler>>9	string	>\0		\b, %-.1s is last character of original name
50858a0f0d0SEitan Adler# https://www.betaarchive.com/forum/viewtopic.php?t=26161
50958a0f0d0SEitan Adler# Compression mode: "A" (0x41) found but sometimes "B" in Windows 3.1 builds 026 and 034e
51058a0f0d0SEitan Adler>>8	string	!A		\b, %-.1s method
51158a0f0d0SEitan Adler>>10	ulelong	>0		\b, original size: %u bytes
51258a0f0d0SEitan Adler#		QBasic SZDD variant
51358a0f0d0SEitan Adler3	string	\x88\xf0\x27
51458a0f0d0SEitan Adler>0	string	SZ\x20		MS Compress archive data, QBasic variant
51558a0f0d0SEitan Adler!:mime	application/x-ms-compress-sz
51658a0f0d0SEitan Adler!:ext	??$
51758a0f0d0SEitan Adler>>8	ulelong	>0		\b, original size: %u bytes
51858a0f0d0SEitan Adler
519b6cee71dSXin LI# MP3 (archiver, not lossy audio compression)
520b6cee71dSXin LI0	string	MP3\x1a MP3-Archiver archive data
521b6cee71dSXin LI# ZET
522b6cee71dSXin LI0	string	OZ\xc3\x9d ZET archive data
523b6cee71dSXin LI# TSComp
524b6cee71dSXin LI0	string	\x65\x5d\x13\x8c\x08\x01\x03\x00 TSComp archive data
525b6cee71dSXin LI# ARQ
526b6cee71dSXin LI0	string	gW\4\1 ARQ archive data
527b6cee71dSXin LI# Squash
528b6cee71dSXin LI3	string	OctSqu Squash archive data
529b6cee71dSXin LI# Terse
530b6cee71dSXin LI0	string	\5\1\1\0 Terse archive data
531b6cee71dSXin LI# PUCrunch
532b6cee71dSXin LI0	string	\x01\x08\x0b\x08\xef\x00\x9e\x32\x30\x36\x31 PUCrunch archive data
533b6cee71dSXin LI# UHarc
534b6cee71dSXin LI0	string	UHA UHarc archive data
535b6cee71dSXin LI# ABComp
536b6cee71dSXin LI0	string	\2AB ABComp archive data
537b6cee71dSXin LI0	string	\3AB2 ABComp archive data
538b6cee71dSXin LI# CMP
539b6cee71dSXin LI0	string	CO\0 CMP archive data
540b6cee71dSXin LI# Splint
541b6cee71dSXin LI0	string	\x93\xb9\x06 Splint archive data
542b6cee71dSXin LI# InstallShield
543b6cee71dSXin LI0	string	\x13\x5d\x65\x8c InstallShield Z archive Data
544b6cee71dSXin LI# Gather
545b6cee71dSXin LI1	string	GTH Gather archive data
546b6cee71dSXin LI# BOA
547b6cee71dSXin LI0	string	BOA BOA archive data
548b6cee71dSXin LI# RAX
549b6cee71dSXin LI0	string	ULEB\xa RAX archive data
550b6cee71dSXin LI# Xtreme
551b6cee71dSXin LI0	string	ULEB\0 Xtreme archive data
552b6cee71dSXin LI# Pack Magic
553b6cee71dSXin LI0	string	@\xc3\xa2\1\0 Pack Magic archive data
554b6cee71dSXin LI# BTS
555b6cee71dSXin LI0	belong&0xfeffffff	0x1a034465 BTS archive data
556b6cee71dSXin LI# ELI 5750
557b6cee71dSXin LI0	string	Ora\  ELI 5750 archive data
558b6cee71dSXin LI# QFC
559b6cee71dSXin LI0	string	\x1aFC\x1a QFC archive data
560b6cee71dSXin LI0	string	\x1aQF\x1a QFC archive data
561b6cee71dSXin LI# PRO-PACK
562b6cee71dSXin LI0	string	RNC PRO-PACK archive data
563b6cee71dSXin LI# 777
564b6cee71dSXin LI0	string	777 777 archive data
565b6cee71dSXin LI# LZS221
566b6cee71dSXin LI0	string	sTaC LZS221 archive data
567b6cee71dSXin LI# HPA
568b6cee71dSXin LI0	string	HPA HPA archive data
569b6cee71dSXin LI# Arhangel
570b6cee71dSXin LI0	string	LG Arhangel archive data
571b6cee71dSXin LI# EXP1, uses bzip2
572b6cee71dSXin LI0	string	0123456789012345BZh EXP1 archive data
573b6cee71dSXin LI# IMP
574b6cee71dSXin LI0	string	IMP\xa IMP archive data
575b6cee71dSXin LI# NRV
576b6cee71dSXin LI0	string	\x00\x9E\x6E\x72\x76\xFF NRV archive data
577b6cee71dSXin LI# Squish
578b6cee71dSXin LI0	string	\x73\xb2\x90\xf4 Squish archive data
579b6cee71dSXin LI# Par
580b6cee71dSXin LI0	string	PHILIPP Par archive data
581b6cee71dSXin LI0	string	PAR Par archive data
582b6cee71dSXin LI# HIT
583b6cee71dSXin LI0	string	UB HIT archive data
584b6cee71dSXin LI# SBX
585b6cee71dSXin LI0	belong&0xfffff000	0x53423000 SBX archive data
586b6cee71dSXin LI# NaShrink
587b6cee71dSXin LI0	string	NSK NaShrink archive data
588b6cee71dSXin LI# SAPCAR
589b6cee71dSXin LI0	string	#\ CAR\ archive\ header SAPCAR archive data
590b6cee71dSXin LI0	string	CAR\ 2.00RG SAPCAR archive data
591b6cee71dSXin LI# Disintegrator
592b6cee71dSXin LI0	string	DST Disintegrator archive data
593b6cee71dSXin LI# ASD
594b6cee71dSXin LI0	string	ASD ASD archive data
595b6cee71dSXin LI# InstallShield CAB
596b6cee71dSXin LI0	string	ISc( InstallShield CAB
597b6cee71dSXin LI# TOP4
598b6cee71dSXin LI0	string	T4\x1a TOP4 archive data
599b6cee71dSXin LI# BatComp left out: sig looks like COM executable
600b6cee71dSXin LI# so TODO: get real 4dos batcomp file and find sig
601b6cee71dSXin LI# BlakHole
602b6cee71dSXin LI0	string	BH\5\7 BlakHole archive data
603b6cee71dSXin LI# BIX
604b6cee71dSXin LI0	string	BIX0 BIX archive data
605b6cee71dSXin LI# ChiefLZA
606b6cee71dSXin LI0	string	ChfLZ ChiefLZA archive data
607b6cee71dSXin LI# Blink
608b6cee71dSXin LI0	string	Blink Blink archive data
609b6cee71dSXin LI# Logitech Compress
610b6cee71dSXin LI0	string	\xda\xfa Logitech Compress archive data
611b6cee71dSXin LI# ARS-Sfx (FIXME: really a SFX? then goto COM/EXE)
612b6cee71dSXin LI1	string	(C)\ STEPANYUK ARS-Sfx archive data
613b6cee71dSXin LI# AKT/AKT32
614b6cee71dSXin LI0	string	AKT32 AKT32 archive data
615b6cee71dSXin LI0	string	AKT AKT archive data
616b6cee71dSXin LI# NPack
617b6cee71dSXin LI0	string	MSTSM NPack archive data
618b6cee71dSXin LI# PFT
619b6cee71dSXin LI0	string	\0\x50\0\x14 PFT archive data
620b6cee71dSXin LI# SemOne
621b6cee71dSXin LI0	string	SEM SemOne archive data
622b6cee71dSXin LI# PPMD
623b6cee71dSXin LI0	string	\x8f\xaf\xac\x84 PPMD archive data
624b6cee71dSXin LI# FIZ
625b6cee71dSXin LI0	string	FIZ FIZ archive data
626b6cee71dSXin LI# MSXiE
627b6cee71dSXin LI0	belong&0xfffff0f0	0x4d530000 MSXiE archive data
628b6cee71dSXin LI# DeepFreezer
629b6cee71dSXin LI0	belong&0xfffffff0	0x797a3030 DeepFreezer archive data
630b6cee71dSXin LI# DC
631b6cee71dSXin LI0	string	=<DC- DC archive data
632b6cee71dSXin LI# TPac
633b6cee71dSXin LI0	string	\4TPAC\3 TPac archive data
634b6cee71dSXin LI# Ai
635b6cee71dSXin LI0	string	Ai\1\1\0 Ai archive data
636b6cee71dSXin LI0	string	Ai\1\0\0 Ai archive data
637b6cee71dSXin LI# Ai32
638b6cee71dSXin LI0	string	Ai\2\0 Ai32 archive data
639b6cee71dSXin LI0	string	Ai\2\1 Ai32 archive data
640b6cee71dSXin LI# SBC
641b6cee71dSXin LI0	string	SBC SBC archive data
642b6cee71dSXin LI# Ybs
643b6cee71dSXin LI0	string	YBS Ybs archive data
644b6cee71dSXin LI# DitPack
645b6cee71dSXin LI0	string	\x9e\0\0 DitPack archive data
646b6cee71dSXin LI# DMS
647b6cee71dSXin LI0	string	DMS! DMS archive data
648b6cee71dSXin LI# EPC
649b6cee71dSXin LI0	string	\x8f\xaf\xac\x8c EPC archive data
650b6cee71dSXin LI# VSARC
651b6cee71dSXin LI0	string	VS\x1a VSARC archive data
652b6cee71dSXin LI# PDZ
653b6cee71dSXin LI0	string	PDZ PDZ archive data
654b6cee71dSXin LI# ReDuq
655b6cee71dSXin LI0	string	rdqx ReDuq archive data
656b6cee71dSXin LI# GCA
657b6cee71dSXin LI0	string	GCAX GCA archive data
658b6cee71dSXin LI# PPMN
659b6cee71dSXin LI0	string	pN PPMN archive data
660b6cee71dSXin LI# WinImage
661b6cee71dSXin LI3	string	WINIMAGE WinImage archive data
662b6cee71dSXin LI# Compressia
663b6cee71dSXin LI0	string	CMP0CMP Compressia archive data
664b6cee71dSXin LI# UHBC
665b6cee71dSXin LI0	string	UHB UHBC archive data
666b6cee71dSXin LI# WinHKI
667b6cee71dSXin LI0	string	\x61\x5C\x04\x05 WinHKI archive data
668b6cee71dSXin LI# WWPack data file
669b6cee71dSXin LI0	string	WWP WWPack archive data
670b6cee71dSXin LI# BSN (BSA, PTS-DOS)
671b6cee71dSXin LI0	string	\xffBSG BSN archive data
672b6cee71dSXin LI1	string	\xffBSG BSN archive data
673b6cee71dSXin LI3	string	\xffBSG BSN archive data
674b6cee71dSXin LI1	string	\0\xae\2 BSN archive data
675b6cee71dSXin LI1	string	\0\xae\3 BSN archive data
676b6cee71dSXin LI1	string	\0\xae\7 BSN archive data
677b6cee71dSXin LI# AIN
678b6cee71dSXin LI0	string	\x33\x18 AIN archive data
679b6cee71dSXin LI0	string	\x33\x17 AIN archive data
6809ce06829SXin LI# XPA32 test moved and merged with XPA by Joerg Jenderek at Sep 2015
681b6cee71dSXin LI# SZip (TODO: doesn't catch all versions)
682b6cee71dSXin LI0	string	SZ\x0a\4 SZip archive data
683b6cee71dSXin LI# XPack DiskImage
6849ce06829SXin LI# *.XDI updated by Joerg Jenderek Sep 2015
6859ce06829SXin LI# ftp://ftp.sac.sk/pub/sac/pack/0index.txt
6869ce06829SXin LI# GRR: this test is still too general as it catches also text files starting with jm
6879ce06829SXin LI0	string	jm
6889ce06829SXin LI# only found examples with this additional characteristic 2 bytes
6899ce06829SXin LI>2	string	\x2\x4	Xpack DiskImage archive data
6909ce06829SXin LI#!:ext xdi
691b6cee71dSXin LI# XPack Data
6929ce06829SXin LI# *.xpa updated by Joerg Jenderek Sep 2015
6939ce06829SXin LI# ftp://ftp.elf.stuba.sk/pub/pc/pack/
6949ce06829SXin LI0	string	xpa	XPA
6959ce06829SXin LI!:ext	xpa
6969ce06829SXin LI# XPA32
6979ce06829SXin LI# ftp://ftp.elf.stuba.sk/pub/pc/pack/xpa32.zip
6989ce06829SXin LI# created by XPA32.EXE version 1.0.2 for Windows
6999ce06829SXin LI>0	string	xpa\0\1 \b32 archive data
7009ce06829SXin LI# created by XPACK.COM version 1.67m or 1.67r with short 0x1800
7019ce06829SXin LI>3	ubeshort	!0x0001	\bck archive data
702b6cee71dSXin LI# XPack Single Data
7039ce06829SXin LI# changed by Joerg Jenderek Sep 2015 back to like in version 5.12
7049ce06829SXin LI# letter 'I'+ acute accent is equivalent to \xcd
7059ce06829SXin LI0	string	\xcd\ jm	Xpack single archive data
7069ce06829SXin LI#!:mime	application/x-xpa-compressed
7079ce06829SXin LI!:ext xpa
708b6cee71dSXin LI
709b6cee71dSXin LI# TODO: missing due to unknown magic/magic at end of file:
710b6cee71dSXin LI#DWC
711b6cee71dSXin LI#ARG
712b6cee71dSXin LI#ZAR
713b6cee71dSXin LI#PC/3270
714b6cee71dSXin LI#InstallIt
715b6cee71dSXin LI#RKive
716b6cee71dSXin LI#RK
717b6cee71dSXin LI#XPack Diskimage
718b6cee71dSXin LI
719b6cee71dSXin LI# These were inspired by idarc, but actually verified
720b6cee71dSXin LI# Dzip archiver (.dz)
72158a0f0d0SEitan Adler# Update: Joerg Jenderek
72258a0f0d0SEitan Adler# URL: http://speeddemosarchive.com/dzip/
72358a0f0d0SEitan Adler# reference: http://speeddemosarchive.com/dzip/dz29src.zip/main.c
72458a0f0d0SEitan Adler# GRR: line below is too general as it matches also ASCII texts like Doszip commander help dz.txt
72558a0f0d0SEitan Adler0	string	DZ
72658a0f0d0SEitan Adler# latest version is 2.9 dated 7 may 2003
72758a0f0d0SEitan Adler>2	byte	<4 Dzip archive data
72858a0f0d0SEitan Adler!:mime	application/x-dzip
72958a0f0d0SEitan Adler!:ext	dz
73058a0f0d0SEitan Adler>>2	byte	x \b, version %i
73158a0f0d0SEitan Adler>>3	byte	x \b.%i
73258a0f0d0SEitan Adler>>4	ulelong	x \b, offset 0x%x
73358a0f0d0SEitan Adler>>8	ulelong	x \b, %u files
734b6cee71dSXin LI# ZZip archiver (.zz)
735b6cee71dSXin LI0	string	ZZ\ \0\0 ZZip archive data
736b6cee71dSXin LI0	string	ZZ0 ZZip archive data
737b6cee71dSXin LI# PAQ archiver (.paq)
738b6cee71dSXin LI0	string	\xaa\x40\x5f\x77\x1f\xe5\x82\x0d PAQ archive data
739b6cee71dSXin LI0	string	PAQ PAQ archive data
740b6cee71dSXin LI>3	byte&0xf0	0x30
741b6cee71dSXin LI>>3	byte	x (v%c)
742b6cee71dSXin LI# JAR archiver (.j), this is the successor to ARJ, not Java's JAR (which is essentially ZIP)
743b6cee71dSXin LI0xe	string	\x1aJar\x1b JAR (ARJ Software, Inc.) archive data
744b6cee71dSXin LI0	string	JARCS JAR (ARJ Software, Inc.) archive data
745b6cee71dSXin LI
746b6cee71dSXin LI# ARJ archiver (jason@jarthur.Claremont.EDU)
747b6cee71dSXin LI0	leshort		0xea60		ARJ archive data
748b6cee71dSXin LI!:mime	application/x-arj
749b6cee71dSXin LI>5	byte		x		\b, v%d,
750b6cee71dSXin LI>8	byte		&0x04		multi-volume,
751b6cee71dSXin LI>8	byte		&0x10		slash-switched,
752b6cee71dSXin LI>8	byte		&0x20		backup,
753b6cee71dSXin LI>34	string		x		original name: %s,
754b6cee71dSXin LI>7	byte		0		os: MS-DOS
755b6cee71dSXin LI>7	byte		1		os: PRIMOS
756b6cee71dSXin LI>7	byte		2		os: Unix
757b6cee71dSXin LI>7	byte		3		os: Amiga
758b6cee71dSXin LI>7	byte		4		os: Macintosh
759b6cee71dSXin LI>7	byte		5		os: OS/2
760b6cee71dSXin LI>7	byte		6		os: Apple ][ GS
761b6cee71dSXin LI>7	byte		7		os: Atari ST
762b6cee71dSXin LI>7	byte		8		os: NeXT
763b6cee71dSXin LI>7	byte		9		os: VAX/VMS
764b6cee71dSXin LI>3	byte		>0		%d]
765b6cee71dSXin LI# [JW] idarc says this is also possible
766b6cee71dSXin LI2	leshort		0xea60		ARJ archive data
767b6cee71dSXin LI
768b6cee71dSXin LI# HA archiver (Greg Roelofs, newt@uchicago.edu)
769b6cee71dSXin LI# This is a really bad format. A file containing HAWAII will match this...
770b6cee71dSXin LI#0	string		HA		HA archive data,
771b6cee71dSXin LI#>2	leshort		=1		1 file,
772b6cee71dSXin LI#>2	leshort		>1		%hu files,
773b6cee71dSXin LI#>4	byte&0x0f	=0		first is type CPY
774b6cee71dSXin LI#>4	byte&0x0f	=1		first is type ASC
775b6cee71dSXin LI#>4	byte&0x0f	=2		first is type HSC
776b6cee71dSXin LI#>4	byte&0x0f	=0x0e		first is type DIR
777b6cee71dSXin LI#>4	byte&0x0f	=0x0f		first is type SPECIAL
778b6cee71dSXin LI# suggestion: at least identify small archives (<1024 files)
779b6cee71dSXin LI0  belong&0xffff00fc 0x48410000 HA archive data
780b6cee71dSXin LI>2	leshort		=1		1 file,
781b6cee71dSXin LI>2	leshort		>1		%u files,
782b6cee71dSXin LI>4	byte&0x0f	=0		first is type CPY
783b6cee71dSXin LI>4	byte&0x0f	=1		first is type ASC
784b6cee71dSXin LI>4	byte&0x0f	=2		first is type HSC
785b6cee71dSXin LI>4	byte&0x0f	=0x0e		first is type DIR
786b6cee71dSXin LI>4	byte&0x0f	=0x0f		first is type SPECIAL
787b6cee71dSXin LI
788b6cee71dSXin LI# HPACK archiver (Peter Gutmann, pgut1@cs.aukuni.ac.nz)
789b6cee71dSXin LI0	string		HPAK		HPACK archive data
790b6cee71dSXin LI
791b6cee71dSXin LI# JAM Archive volume format, by Dmitry.Kohmanyuk@UA.net
792b6cee71dSXin LI0	string		\351,\001JAM\ 		JAM archive,
793b6cee71dSXin LI>7	string		>\0			version %.4s
794b6cee71dSXin LI>0x26	byte		=0x27			-
795b6cee71dSXin LI>>0x2b	string          >\0			label %.11s,
796b6cee71dSXin LI>>0x27	lelong		x			serial %08x,
797b6cee71dSXin LI>>0x36	string		>\0			fstype %.8s
798b6cee71dSXin LI
799b6cee71dSXin LI# LHARC/LHA archiver (Greg Roelofs, newt@uchicago.edu)
8003e41d09dSXin LI# Update: Joerg Jenderek
8013e41d09dSXin LI# URL: https://en.wikipedia.org/wiki/LHA_(file_format)
8023e41d09dSXin LI# Reference: http://web.archive.org/web/20021005080911/http://www.osirusoft.com/joejared/lzhformat.html
8033e41d09dSXin LI#
8043e41d09dSXin LI#	check and display information of lharc (LHa,PMarc) file
8053e41d09dSXin LI0	name				lharc-file
8063e41d09dSXin LI# check 1st character of method id like -lz4- -lh5- or -pm2-
8073e41d09dSXin LI>2	string		-
8083e41d09dSXin LI# check 5th character of method id
8093e41d09dSXin LI>>6	string		-
8103e41d09dSXin LI# check header level 0 1 2 3
8113e41d09dSXin LI>>>20	ubyte		<4
8123e41d09dSXin LI# check 2nd, 3th and 4th character of method id
8133e41d09dSXin LI>>>>3	regex		\^(lh[0-9a-ex]|lz[s2-8]|pm[012]|pc1)		\b
8143e41d09dSXin LI!:mime	application/x-lzh-compressed
8153e41d09dSXin LI# creator type "LHA "
8163e41d09dSXin LI!:apple	????LHA
8173e41d09dSXin LI# display archive type name like "LHa/LZS archive data" or "LArc archive"
8183e41d09dSXin LI>>>>>2	string		-lz		\b
8193e41d09dSXin LI!:ext	lzs
8203e41d09dSXin LI# already known  -lzs- -lz4- -lz5- with old names
8213e41d09dSXin LI>>>>>>2	string	-lzs		LHa/LZS archive data
8223e41d09dSXin LI>>>>>>3	regex	\^lz[45]	LHarc 1.x archive data
8233e41d09dSXin LI# missing -lz?- with wikipedia names
8243e41d09dSXin LI>>>>>>3	regex	\^lz[2378]	LArc archive
8253e41d09dSXin LI# display archive type name like "LHa (2.x) archive data"
8263e41d09dSXin LI>>>>>2	string		-lh		\b
8273e41d09dSXin LI# already known -lh0- -lh1- -lh2- -lh3-  -lh4- -lh5- -lh6- -lh7- -lhd- variants with old names
8283e41d09dSXin LI>>>>>>3	regex		\^lh[01]	LHarc 1.x/ARX archive data
8293e41d09dSXin LI# LHice archiver use ".ICE" as name extension instead usual one ".lzh"
8303e41d09dSXin LI# FOOBAR archiver use ".foo" as name extension instead usual one
8313e41d09dSXin LI# "Florain Orjanov's and Olga Bachetska's ARchiver" not found at the moment
8323e41d09dSXin LI>>>>>>>2	string	-lh1		\b
8333e41d09dSXin LI!:ext lha/lzh/ice
8343e41d09dSXin LI>>>>>>3	regex		\^lh[23d]	LHa 2.x? archive data
8353e41d09dSXin LI>>>>>>3	regex		\^lh[7]		LHa (2.x)/LHark archive data
8363e41d09dSXin LI>>>>>>3	regex		\^lh[456]	LHa (2.x) archive data
8373e41d09dSXin LI>>>>>>>2	string	-lh5		\b
8383e41d09dSXin LI# https://en.wikipedia.org/wiki/BIOS
8393e41d09dSXin LI# Some mainboard BIOS like Award use LHa compression. So archives with unusal extension are found like
8403e41d09dSXin LI# bios.rom , kd7_v14.bin, 1010.004, ...
8413e41d09dSXin LI!:ext lha/lzh/rom/bin
8423e41d09dSXin LI# missing -lh?- variants (Joe Jared)
8433e41d09dSXin LI>>>>>>3	regex		\^lh[89a-ce]	LHa (Joe Jared) archive
8443e41d09dSXin LI# UNLHA32 2.67a
8453e41d09dSXin LI>>>>>>2	string		-lhx		LHa (UNLHA32) archive
8463e41d09dSXin LI# lha archives with standard file name extensions ".lha" ".lzh"
8473e41d09dSXin LI>>>>>>3	regex		!\^(lh1|lh5)	\b
8483e41d09dSXin LI!:ext lha/lzh
8493e41d09dSXin LI# this should not happen if all -lh variants are described
8503e41d09dSXin LI>>>>>>2	default		x		LHa (unknown) archive
8513e41d09dSXin LI#!:ext	lha
8523e41d09dSXin LI# PMarc
8533e41d09dSXin LI>>>>>3	regex		\^pm[012]	PMarc archive data
8543e41d09dSXin LI!:ext pma
8553e41d09dSXin LI# append method id without leading and trailing minus character
8563e41d09dSXin LI>>>>>3	string		x		[%3.3s]
8573e41d09dSXin LI>>>>>>0	use	lharc-header
8583e41d09dSXin LI#
8593e41d09dSXin LI#	check and display information of lharc header
8603e41d09dSXin LI0	name				lharc-header
8613e41d09dSXin LI# header size 0x4 , 0x1b-0x61
8623e41d09dSXin LI>0	ubyte		x
8633e41d09dSXin LI# compressed data size != compressed file size
8643e41d09dSXin LI#>7	ulelong		x		\b, data size %d
8653e41d09dSXin LI# attribute: 0x2~?? 0x10~symlink|target 0x20~normal
8663e41d09dSXin LI#>19	ubyte		x		\b, 19_0x%x
8673e41d09dSXin LI# level identifier 0 1 2 3
8683e41d09dSXin LI#>20	ubyte		x		\b, level %d
8693e41d09dSXin LI# time stamp
8703e41d09dSXin LI#>15		ubelong	x		DATE 0x%8.8x
8713e41d09dSXin LI# OS ID for level 1
8723e41d09dSXin LI>20	ubyte		1
8733e41d09dSXin LI# 0x20 types find for *.rom files
8743e41d09dSXin LI>>(21.b+24)	ubyte	<0x21		\b, 0x%x OS
8753e41d09dSXin LI# ascii type like M for MSDOS
8763e41d09dSXin LI>>(21.b+24)	ubyte	>0x20		\b, '%c' OS
8773e41d09dSXin LI# OS ID for level 2
8783e41d09dSXin LI>20	ubyte		2
8793e41d09dSXin LI#>>23	ubyte		x		\b, OS ID 0x%x
8803e41d09dSXin LI>>23	ubyte		<0x21		\b, 0x%x OS
8813e41d09dSXin LI>>23	ubyte		>0x20		\b, '%c' OS
8823e41d09dSXin LI# filename only for level 0 and 1
8833e41d09dSXin LI>20	ubyte		<2
8843e41d09dSXin LI# length of filename
8853e41d09dSXin LI>>21		ubyte	>0		\b, with
8863e41d09dSXin LI# filename
8873e41d09dSXin LI>>>21		pstring	x		"%s"
8883e41d09dSXin LI#
8893e41d09dSXin LI#2	string		-lh0-		LHarc 1.x/ARX archive data [lh0]
8903e41d09dSXin LI#!:mime	application/x-lharc
8913e41d09dSXin LI2	string		-lh0-
8923e41d09dSXin LI>0	use	lharc-file
8933e41d09dSXin LI#2	string		-lh1-		LHarc 1.x/ARX archive data [lh1]
8943e41d09dSXin LI#!:mime	application/x-lharc
8953e41d09dSXin LI2	string		-lh1-
8963e41d09dSXin LI>0	use	lharc-file
8973e41d09dSXin LI# NEW -lz2- ... -lz8-
8983e41d09dSXin LI2	string		-lz2-
8993e41d09dSXin LI>0	use	lharc-file
9003e41d09dSXin LI2	string		-lz3-
9013e41d09dSXin LI>0	use	lharc-file
9023e41d09dSXin LI2	string		-lz4-
9033e41d09dSXin LI>0	use	lharc-file
9043e41d09dSXin LI2	string		-lz5-
9053e41d09dSXin LI>0	use	lharc-file
9063e41d09dSXin LI2	string		-lz7-
9073e41d09dSXin LI>0	use	lharc-file
9083e41d09dSXin LI2	string		-lz8-
9093e41d09dSXin LI>0	use	lharc-file
910b6cee71dSXin LI#	[never seen any but the last; -lh4- reported in comp.compression:]
9113e41d09dSXin LI#2	string		-lzs-		LHa/LZS archive data [lzs]
9123e41d09dSXin LI2	string		-lzs-
9133e41d09dSXin LI>0	use	lharc-file
9143e41d09dSXin LI# According to wikipedia and others such a version does not exist
9153e41d09dSXin LI#2	string		-lh\40-		LHa 2.x? archive data [lh ]
9163e41d09dSXin LI#2	string		-lhd-		LHa 2.x? archive data [lhd]
9173e41d09dSXin LI2	string		-lhd-
9183e41d09dSXin LI>0	use	lharc-file
9193e41d09dSXin LI#2	string		-lh2-		LHa 2.x? archive data [lh2]
9203e41d09dSXin LI2	string		-lh2-
9213e41d09dSXin LI>0	use	lharc-file
9223e41d09dSXin LI#2	string		-lh3-		LHa 2.x? archive data [lh3]
9233e41d09dSXin LI2	string		-lh3-
9243e41d09dSXin LI>0	use	lharc-file
9253e41d09dSXin LI#2	string		-lh4-		LHa (2.x) archive data [lh4]
9263e41d09dSXin LI2	string		-lh4-
9273e41d09dSXin LI>0	use	lharc-file
9283e41d09dSXin LI#2	string		-lh5-		LHa (2.x) archive data [lh5]
9293e41d09dSXin LI2	string		-lh5-
9303e41d09dSXin LI>0	use	lharc-file
9313e41d09dSXin LI#2	string		-lh6-		LHa (2.x) archive data [lh6]
9323e41d09dSXin LI2	string		-lh6-
9333e41d09dSXin LI>0	use	lharc-file
9343e41d09dSXin LI#2	string		-lh7-		LHa (2.x)/LHark archive data [lh7]
9353e41d09dSXin LI2	string		-lh7-
9363e41d09dSXin LI# !:mime	application/x-lha
9373e41d09dSXin LI# >20	byte		x		- header level %d
9383e41d09dSXin LI>0	use	lharc-file
9393e41d09dSXin LI# NEW -lh8- ... -lhe- , -lhx-
9403e41d09dSXin LI2	string		-lh8-
9413e41d09dSXin LI>0	use	lharc-file
9423e41d09dSXin LI2	string		-lh9-
9433e41d09dSXin LI>0	use	lharc-file
9443e41d09dSXin LI2	string		-lha-
9453e41d09dSXin LI>0	use	lharc-file
9463e41d09dSXin LI2	string		-lhb-
9473e41d09dSXin LI>0	use	lharc-file
9483e41d09dSXin LI2	string		-lhc-
9493e41d09dSXin LI>0	use	lharc-file
9503e41d09dSXin LI2	string		-lhe-
9513e41d09dSXin LI>0	use	lharc-file
9523e41d09dSXin LI2	string		-lhx-
9533e41d09dSXin LI>0	use	lharc-file
954b6cee71dSXin LI# taken from idarc [JW]
955b6cee71dSXin LI2   string      -lZ         PUT archive data
9563e41d09dSXin LI# already done by LHarc magics
9573e41d09dSXin LI# this should never happen if all sub types of LZS archive are identified
9583e41d09dSXin LI#2   string      -lz         LZS archive data
959b6cee71dSXin LI2   string      -sw1-       Swag archive data
960b6cee71dSXin LI
9613e41d09dSXin LI0	name		rar-file-header
9623e41d09dSXin LI>24	byte		15		\b, v1.5
9633e41d09dSXin LI>24	byte		20		\b, v2.0
9643e41d09dSXin LI>24	byte		29		\b, v4
9653e41d09dSXin LI>15	byte		0		\b, os: MS-DOS
9663e41d09dSXin LI>15	byte		1		\b, os: OS/2
9673e41d09dSXin LI>15	byte		2		\b, os: Win32
9683e41d09dSXin LI>15	byte		3		\b, os: Unix
9693e41d09dSXin LI>15	byte		4		\b, os: Mac OS
9703e41d09dSXin LI>15	byte		5		\b, os: BeOS
9713e41d09dSXin LI
9723e41d09dSXin LI0	name		rar-archive-header
9733e41d09dSXin LI>3	leshort&0x1ff	>0		\b, flags:
9743e41d09dSXin LI>>3	leshort		&0x01		ArchiveVolume
9753e41d09dSXin LI>>3	leshort		&0x02		Commented
9763e41d09dSXin LI>>3	leshort		&0x04		Locked
9773e41d09dSXin LI>>3	leshort		&0x10		NewVolumeNaming
9783e41d09dSXin LI>>3	leshort		&0x08		Solid
9793e41d09dSXin LI>>3	leshort		&0x20		Authenticated
9803e41d09dSXin LI>>3	leshort		&0x40		RecoveryRecordPresent
9813e41d09dSXin LI>>3	leshort		&0x80		EncryptedBlockHeader
9823e41d09dSXin LI>>3	leshort		&0x100		FirstVolume
9833e41d09dSXin LI
9843e41d09dSXin LI# RAR (Roshal Archive) archive
9853e41d09dSXin LI0	string		Rar!\x1a\7\0		RAR archive data
986b6cee71dSXin LI!:mime	application/x-rar
9873e41d09dSXin LI!:ext	rar/cbr
9883e41d09dSXin LI# file header
9893e41d09dSXin LI>(0xc.l+9)	byte	0x74
9903e41d09dSXin LI>>(0xc.l+7)	use	rar-file-header
9913e41d09dSXin LI# subblock seems to share information with file header
9923e41d09dSXin LI>(0xc.l+9)	byte	0x7a
9933e41d09dSXin LI>>(0xc.l+7)	use	rar-file-header
9943e41d09dSXin LI>9		byte	0x73
9953e41d09dSXin LI>>7		use	rar-archive-header
9963e41d09dSXin LI
9973e41d09dSXin LI0	string		Rar!\x1a\7\1\0		RAR archive data, v5
9983e41d09dSXin LI!:mime	application/x-rar
9993e41d09dSXin LI!:ext	rar
10003e41d09dSXin LI
10013e41d09dSXin LI# Very old RAR archive
10023e41d09dSXin LI# http://jasonblanks.com/wp-includes/images/papers/KnowyourarchiveRAR.pdf
10033e41d09dSXin LI0	string		RE\x7e\x5e  RAR archive data (<v1.5)
10043e41d09dSXin LI!:mime	application/x-rar
10053e41d09dSXin LI!:ext	rar/cbr
1006b6cee71dSXin LI
1007b6cee71dSXin LI# SQUISH archiver (Greg Roelofs, newt@uchicago.edu)
1008b6cee71dSXin LI0	string		SQSH		squished archive data (Acorn RISCOS)
1009b6cee71dSXin LI
1010b6cee71dSXin LI# UC2 archiver (Greg Roelofs, newt@uchicago.edu)
1011b6cee71dSXin LI# [JW] see exe section for self-extracting version
1012b6cee71dSXin LI0	string		UC2\x1a		UC2 archive data
1013b6cee71dSXin LI
1014b6cee71dSXin LI# PKZIP multi-volume archive
1015b6cee71dSXin LI0	string		PK\x07\x08PK\x03\x04	Zip multi-volume archive data, at least PKZIP v2.50 to extract
1016b6cee71dSXin LI!:mime	application/zip
10173e41d09dSXin LI!:ext zip/cbz
1018b6cee71dSXin LI
1019b6cee71dSXin LI# Zip archives (Greg Roelofs, c/o zip-bugs@wkuvx1.wku.edu)
1020b6cee71dSXin LI0	string		PK\005\006	Zip archive data (empty)
10213e41d09dSXin LI!:mime application/zip
10223e41d09dSXin LI!:ext zip/cbz
1023b6cee71dSXin LI0	string		PK\003\004
1024b6cee71dSXin LI
1025b6cee71dSXin LI# Specialised zip formats which start with a member named 'mimetype'
1026b6cee71dSXin LI# (stored uncompressed, with no 'extra field') containing the file's MIME type.
1027b6cee71dSXin LI# Check for have 8-byte name, 0-byte extra field, name "mimetype", and
1028b6cee71dSXin LI#  contents starting with "application/":
1029b6cee71dSXin LI>26	string		\x8\0\0\0mimetypeapplication/
1030b6cee71dSXin LI
1031b6cee71dSXin LI#  KOffice / OpenOffice & StarOffice / OpenDocument formats
1032b6cee71dSXin LI#    From: Abel Cheung <abel@oaka.org>
1033b6cee71dSXin LI
1034b6cee71dSXin LI#   KOffice (1.2 or above) formats
1035b6cee71dSXin LI#    (mimetype contains "application/vnd.kde.<SUBTYPE>")
1036b6cee71dSXin LI>>50	string	vnd.kde.		KOffice (>=1.2)
1037b6cee71dSXin LI>>>58	string	karbon			Karbon document
1038b6cee71dSXin LI>>>58	string	kchart			KChart document
1039b6cee71dSXin LI>>>58	string	kformula		KFormula document
1040b6cee71dSXin LI>>>58	string	kivio			Kivio document
1041b6cee71dSXin LI>>>58	string	kontour			Kontour document
1042b6cee71dSXin LI>>>58	string	kpresenter		KPresenter document
1043b6cee71dSXin LI>>>58	string	kspread			KSpread document
1044b6cee71dSXin LI>>>58	string	kword			KWord document
1045b6cee71dSXin LI
1046b6cee71dSXin LI#   OpenOffice formats (for OpenOffice 1.x / StarOffice 6/7)
1047b6cee71dSXin LI#    (mimetype contains "application/vnd.sun.xml.<SUBTYPE>")
1048b6cee71dSXin LI>>50	string	vnd.sun.xml.		OpenOffice.org 1.x
1049b6cee71dSXin LI>>>62	string	writer			Writer
1050b6cee71dSXin LI>>>>68	byte	!0x2e			document
1051b6cee71dSXin LI>>>>68	string	.template		template
1052b6cee71dSXin LI>>>>68	string	.global			global document
1053b6cee71dSXin LI>>>62	string	calc			Calc
1054b6cee71dSXin LI>>>>66	byte	!0x2e			spreadsheet
1055b6cee71dSXin LI>>>>66	string	.template		template
1056b6cee71dSXin LI>>>62	string	draw			Draw
1057b6cee71dSXin LI>>>>66	byte	!0x2e			document
1058b6cee71dSXin LI>>>>66	string	.template		template
1059b6cee71dSXin LI>>>62	string	impress			Impress
1060b6cee71dSXin LI>>>>69	byte	!0x2e			presentation
1061b6cee71dSXin LI>>>>69	string	.template		template
1062b6cee71dSXin LI>>>62	string	math			Math document
1063b6cee71dSXin LI>>>62	string	base			Database file
1064b6cee71dSXin LI
1065b6cee71dSXin LI#   OpenDocument formats (for OpenOffice 2.x / StarOffice >= 8)
1066b6cee71dSXin LI#    http://lists.oasis-open.org/archives/office/200505/msg00006.html
1067b6cee71dSXin LI#    (mimetype contains "application/vnd.oasis.opendocument.<SUBTYPE>")
1068b6cee71dSXin LI>>50	string	vnd.oasis.opendocument.	OpenDocument
1069b6cee71dSXin LI>>>73	string	text
1070b6cee71dSXin LI>>>>77	byte	!0x2d			Text
1071b6cee71dSXin LI!:mime	application/vnd.oasis.opendocument.text
1072b6cee71dSXin LI>>>>77	string	-template		Text Template
1073b6cee71dSXin LI!:mime	application/vnd.oasis.opendocument.text-template
1074b6cee71dSXin LI>>>>77	string	-web			HTML Document Template
1075b6cee71dSXin LI!:mime	application/vnd.oasis.opendocument.text-web
1076b6cee71dSXin LI>>>>77	string	-master			Master Document
1077b6cee71dSXin LI!:mime	application/vnd.oasis.opendocument.text-master
1078b6cee71dSXin LI>>>73	string	graphics
1079b6cee71dSXin LI>>>>81	byte	!0x2d			Drawing
1080b6cee71dSXin LI!:mime	application/vnd.oasis.opendocument.graphics
1081b6cee71dSXin LI>>>>81	string	-template		Template
1082b6cee71dSXin LI!:mime	application/vnd.oasis.opendocument.graphics-template
1083b6cee71dSXin LI>>>73	string	presentation
1084b6cee71dSXin LI>>>>85	byte	!0x2d			Presentation
1085b6cee71dSXin LI!:mime	application/vnd.oasis.opendocument.presentation
1086b6cee71dSXin LI>>>>85	string	-template		Template
1087b6cee71dSXin LI!:mime	application/vnd.oasis.opendocument.presentation-template
1088b6cee71dSXin LI>>>73	string	spreadsheet
1089b6cee71dSXin LI>>>>84	byte	!0x2d			Spreadsheet
1090b6cee71dSXin LI!:mime	application/vnd.oasis.opendocument.spreadsheet
1091b6cee71dSXin LI>>>>84	string	-template		Template
1092b6cee71dSXin LI!:mime	application/vnd.oasis.opendocument.spreadsheet-template
1093b6cee71dSXin LI>>>73	string	chart
1094b6cee71dSXin LI>>>>78	byte	!0x2d			Chart
1095b6cee71dSXin LI!:mime	application/vnd.oasis.opendocument.chart
1096b6cee71dSXin LI>>>>78	string	-template		Template
1097b6cee71dSXin LI!:mime	application/vnd.oasis.opendocument.chart-template
1098b6cee71dSXin LI>>>73	string	formula
1099b6cee71dSXin LI>>>>80	byte	!0x2d			Formula
1100b6cee71dSXin LI!:mime	application/vnd.oasis.opendocument.formula
1101b6cee71dSXin LI>>>>80	string	-template		Template
1102b6cee71dSXin LI!:mime	application/vnd.oasis.opendocument.formula-template
1103b6cee71dSXin LI>>>73	string	database		Database
1104b6cee71dSXin LI!:mime	application/vnd.oasis.opendocument.database
110558a0f0d0SEitan Adler# Valid for LibreOffice Base 6.0.1.1 at least
110658a0f0d0SEitan Adler>>>73	string	base 			Database
110758a0f0d0SEitan Adler!:mime	application/vnd.oasis.opendocument.base
1108b6cee71dSXin LI>>>73	string	image
1109b6cee71dSXin LI>>>>78	byte	!0x2d			Image
1110b6cee71dSXin LI!:mime	application/vnd.oasis.opendocument.image
1111b6cee71dSXin LI>>>>78	string	-template		Template
1112b6cee71dSXin LI!:mime	application/vnd.oasis.opendocument.image-template
1113b6cee71dSXin LI
1114b6cee71dSXin LI#  EPUB (OEBPS) books using OCF (OEBPS Container Format)
1115b6cee71dSXin LI#    http://www.idpf.org/ocf/ocf1.0/download/ocf10.htm, section 4.
1116b6cee71dSXin LI#    From: Ralf Brown <ralf.brown@gmail.com>
1117b6cee71dSXin LI>>50	string	epub+zip	EPUB document
1118b6cee71dSXin LI!:mime application/epub+zip
1119b6cee71dSXin LI
1120b6cee71dSXin LI#  Catch other ZIP-with-mimetype formats
1121b6cee71dSXin LI#	In a ZIP file, the bytes immediately after a member's contents are
1122b6cee71dSXin LI#	always "PK". The 2 regex rules here print the "mimetype" member's
1123b6cee71dSXin LI#	contents up to the first 'P'. Luckily, most MIME types don't contain
1124b6cee71dSXin LI#	any capital 'P's. This is a kludge.
1125b6cee71dSXin LI#    (mimetype contains "application/<OTHER>")
1126b6cee71dSXin LI>>50		string	!epub+zip
1127b6cee71dSXin LI>>>50		string	!vnd.oasis.opendocument.
1128b6cee71dSXin LI>>>>50		string	!vnd.sun.xml.
1129b6cee71dSXin LI>>>>>50		string	!vnd.kde.
1130b6cee71dSXin LI>>>>>>38	regex	[!-OQ-~]+		Zip data (MIME type "%s"?)
1131b6cee71dSXin LI!:mime	application/zip
1132b6cee71dSXin LI#    (mimetype contents other than "application/*")
1133b6cee71dSXin LI>26		string	\x8\0\0\0mimetype
1134b6cee71dSXin LI>>38		string	!application/
1135b6cee71dSXin LI>>>38		regex	[!-OQ-~]+		Zip data (MIME type "%s"?)
1136b6cee71dSXin LI!:mime	application/zip
1137b6cee71dSXin LI
1138b6cee71dSXin LI# Java Jar files
1139b6cee71dSXin LI>(26.s+30)	leshort	0xcafe		Java archive data (JAR)
1140b6cee71dSXin LI!:mime	application/java-archive
1141b6cee71dSXin LI
114220f8619dSXin LI# iOS App
114320f8619dSXin LI>(26.s+30)	leshort	!0xcafe
114420f8619dSXin LI>>26		string	!\x8\0\0\0mimetype
114520f8619dSXin LI>>>30		string	Payload/
114620f8619dSXin LI>>>>38		search/64       .app/   iOS App
114720f8619dSXin LI!:mime application/x-ios-app
114820f8619dSXin LI
114920f8619dSXin LI
1150b6cee71dSXin LI# Generic zip archives (Greg Roelofs, c/o zip-bugs@wkuvx1.wku.edu)
1151b6cee71dSXin LI#   Next line excludes specialized formats:
1152b6cee71dSXin LI>(26.s+30)	leshort	!0xcafe
1153b6cee71dSXin LI>>26    string          !\x8\0\0\0mimetype	Zip archive data
1154b6cee71dSXin LI!:mime	application/zip
115558a0f0d0SEitan Adler>>>4	beshort		x			\b, at least
115658a0f0d0SEitan Adler>>>4	use		zipversion
115758a0f0d0SEitan Adler>>>4	beshort		x			to extract
1158b6cee71dSXin LI>>>0x161	string		WINZIP		\b, WinZIP self-extracting
1159b6cee71dSXin LI
1160b6cee71dSXin LI# StarView Metafile
1161b6cee71dSXin LI# From Pierre Ducroquet <pinaraf@pinaraf.info>
1162b6cee71dSXin LI0	string	VCLMTF	StarView MetaFile
1163b6cee71dSXin LI>6	beshort	x	\b, version %d
1164b6cee71dSXin LI>8	belong	x	\b, size %d
1165b6cee71dSXin LI
1166b6cee71dSXin LI# Zoo archiver
1167b6cee71dSXin LI20	lelong		0xfdc4a7dc	Zoo archive data
1168b6cee71dSXin LI!:mime	application/x-zoo
1169b6cee71dSXin LI>4	byte		>48		\b, v%c.
1170b6cee71dSXin LI>>6	byte		>47		\b%c
1171b6cee71dSXin LI>>>7	byte		>47		\b%c
1172b6cee71dSXin LI>32	byte		>0		\b, modify: v%d
1173b6cee71dSXin LI>>33	byte		x		\b.%d+
1174b6cee71dSXin LI>42	lelong		0xfdc4a7dc	\b,
1175b6cee71dSXin LI>>70	byte		>0		extract: v%d
1176b6cee71dSXin LI>>>71	byte		x		\b.%d+
1177b6cee71dSXin LI
1178b6cee71dSXin LI# Shell archives
1179b6cee71dSXin LI10	string		#\ This\ is\ a\ shell\ archive	shell archive text
1180b6cee71dSXin LI!:mime	application/octet-stream
1181b6cee71dSXin LI
1182b6cee71dSXin LI#
1183b6cee71dSXin LI# LBR. NB: May conflict with the questionable
1184b6cee71dSXin LI#          "binary Computer Graphics Metafile" format.
1185b6cee71dSXin LI#
1186b6cee71dSXin LI0       string  \0\ \ \ \ \ \ \ \ \ \ \ \0\0    LBR archive data
1187b6cee71dSXin LI#
1188b6cee71dSXin LI# PMA (CP/M derivative of LHA)
11893e41d09dSXin LI# Update: Joerg Jenderek
11903e41d09dSXin LI# URL: https://en.wikipedia.org/wiki/LHA_(file_format)
1191b6cee71dSXin LI#
11923e41d09dSXin LI#2       string          -pm0-           PMarc archive data [pm0]
11933e41d09dSXin LI2	string		-pm0-
11943e41d09dSXin LI>0	use	lharc-file
11953e41d09dSXin LI#2       string          -pm1-           PMarc archive data [pm1]
11963e41d09dSXin LI2	string		-pm1-
11973e41d09dSXin LI>0	use	lharc-file
11983e41d09dSXin LI#2       string          -pm2-           PMarc archive data [pm2]
11993e41d09dSXin LI2	string		-pm2-
12003e41d09dSXin LI>0	use	lharc-file
1201b6cee71dSXin LI2       string          -pms-           PMarc SFX archive (CP/M, DOS)
12023e41d09dSXin LI#!:mime	application/x-foobar-exec
12033e41d09dSXin LI!:ext com
1204b6cee71dSXin LI5       string          -pc1-           PopCom compressed executable (CP/M)
12053e41d09dSXin LI#!:mime	application/x-
12063e41d09dSXin LI#!:ext com
1207b6cee71dSXin LI
1208b6cee71dSXin LI# From Rafael Laboissiere <rafael@laboissiere.net>
1209b6cee71dSXin LI# The Project Revision Control System (see
1210b6cee71dSXin LI# http://prcs.sourceforge.net) generates a packaged project
1211b6cee71dSXin LI# file which is recognized by the following entry:
1212b6cee71dSXin LI0	leshort		0xeb81	PRCS packaged project
1213b6cee71dSXin LI
1214b6cee71dSXin LI# Microsoft cabinets
1215b6cee71dSXin LI# by David Necas (Yeti) <yeti@physics.muni.cz>
1216b6cee71dSXin LI#0	string	MSCF\0\0\0\0	Microsoft cabinet file data,
1217b6cee71dSXin LI#>25	byte	x		v%d
1218b6cee71dSXin LI#>24	byte	x		\b.%d
1219b6cee71dSXin LI# MPi: All CABs have version 1.3, so this is pointless.
1220b6cee71dSXin LI# Better magic in debian-additions.
1221b6cee71dSXin LI
1222b6cee71dSXin LI# GTKtalog catalogs
1223b6cee71dSXin LI# by David Necas (Yeti) <yeti@physics.muni.cz>
1224b6cee71dSXin LI4	string	gtktalog\ 	GTKtalog catalog data,
1225b6cee71dSXin LI>13	string	3		version 3
1226b6cee71dSXin LI>>14	beshort	0x677a		(gzipped)
1227b6cee71dSXin LI>>14	beshort	!0x677a		(not gzipped)
1228b6cee71dSXin LI>13	string	>3		version %s
1229b6cee71dSXin LI
1230b6cee71dSXin LI############################################################################
1231b6cee71dSXin LI# Parity archive reconstruction file, the 'par' file format now used on Usenet.
1232b6cee71dSXin LI0       string          PAR\0	PARity archive data
1233b6cee71dSXin LI>48	leshort		=0	- Index file
1234b6cee71dSXin LI>48	leshort		>0	- file number %d
1235b6cee71dSXin LI
1236b6cee71dSXin LI# Felix von Leitner <felix-file@fefe.de>
1237b6cee71dSXin LI0	string	d8:announce	BitTorrent file
1238b6cee71dSXin LI!:mime	application/x-bittorrent
12393e41d09dSXin LI# Durval Menezes, <jmgthbfile at durval dot com>
12403e41d09dSXin LI0	string	d13:announce-list	BitTorrent file
12413e41d09dSXin LI!:mime	application/x-bittorrent
1242b6cee71dSXin LI
1243b6cee71dSXin LI# Atari MSA archive - Teemu Hukkanen <tjhukkan@iki.fi>
1244b6cee71dSXin LI0	beshort 0x0e0f		Atari MSA archive data
1245b6cee71dSXin LI>2	beshort x		\b, %d sectors per track
1246b6cee71dSXin LI>4	beshort 0		\b, 1 sided
1247b6cee71dSXin LI>4	beshort 1		\b, 2 sided
1248b6cee71dSXin LI>6	beshort x		\b, starting track: %d
1249b6cee71dSXin LI>8	beshort x		\b, ending track: %d
1250b6cee71dSXin LI
1251b6cee71dSXin LI# Alternate ZIP string (amc@arwen.cs.berkeley.edu)
1252b6cee71dSXin LI0	string	PK00PK\003\004	Zip archive data
125358a0f0d0SEitan Adler!:mime	application/zip
125458a0f0d0SEitan Adler!:ext zip/cbz
1255b6cee71dSXin LI
1256b6cee71dSXin LI# ACE archive (from http://www.wotsit.org/download.asp?f=ace)
1257b6cee71dSXin LI# by Stefan `Sec` Zehl <sec@42.org>
1258b6cee71dSXin LI7	string		**ACE**		ACE archive data
1259b6cee71dSXin LI>15	byte	>0		version %d
1260b6cee71dSXin LI>16	byte	=0x00		\b, from MS-DOS
1261b6cee71dSXin LI>16	byte	=0x01		\b, from OS/2
1262b6cee71dSXin LI>16	byte	=0x02		\b, from Win/32
1263b6cee71dSXin LI>16	byte	=0x03		\b, from Unix
1264b6cee71dSXin LI>16	byte	=0x04		\b, from MacOS
1265b6cee71dSXin LI>16	byte	=0x05		\b, from WinNT
1266b6cee71dSXin LI>16	byte	=0x06		\b, from Primos
1267b6cee71dSXin LI>16	byte	=0x07		\b, from AppleGS
1268b6cee71dSXin LI>16	byte	=0x08		\b, from Atari
1269b6cee71dSXin LI>16	byte	=0x09		\b, from Vax/VMS
1270b6cee71dSXin LI>16	byte	=0x0A		\b, from Amiga
1271b6cee71dSXin LI>16	byte	=0x0B		\b, from Next
1272b6cee71dSXin LI>14	byte	x		\b, version %d to extract
1273b6cee71dSXin LI>5	leshort &0x0080		\b, multiple volumes,
1274b6cee71dSXin LI>>17	byte	x		\b (part %d),
1275b6cee71dSXin LI>5	leshort &0x0002		\b, contains comment
1276b6cee71dSXin LI>5	leshort	&0x0200		\b, sfx
1277b6cee71dSXin LI>5	leshort	&0x0400		\b, small dictionary
1278b6cee71dSXin LI>5	leshort	&0x0800		\b, multi-volume
1279b6cee71dSXin LI>5	leshort	&0x1000		\b, contains AV-String
1280b6cee71dSXin LI>>30	string	\x16*UNREGISTERED\x20VERSION*	(unregistered)
1281b6cee71dSXin LI>5	leshort &0x2000		\b, with recovery record
1282b6cee71dSXin LI>5	leshort &0x4000		\b, locked
1283b6cee71dSXin LI>5	leshort &0x8000		\b, solid
1284b6cee71dSXin LI# Date in MS-DOS format (whatever that is)
1285b6cee71dSXin LI#>18	lelong	x		Created on
1286b6cee71dSXin LI
1287b6cee71dSXin LI# sfArk : compression program for Soundfonts (sf2) by Dirk Jagdmann
1288b6cee71dSXin LI# <doj@cubic.org>
1289b6cee71dSXin LI0x1A	string	sfArk		sfArk compressed Soundfont
1290b6cee71dSXin LI>0x15	string	2
1291b6cee71dSXin LI>>0x1	string	>\0		Version %s
1292b6cee71dSXin LI>>0x2A	string	>\0		: %s
1293b6cee71dSXin LI
1294b6cee71dSXin LI# DR-DOS 7.03 Packed File *.??_
1295b6cee71dSXin LI0	string	Packed\ File\ 	Personal NetWare Packed File
1296b6cee71dSXin LI>12	string	x		\b, was "%.12s"
1297b6cee71dSXin LI
1298b6cee71dSXin LI# EET archive
1299b6cee71dSXin LI# From: Tilman Sauerbeck <tilman@code-monkey.de>
1300b6cee71dSXin LI0	belong	0x1ee7ff00	EET archive
1301b6cee71dSXin LI!:mime	application/x-eet
1302b6cee71dSXin LI
1303b6cee71dSXin LI# rzip archives
1304b6cee71dSXin LI0	string	RZIP		rzip compressed data
1305b6cee71dSXin LI>4	byte	x		- version %d
1306b6cee71dSXin LI>5	byte	x		\b.%d
1307b6cee71dSXin LI>6	belong	x		(%d bytes)
1308b6cee71dSXin LI
1309b6cee71dSXin LI# From: "Robert Dale" <robdale@gmail.com>
1310b6cee71dSXin LI0	belong	123		dar archive,
1311b6cee71dSXin LI>4	belong	x		label "%.8x
1312b6cee71dSXin LI>>8	belong	x		%.8x
1313b6cee71dSXin LI>>>12	beshort	x		%.4x"
1314b6cee71dSXin LI>14	byte	0x54		end slice
1315b6cee71dSXin LI>14	beshort	0x4e4e		multi-part
1316b6cee71dSXin LI>14	beshort	0x4e53		multi-part, with -S
1317b6cee71dSXin LI
1318b6cee71dSXin LI# Symbian installation files
1319b6cee71dSXin LI#  http://www.thouky.co.uk/software/psifs/sis.html
1320b6cee71dSXin LI#  http://developer.symbian.com/main/downloads/papers/SymbianOSv91/softwareinstallsis.pdf
1321b6cee71dSXin LI8	lelong	0x10000419	Symbian installation file
1322b6cee71dSXin LI!:mime	application/vnd.symbian.install
1323b6cee71dSXin LI>4	lelong	0x1000006D	(EPOC release 3/4/5)
1324b6cee71dSXin LI>4	lelong	0x10003A12	(EPOC release 6)
1325b6cee71dSXin LI0	lelong	0x10201A7A	Symbian installation file (Symbian OS 9.x)
1326b6cee71dSXin LI!:mime	x-epoc/x-sisx-app
1327b6cee71dSXin LI
1328b6cee71dSXin LI# From "Nelson A. de Oliveira" <naoliv@gmail.com>
1329b6cee71dSXin LI0	string	MPQ\032		MoPaQ (MPQ) archive
1330b6cee71dSXin LI
1331b6cee71dSXin LI# From: "Nelson A. de Oliveira" <naoliv@gmail.com>
1332b6cee71dSXin LI# .kgb
1333b6cee71dSXin LI0	string KGB_arch		KGB Archiver file
1334b6cee71dSXin LI>10	string x		with compression level %.1s
1335b6cee71dSXin LI
1336b6cee71dSXin LI# xar (eXtensible ARchiver) archive
13373e41d09dSXin LI# xar archive format: http://code.google.com/p/xar/
1338b6cee71dSXin LI# From: "David Remahl" <dremahl@apple.com>
1339b6cee71dSXin LI0	string	xar!		xar archive
13403e41d09dSXin LI!:mime	application/x-xar
1341b6cee71dSXin LI#>4	beshort	x		header size %d
1342b6cee71dSXin LI>6	beshort	x		version %d,
1343b6cee71dSXin LI#>8	quad	x		compressed TOC: %d,
1344b6cee71dSXin LI#>16	quad	x		uncompressed TOC: %d,
1345b6cee71dSXin LI>24	belong	0		no checksum
1346b6cee71dSXin LI>24	belong	1		SHA-1 checksum
1347b6cee71dSXin LI>24	belong	2		MD5 checksum
1348b6cee71dSXin LI
1349b6cee71dSXin LI# Type: Parity Archive
1350b6cee71dSXin LI# From: Daniel van Eeden <daniel_e@dds.nl>
1351b6cee71dSXin LI0	string	PAR2		Parity Archive Volume Set
1352b6cee71dSXin LI
1353b6cee71dSXin LI# Bacula volume format. (Volumes always start with a block header.)
1354b6cee71dSXin LI# URL: http://bacula.org/3.0.x-manuals/en/developers/developers/Block_Header.html
1355b6cee71dSXin LI# From: Adam Buchbinder <adam.buchbinder@gmail.com>
1356b6cee71dSXin LI12	string	BB02		Bacula volume
1357b6cee71dSXin LI>20	bedate	x		\b, started %s
1358b6cee71dSXin LI
1359b6cee71dSXin LI# ePub is XHTML + XML inside a ZIP archive.  The first member of the
1360b6cee71dSXin LI#   archive must be an uncompressed file called 'mimetype' with contents
1361b6cee71dSXin LI#   'application/epub+zip'
1362b6cee71dSXin LI
1363b6cee71dSXin LI
1364b6cee71dSXin LI# From: "Michael Gorny" <mgorny@gentoo.org>
1365b6cee71dSXin LI# ZPAQ: http://mattmahoney.net/dc/zpaq.html
1366b6cee71dSXin LI0	string	zPQ	ZPAQ stream
1367b6cee71dSXin LI>3	byte	x	\b, level %d
13685f0216bdSXin LI# From: Barry Carter <carter.barry@gmail.com>
13695f0216bdSXin LI# http://encode.ru/threads/456-zpaq-updates/page32
13705f0216bdSXin LI0	string	7kSt	ZPAQ file
1371b6cee71dSXin LI
1372b6cee71dSXin LI# BBeB ebook, unencrypted (LRF format)
1373b6cee71dSXin LI# URL: http://www.sven.de/librie/Librie/LrfFormat
1374b6cee71dSXin LI# From: Adam Buchbinder <adam.buchbinder@gmail.com>
1375b6cee71dSXin LI0	string	L\0R\0F\0\0\0	BBeB ebook data, unencrypted
1376b6cee71dSXin LI>8	beshort	x		\b, version %d
1377b6cee71dSXin LI>36	byte	1		\b, front-to-back
1378b6cee71dSXin LI>36	byte	16		\b, back-to-front
1379b6cee71dSXin LI>42	beshort	x		\b, (%dx,
1380b6cee71dSXin LI>44	beshort	x		%d)
1381b6cee71dSXin LI
1382b6cee71dSXin LI# Symantec GHOST image by Joerg Jenderek at May 2014
1383b6cee71dSXin LI# http://us.norton.com/ghost/
1384b6cee71dSXin LI# http://www.garykessler.net/library/file_sigs.html
1385b6cee71dSXin LI0		ubelong&0xFFFFf7f0	0xFEEF0100	Norton GHost image
1386b6cee71dSXin LI# *.GHO
1387b6cee71dSXin LI>2		ubyte&0x08		0x00		\b, first file
1388b6cee71dSXin LI# *.GHS or *.[0-9] with cns program option
1389b6cee71dSXin LI>2		ubyte&0x08		0x08		\b, split file
1390b6cee71dSXin LI# part of split index interesting for *.ghs
1391b6cee71dSXin LI>>4		ubyte			x		id=0x%x
1392b6cee71dSXin LI# compression tag minus one equals numeric compression command line switch z[1-9]
1393b6cee71dSXin LI>3		ubyte			0		\b, no compression
1394b6cee71dSXin LI>3		ubyte			2		\b, fast compression (Z1)
1395b6cee71dSXin LI>3		ubyte			3		\b, medium compression (Z2)
1396b6cee71dSXin LI>3		ubyte			>3
1397b6cee71dSXin LI>>3		ubyte			<11		\b, compression (Z%d-1)
1398b6cee71dSXin LI>2		ubyte&0x08		0x00
1399b6cee71dSXin LI# ~ 30 byte password field only for *.gho
1400b6cee71dSXin LI>>12		ubequad			!0		\b, password protected
1401b6cee71dSXin LI>>44		ubyte			!1
1402b6cee71dSXin LI# 1~Image All, sector-by-sector only for *.gho
1403b6cee71dSXin LI>>>10		ubyte			1		\b, sector copy
1404b6cee71dSXin LI# 1~Image Boot track only for *.gho
1405b6cee71dSXin LI>>>43		ubyte			1		\b, boot track
1406b6cee71dSXin LI# 1~Image Disc only for *.gho implies Image Boot track and sector copy
1407b6cee71dSXin LI>>44		ubyte			1		\b, disc sector copy
1408b6cee71dSXin LI# optional image description only *.gho
1409b6cee71dSXin LI>>0xff		string			>\0		"%-.254s"
1410b6cee71dSXin LI# look for DOS sector end sequence
1411b6cee71dSXin LI>0xE08	search/7776		\x55\xAA
1412b6cee71dSXin LI>>&-512	indirect		x		\b; contains
1413b6cee71dSXin LI
14143e41d09dSXin LI# Google Chrome extensions
14153e41d09dSXin LI# https://developer.chrome.com/extensions/crx
14163e41d09dSXin LI# https://developer.chrome.com/extensions/hosting
14173e41d09dSXin LI0	string	Cr24	Google Chrome extension
14183e41d09dSXin LI!:mime	application/x-chrome-extension
14193e41d09dSXin LI>4	ulong	x	\b, version %u
142040427ccaSGordon Tetlow
142140427ccaSGordon Tetlow# SeqBox - Sequenced container
142240427ccaSGordon Tetlow# ext: sbx, seqbox
142340427ccaSGordon Tetlow# Marco Pontello marcopon@gmail.com
142440427ccaSGordon Tetlow# reference: https://github.com/MarcoPon/SeqBox
142540427ccaSGordon Tetlow0	string	SBx	SeqBox,
142640427ccaSGordon Tetlow>3	byte	x	version %d
142758a0f0d0SEitan Adler
142858a0f0d0SEitan Adler# LyNX archive
142958a0f0d0SEitan Adler56	string	USE\040LYNX\040TO\040DISSOLVE\040THIS\040FILE	 LyNX archive
1430