xref: /freebsd/contrib/file/magic/Magdir/archive (revision 40427cca7a9ae77b095936fb1954417c290cfb17)
1b6cee71dSXin LI#------------------------------------------------------------------------------
2*40427ccaSGordon Tetlow# $File: archive,v 1.108 2017/08/30 13:45:10 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.
7b6cee71dSXin LI# pre-POSIX "tar" archives are handled in the C code.
8b6cee71dSXin LI
9b6cee71dSXin LI# POSIX tar archives
10b6cee71dSXin LI257	string		ustar\0		POSIX tar archive
11b6cee71dSXin LI!:mime	application/x-tar # encoding: posix
12b6cee71dSXin LI257	string		ustar\040\040\0	GNU tar archive
13b6cee71dSXin LI!:mime	application/x-tar # encoding: gnu
14b6cee71dSXin LI
15b6cee71dSXin LI# Incremental snapshot gnu-tar format from:
16b6cee71dSXin LI# http://www.gnu.org/software/tar/manual/html_node/Snapshot-Files.html
17b6cee71dSXin LI0	string		GNU\ tar-	GNU tar incremental snapshot data
18b6cee71dSXin LI>&0	regex		[0-9]\.[0-9]+-[0-9]+	version %s
19b6cee71dSXin LI
20b6cee71dSXin LI# cpio archives
21b6cee71dSXin LI#
22b6cee71dSXin LI# Yes, the top two "cpio archive" formats *are* supposed to just be "short".
23b6cee71dSXin LI# The idea is to indicate archives produced on machines with the same
24b6cee71dSXin LI# byte order as the machine running "file" with "cpio archive", and
25b6cee71dSXin LI# to indicate archives produced on machines with the opposite byte order
26b6cee71dSXin LI# from the machine running "file" with "byte-swapped cpio archive".
27b6cee71dSXin LI#
28b6cee71dSXin LI# The SVR4 "cpio(4)" hints that there are additional formats, but they
29b6cee71dSXin LI# are defined as "short"s; I think all the new formats are
30b6cee71dSXin LI# character-header formats and thus are strings, not numbers.
31b6cee71dSXin LI0	short		070707		cpio archive
32b6cee71dSXin LI!:mime	application/x-cpio
33b6cee71dSXin LI0	short		0143561		byte-swapped cpio archive
34b6cee71dSXin LI!:mime	application/x-cpio # encoding: swapped
35b6cee71dSXin LI0	string		070707		ASCII cpio archive (pre-SVR4 or odc)
36b6cee71dSXin LI0	string		070701		ASCII cpio archive (SVR4 with no CRC)
37b6cee71dSXin LI0	string		070702		ASCII cpio archive (SVR4 with CRC)
38b6cee71dSXin LI
39b6cee71dSXin LI#
40b6cee71dSXin LI# Various archive formats used by various versions of the "ar"
41b6cee71dSXin LI# command.
42b6cee71dSXin LI#
43b6cee71dSXin LI
44b6cee71dSXin LI#
45b6cee71dSXin LI# Original UNIX archive formats.
46b6cee71dSXin LI# They were written with binary values in host byte order, and
47b6cee71dSXin LI# the magic number was a host "int", which might have been 16 bits
48b6cee71dSXin LI# or 32 bits.  We don't say "PDP-11" or "VAX", as there might have
49b6cee71dSXin LI# been ports to little-endian 16-bit-int or 32-bit-int platforms
50b6cee71dSXin LI# (x86?) using some of those formats; if none existed, feel free
51b6cee71dSXin LI# to use "PDP-11" for little-endian 16-bit and "VAX" for little-endian
52b6cee71dSXin LI# 32-bit.  There might have been big-endian ports of that sort as
53b6cee71dSXin LI# well.
54b6cee71dSXin LI#
55b6cee71dSXin LI0	leshort		0177555		very old 16-bit-int little-endian archive
56b6cee71dSXin LI0	beshort		0177555		very old 16-bit-int big-endian archive
57b6cee71dSXin LI0	lelong		0177555		very old 32-bit-int little-endian archive
58b6cee71dSXin LI0	belong		0177555		very old 32-bit-int big-endian archive
59b6cee71dSXin LI
60b6cee71dSXin LI0	leshort		0177545		old 16-bit-int little-endian archive
61b6cee71dSXin LI>2	string		__.SYMDEF	random library
62b6cee71dSXin LI0	beshort		0177545		old 16-bit-int big-endian archive
63b6cee71dSXin LI>2	string		__.SYMDEF	random library
64b6cee71dSXin LI0	lelong		0177545		old 32-bit-int little-endian archive
65b6cee71dSXin LI>4	string		__.SYMDEF	random library
66b6cee71dSXin LI0	belong		0177545		old 32-bit-int big-endian archive
67b6cee71dSXin LI>4	string		__.SYMDEF	random library
68b6cee71dSXin LI
69b6cee71dSXin LI#
70b6cee71dSXin LI# From "pdp" (but why a 4-byte quantity?)
71b6cee71dSXin LI#
72b6cee71dSXin LI0	lelong		0x39bed		PDP-11 old archive
73b6cee71dSXin LI0	lelong		0x39bee		PDP-11 4.0 archive
74b6cee71dSXin LI
75b6cee71dSXin LI#
76b6cee71dSXin LI# XXX - what flavor of APL used this, and was it a variant of
77b6cee71dSXin LI# some ar archive format?  It's similar to, but not the same
78b6cee71dSXin LI# as, the APL workspace magic numbers in pdp.
79b6cee71dSXin LI#
80b6cee71dSXin LI0	long		0100554		apl workspace
81b6cee71dSXin LI
82b6cee71dSXin LI#
83b6cee71dSXin LI# System V Release 1 portable(?) archive format.
84b6cee71dSXin LI#
85b6cee71dSXin LI0	string		=<ar>		System V Release 1 ar archive
86b6cee71dSXin LI!:mime	application/x-archive
87b6cee71dSXin LI
88b6cee71dSXin LI#
89b6cee71dSXin LI# Debian package; it's in the portable archive format, and needs to go
90b6cee71dSXin LI# before the entry for regular portable archives, as it's recognized as
91b6cee71dSXin LI# a portable archive whose first member has a name beginning with
92b6cee71dSXin LI# "debian".
93b6cee71dSXin LI#
94b6cee71dSXin LI0	string		=!<arch>\ndebian
95b6cee71dSXin LI>8	string		debian-split	part of multipart Debian package
96b6cee71dSXin LI!:mime	application/vnd.debian.binary-package
97b6cee71dSXin LI>8	string		debian-binary	Debian binary package
98b6cee71dSXin LI!:mime	application/vnd.debian.binary-package
99b6cee71dSXin LI>8	string		!debian
100b6cee71dSXin LI>68	string		>\0		(format %s)
101b6cee71dSXin LI# These next two lines do not work, because a bzip2 Debian archive
102b6cee71dSXin LI# still uses gzip for the control.tar (first in the archive).  Only
103b6cee71dSXin LI# data.tar varies, and the location of its filename varies too.
104b6cee71dSXin LI# file/libmagic does not current have support for ascii-string based
105b6cee71dSXin LI# (offsets) as of 2005-09-15.
106b6cee71dSXin LI#>81	string		bz2		\b, uses bzip2 compression
107b6cee71dSXin LI#>84	string		gz		\b, uses gzip compression
108b6cee71dSXin LI#>136	ledate		x		created: %s
109b6cee71dSXin LI
110b6cee71dSXin LI#
111b6cee71dSXin LI# MIPS archive; they're in the portable archive format, and need to go
112b6cee71dSXin LI# before the entry for regular portable archives, as it's recognized as
113b6cee71dSXin LI# a portable archive whose first member has a name beginning with
114b6cee71dSXin LI# "__________E".
115b6cee71dSXin LI#
116b6cee71dSXin LI0	string	=!<arch>\n__________E	MIPS archive
117b6cee71dSXin LI!:mime	application/x-archive
118b6cee71dSXin LI>20	string	U			with MIPS Ucode members
119b6cee71dSXin LI>21	string	L			with MIPSEL members
120b6cee71dSXin LI>21	string	B			with MIPSEB members
121b6cee71dSXin LI>19	string	L			and an EL hash table
122b6cee71dSXin LI>19	string	B			and an EB hash table
123b6cee71dSXin LI>22	string	X			-- out of date
124b6cee71dSXin LI
125b6cee71dSXin LI0	search/1	-h-		Software Tools format archive text
126b6cee71dSXin LI
127b6cee71dSXin LI#
128b6cee71dSXin LI# BSD/SVR2-and-later portable archive formats.
129b6cee71dSXin LI#
130b6cee71dSXin LI0	string		=!<arch>		current ar archive
131b6cee71dSXin LI!:mime	application/x-archive
132b6cee71dSXin LI>8	string		__.SYMDEF	random library
133b6cee71dSXin LI>68	string		__.SYMDEF\ SORTED	random library
134b6cee71dSXin LI
135b6cee71dSXin LI#
136b6cee71dSXin LI# "Thin" archive, as can be produced by GNU ar.
137b6cee71dSXin LI#
138b6cee71dSXin LI0	string		=!<thin>\n	thin archive with
139b6cee71dSXin LI>68	belong		0		no symbol entries
140b6cee71dSXin LI>68	belong		1		%d symbol entry
141b6cee71dSXin LI>68	belong		>1		%d symbol entries
142b6cee71dSXin LI
143b6cee71dSXin LI# ARC archiver, from Daniel Quinlan (quinlan@yggdrasil.com)
144b6cee71dSXin LI#
145b6cee71dSXin LI# The first byte is the magic (0x1a), byte 2 is the compression type for
146b6cee71dSXin LI# the first file (0x01 through 0x09), and bytes 3 to 15 are the MS-DOS
147b6cee71dSXin LI# filename of the first file (null terminated).  Since some types collide
148b6cee71dSXin LI# we only test some types on basis of frequency: 0x08 (83%), 0x09 (5%),
149b6cee71dSXin LI# 0x02 (5%), 0x03 (3%), 0x04 (2%), 0x06 (2%).  0x01 collides with terminfo.
150b6cee71dSXin LI0	lelong&0x8080ffff	0x0000081a	ARC archive data, dynamic LZW
151b6cee71dSXin LI!:mime	application/x-arc
152b6cee71dSXin LI0	lelong&0x8080ffff	0x0000091a	ARC archive data, squashed
153b6cee71dSXin LI!:mime	application/x-arc
154b6cee71dSXin LI0	lelong&0x8080ffff	0x0000021a	ARC archive data, uncompressed
155b6cee71dSXin LI!:mime	application/x-arc
156b6cee71dSXin LI0	lelong&0x8080ffff	0x0000031a	ARC archive data, packed
157b6cee71dSXin LI!:mime	application/x-arc
158b6cee71dSXin LI0	lelong&0x8080ffff	0x0000041a	ARC archive data, squeezed
159b6cee71dSXin LI!:mime	application/x-arc
160b6cee71dSXin LI0	lelong&0x8080ffff	0x0000061a	ARC archive data, crunched
161b6cee71dSXin LI!:mime	application/x-arc
162b6cee71dSXin LI# [JW] stuff taken from idarc, obviously ARC successors:
163b6cee71dSXin LI0	lelong&0x8080ffff	0x00000a1a	PAK archive data
164b6cee71dSXin LI!:mime	application/x-arc
165b6cee71dSXin LI0	lelong&0x8080ffff	0x0000141a	ARC+ archive data
166b6cee71dSXin LI!:mime	application/x-arc
167b6cee71dSXin LI0	lelong&0x8080ffff	0x0000481a	HYP archive data
168b6cee71dSXin LI!:mime	application/x-arc
169b6cee71dSXin LI
170b6cee71dSXin LI# Acorn archive formats (Disaster prone simpleton, m91dps@ecs.ox.ac.uk)
171b6cee71dSXin LI# I can't create either SPARK or ArcFS archives so I have not tested this stuff
172b6cee71dSXin LI# [GRR:  the original entries collide with ARC, above; replaced with combined
173b6cee71dSXin LI#  version (not tested)]
174b6cee71dSXin LI#0	byte		0x1a		RISC OS archive (spark format)
175b6cee71dSXin LI0	string		\032archive	RISC OS archive (ArcFS format)
176b6cee71dSXin LI0       string          Archive\000     RISC OS archive (ArcFS format)
177b6cee71dSXin LI
178b6cee71dSXin LI# All these were taken from idarc, many could not be verified. Unfortunately,
179b6cee71dSXin LI# there were many low-quality sigs, i.e. easy to trigger false positives.
180b6cee71dSXin LI# Please notify me of any real-world fishy/ambiguous signatures and I'll try
181b6cee71dSXin LI# to get my hands on the actual archiver and see if I find something better. [JW]
182b6cee71dSXin LI# probably many can be enhanced by finding some 0-byte or control char near the start
183b6cee71dSXin LI
184b6cee71dSXin LI# idarc calls this Crush/Uncompressed... *shrug*
185b6cee71dSXin LI0	string	CRUSH Crush archive data
186b6cee71dSXin LI# Squeeze It (.sqz)
187b6cee71dSXin LI0	string	HLSQZ Squeeze It archive data
188b6cee71dSXin LI# SQWEZ
189b6cee71dSXin LI0	string	SQWEZ SQWEZ archive data
190b6cee71dSXin LI# HPack (.hpk)
191b6cee71dSXin LI0	string	HPAK HPack archive data
192b6cee71dSXin LI# HAP
193b6cee71dSXin LI0	string	\x91\x33HF HAP archive data
194b6cee71dSXin LI# MD/MDCD
195b6cee71dSXin LI0	string	MDmd MDCD archive data
196b6cee71dSXin LI# LIM
197b6cee71dSXin LI0	string	LIM\x1a LIM archive data
198b6cee71dSXin LI# SAR
199b6cee71dSXin LI3	string	LH5 SAR archive data
200b6cee71dSXin LI# BSArc/BS2
201b6cee71dSXin LI0	string	\212\3SB\020\0	BSArc/BS2 archive data
202b6cee71dSXin LI# Bethesda Softworks Archive (Oblivion)
203b6cee71dSXin LI0	string	BSA\0 		BSArc archive data
204b6cee71dSXin LI>4	lelong	x		version %d
205b6cee71dSXin LI# MAR
206b6cee71dSXin LI2	string	=-ah MAR archive data
207b6cee71dSXin LI# ACB
208b6cee71dSXin LI#0	belong&0x00f800ff	0x00800000 ACB archive data
209b6cee71dSXin LI# CPZ
210b6cee71dSXin LI# TODO, this is what idarc says: 0	string	\0\0\0 CPZ archive data
211b6cee71dSXin LI# JRC
212b6cee71dSXin LI0	string	JRchive JRC archive data
213b6cee71dSXin LI# Quantum
214b6cee71dSXin LI0	string	DS\0 Quantum archive data
215b6cee71dSXin LI# ReSOF
216b6cee71dSXin LI0	string	PK\3\6 ReSOF archive data
217b6cee71dSXin LI# QuArk
218b6cee71dSXin LI0	string	7\4 QuArk archive data
219b6cee71dSXin LI# YAC
220b6cee71dSXin LI14	string	YC YAC archive data
221b6cee71dSXin LI# X1
222b6cee71dSXin LI0	string	X1 X1 archive data
223b6cee71dSXin LI0	string	XhDr X1 archive data
224b6cee71dSXin LI# CDC Codec (.dqt)
225b6cee71dSXin LI0	belong&0xffffe000	0x76ff2000 CDC Codec archive data
226b6cee71dSXin LI# AMGC
227b6cee71dSXin LI0	string	\xad6" AMGC archive data
228b6cee71dSXin LI# NuLIB
229b6cee71dSXin LI0	string	N\xc3\xb5F\xc3\xa9lx\xc3\xa5 NuLIB archive data
230b6cee71dSXin LI# PakLeo
231b6cee71dSXin LI0	string	LEOLZW PAKLeo archive data
232b6cee71dSXin LI# ChArc
233b6cee71dSXin LI0	string	SChF ChArc archive data
234b6cee71dSXin LI# PSA
235b6cee71dSXin LI0	string	PSA PSA archive data
236b6cee71dSXin LI# CrossePAC
237b6cee71dSXin LI0	string	DSIGDCC CrossePAC archive data
238b6cee71dSXin LI# Freeze
239b6cee71dSXin LI0	string	\x1f\x9f\x4a\x10\x0a Freeze archive data
240b6cee71dSXin LI# KBoom
241b6cee71dSXin LI0	string	\xc2\xa8MP\xc2\xa8 KBoom archive data
242b6cee71dSXin LI# NSQ, must go after CDC Codec
243b6cee71dSXin LI0	string	\x76\xff NSQ archive data
244b6cee71dSXin LI# DPA
245b6cee71dSXin LI0	string	Dirk\ Paehl DPA archive data
246b6cee71dSXin LI# BA
247b6cee71dSXin LI# TODO: idarc says "bytes 0-2 == bytes 3-5"
248b6cee71dSXin LI# TTComp
2493e41d09dSXin LI# URL: http://fileformats.archiveteam.org/wiki/TTComp_archive
2503e41d09dSXin LI# Update: Joerg Jenderek
2513e41d09dSXin LI# GRR: line below is too general as it matches also Panorama database "TCDB 2003-10 demo.pan", others
2523e41d09dSXin LI0	string	\0\6
2533e41d09dSXin LI# look for first keyword of Panorama database *.pan
2543e41d09dSXin LI>12	search/261	DESIGN
2553e41d09dSXin LI# skip keyword with low entropy
2563e41d09dSXin LI>12	default		x	TTComp archive, binary, 4K dictionary
2573e41d09dSXin LI# (version 5.25) labeled the above entry as "TTComp archive data"
258b6cee71dSXin LI# ESP, could this conflict with Easy Software Products' (e.g.ESP ghostscript) documentation?
259b6cee71dSXin LI0	string	ESP ESP archive data
260b6cee71dSXin LI# ZPack
261b6cee71dSXin LI0	string	\1ZPK\1 ZPack archive data
262b6cee71dSXin LI# Sky
263b6cee71dSXin LI0	string	\xbc\x40 Sky archive data
264b6cee71dSXin LI# UFA
265b6cee71dSXin LI0	string	UFA UFA archive data
266b6cee71dSXin LI# Dry
267b6cee71dSXin LI0	string	=-H2O DRY archive data
268b6cee71dSXin LI# FoxSQZ
269b6cee71dSXin LI0	string	FOXSQZ FoxSQZ archive data
270b6cee71dSXin LI# AR7
271b6cee71dSXin LI0	string	,AR7 AR7 archive data
272b6cee71dSXin LI# PPMZ
273b6cee71dSXin LI0	string	PPMZ PPMZ archive data
274b6cee71dSXin LI# MS Compress
275b6cee71dSXin LI4	string	\x88\xf0\x27 MS Compress archive data
276b6cee71dSXin LI# updated by Joerg Jenderek
277b6cee71dSXin LI>9	string	\0
278b6cee71dSXin LI>>0	string	KWAJ
279b6cee71dSXin LI>>>7	string	\321\003	MS Compress archive data
280b6cee71dSXin LI>>>>14	ulong	>0		\b, original size: %d bytes
281b6cee71dSXin LI>>>>18		ubyte	>0x65
282b6cee71dSXin LI>>>>>18		string	x       \b, was %.8s
283b6cee71dSXin LI>>>>>(10.b-4)	string	x       \b.%.3s
284b6cee71dSXin LI# MP3 (archiver, not lossy audio compression)
285b6cee71dSXin LI0	string	MP3\x1a MP3-Archiver archive data
286b6cee71dSXin LI# ZET
287b6cee71dSXin LI0	string	OZ\xc3\x9d ZET archive data
288b6cee71dSXin LI# TSComp
289b6cee71dSXin LI0	string	\x65\x5d\x13\x8c\x08\x01\x03\x00 TSComp archive data
290b6cee71dSXin LI# ARQ
291b6cee71dSXin LI0	string	gW\4\1 ARQ archive data
292b6cee71dSXin LI# Squash
293b6cee71dSXin LI3	string	OctSqu Squash archive data
294b6cee71dSXin LI# Terse
295b6cee71dSXin LI0	string	\5\1\1\0 Terse archive data
296b6cee71dSXin LI# PUCrunch
297b6cee71dSXin LI0	string	\x01\x08\x0b\x08\xef\x00\x9e\x32\x30\x36\x31 PUCrunch archive data
298b6cee71dSXin LI# UHarc
299b6cee71dSXin LI0	string	UHA UHarc archive data
300b6cee71dSXin LI# ABComp
301b6cee71dSXin LI0	string	\2AB ABComp archive data
302b6cee71dSXin LI0	string	\3AB2 ABComp archive data
303b6cee71dSXin LI# CMP
304b6cee71dSXin LI0	string	CO\0 CMP archive data
305b6cee71dSXin LI# Splint
306b6cee71dSXin LI0	string	\x93\xb9\x06 Splint archive data
307b6cee71dSXin LI# InstallShield
308b6cee71dSXin LI0	string	\x13\x5d\x65\x8c InstallShield Z archive Data
309b6cee71dSXin LI# Gather
310b6cee71dSXin LI1	string	GTH Gather archive data
311b6cee71dSXin LI# BOA
312b6cee71dSXin LI0	string	BOA BOA archive data
313b6cee71dSXin LI# RAX
314b6cee71dSXin LI0	string	ULEB\xa RAX archive data
315b6cee71dSXin LI# Xtreme
316b6cee71dSXin LI0	string	ULEB\0 Xtreme archive data
317b6cee71dSXin LI# Pack Magic
318b6cee71dSXin LI0	string	@\xc3\xa2\1\0 Pack Magic archive data
319b6cee71dSXin LI# BTS
320b6cee71dSXin LI0	belong&0xfeffffff	0x1a034465 BTS archive data
321b6cee71dSXin LI# ELI 5750
322b6cee71dSXin LI0	string	Ora\  ELI 5750 archive data
323b6cee71dSXin LI# QFC
324b6cee71dSXin LI0	string	\x1aFC\x1a QFC archive data
325b6cee71dSXin LI0	string	\x1aQF\x1a QFC archive data
326b6cee71dSXin LI# PRO-PACK
327b6cee71dSXin LI0	string	RNC PRO-PACK archive data
328b6cee71dSXin LI# 777
329b6cee71dSXin LI0	string	777 777 archive data
330b6cee71dSXin LI# LZS221
331b6cee71dSXin LI0	string	sTaC LZS221 archive data
332b6cee71dSXin LI# HPA
333b6cee71dSXin LI0	string	HPA HPA archive data
334b6cee71dSXin LI# Arhangel
335b6cee71dSXin LI0	string	LG Arhangel archive data
336b6cee71dSXin LI# EXP1, uses bzip2
337b6cee71dSXin LI0	string	0123456789012345BZh EXP1 archive data
338b6cee71dSXin LI# IMP
339b6cee71dSXin LI0	string	IMP\xa IMP archive data
340b6cee71dSXin LI# NRV
341b6cee71dSXin LI0	string	\x00\x9E\x6E\x72\x76\xFF NRV archive data
342b6cee71dSXin LI# Squish
343b6cee71dSXin LI0	string	\x73\xb2\x90\xf4 Squish archive data
344b6cee71dSXin LI# Par
345b6cee71dSXin LI0	string	PHILIPP Par archive data
346b6cee71dSXin LI0	string	PAR Par archive data
347b6cee71dSXin LI# HIT
348b6cee71dSXin LI0	string	UB HIT archive data
349b6cee71dSXin LI# SBX
350b6cee71dSXin LI0	belong&0xfffff000	0x53423000 SBX archive data
351b6cee71dSXin LI# NaShrink
352b6cee71dSXin LI0	string	NSK NaShrink archive data
353b6cee71dSXin LI# SAPCAR
354b6cee71dSXin LI0	string	#\ CAR\ archive\ header SAPCAR archive data
355b6cee71dSXin LI0	string	CAR\ 2.00RG SAPCAR archive data
356b6cee71dSXin LI# Disintegrator
357b6cee71dSXin LI0	string	DST Disintegrator archive data
358b6cee71dSXin LI# ASD
359b6cee71dSXin LI0	string	ASD ASD archive data
360b6cee71dSXin LI# InstallShield CAB
361b6cee71dSXin LI0	string	ISc( InstallShield CAB
362b6cee71dSXin LI# TOP4
363b6cee71dSXin LI0	string	T4\x1a TOP4 archive data
364b6cee71dSXin LI# BatComp left out: sig looks like COM executable
365b6cee71dSXin LI# so TODO: get real 4dos batcomp file and find sig
366b6cee71dSXin LI# BlakHole
367b6cee71dSXin LI0	string	BH\5\7 BlakHole archive data
368b6cee71dSXin LI# BIX
369b6cee71dSXin LI0	string	BIX0 BIX archive data
370b6cee71dSXin LI# ChiefLZA
371b6cee71dSXin LI0	string	ChfLZ ChiefLZA archive data
372b6cee71dSXin LI# Blink
373b6cee71dSXin LI0	string	Blink Blink archive data
374b6cee71dSXin LI# Logitech Compress
375b6cee71dSXin LI0	string	\xda\xfa Logitech Compress archive data
376b6cee71dSXin LI# ARS-Sfx (FIXME: really a SFX? then goto COM/EXE)
377b6cee71dSXin LI1	string	(C)\ STEPANYUK ARS-Sfx archive data
378b6cee71dSXin LI# AKT/AKT32
379b6cee71dSXin LI0	string	AKT32 AKT32 archive data
380b6cee71dSXin LI0	string	AKT AKT archive data
381b6cee71dSXin LI# NPack
382b6cee71dSXin LI0	string	MSTSM NPack archive data
383b6cee71dSXin LI# PFT
384b6cee71dSXin LI0	string	\0\x50\0\x14 PFT archive data
385b6cee71dSXin LI# SemOne
386b6cee71dSXin LI0	string	SEM SemOne archive data
387b6cee71dSXin LI# PPMD
388b6cee71dSXin LI0	string	\x8f\xaf\xac\x84 PPMD archive data
389b6cee71dSXin LI# FIZ
390b6cee71dSXin LI0	string	FIZ FIZ archive data
391b6cee71dSXin LI# MSXiE
392b6cee71dSXin LI0	belong&0xfffff0f0	0x4d530000 MSXiE archive data
393b6cee71dSXin LI# DeepFreezer
394b6cee71dSXin LI0	belong&0xfffffff0	0x797a3030 DeepFreezer archive data
395b6cee71dSXin LI# DC
396b6cee71dSXin LI0	string	=<DC- DC archive data
397b6cee71dSXin LI# TPac
398b6cee71dSXin LI0	string	\4TPAC\3 TPac archive data
399b6cee71dSXin LI# Ai
400b6cee71dSXin LI0	string	Ai\1\1\0 Ai archive data
401b6cee71dSXin LI0	string	Ai\1\0\0 Ai archive data
402b6cee71dSXin LI# Ai32
403b6cee71dSXin LI0	string	Ai\2\0 Ai32 archive data
404b6cee71dSXin LI0	string	Ai\2\1 Ai32 archive data
405b6cee71dSXin LI# SBC
406b6cee71dSXin LI0	string	SBC SBC archive data
407b6cee71dSXin LI# Ybs
408b6cee71dSXin LI0	string	YBS Ybs archive data
409b6cee71dSXin LI# DitPack
410b6cee71dSXin LI0	string	\x9e\0\0 DitPack archive data
411b6cee71dSXin LI# DMS
412b6cee71dSXin LI0	string	DMS! DMS archive data
413b6cee71dSXin LI# EPC
414b6cee71dSXin LI0	string	\x8f\xaf\xac\x8c EPC archive data
415b6cee71dSXin LI# VSARC
416b6cee71dSXin LI0	string	VS\x1a VSARC archive data
417b6cee71dSXin LI# PDZ
418b6cee71dSXin LI0	string	PDZ PDZ archive data
419b6cee71dSXin LI# ReDuq
420b6cee71dSXin LI0	string	rdqx ReDuq archive data
421b6cee71dSXin LI# GCA
422b6cee71dSXin LI0	string	GCAX GCA archive data
423b6cee71dSXin LI# PPMN
424b6cee71dSXin LI0	string	pN PPMN archive data
425b6cee71dSXin LI# WinImage
426b6cee71dSXin LI3	string	WINIMAGE WinImage archive data
427b6cee71dSXin LI# Compressia
428b6cee71dSXin LI0	string	CMP0CMP Compressia archive data
429b6cee71dSXin LI# UHBC
430b6cee71dSXin LI0	string	UHB UHBC archive data
431b6cee71dSXin LI# WinHKI
432b6cee71dSXin LI0	string	\x61\x5C\x04\x05 WinHKI archive data
433b6cee71dSXin LI# WWPack data file
434b6cee71dSXin LI0	string	WWP WWPack archive data
435b6cee71dSXin LI# BSN (BSA, PTS-DOS)
436b6cee71dSXin LI0	string	\xffBSG BSN archive data
437b6cee71dSXin LI1	string	\xffBSG BSN archive data
438b6cee71dSXin LI3	string	\xffBSG BSN archive data
439b6cee71dSXin LI1	string	\0\xae\2 BSN archive data
440b6cee71dSXin LI1	string	\0\xae\3 BSN archive data
441b6cee71dSXin LI1	string	\0\xae\7 BSN archive data
442b6cee71dSXin LI# AIN
443b6cee71dSXin LI0	string	\x33\x18 AIN archive data
444b6cee71dSXin LI0	string	\x33\x17 AIN archive data
4459ce06829SXin LI# XPA32 test moved and merged with XPA by Joerg Jenderek at Sep 2015
446b6cee71dSXin LI# SZip (TODO: doesn't catch all versions)
447b6cee71dSXin LI0	string	SZ\x0a\4 SZip archive data
448b6cee71dSXin LI# XPack DiskImage
4499ce06829SXin LI# *.XDI updated by Joerg Jenderek Sep 2015
4509ce06829SXin LI# ftp://ftp.sac.sk/pub/sac/pack/0index.txt
4519ce06829SXin LI# GRR: this test is still too general as it catches also text files starting with jm
4529ce06829SXin LI0	string	jm
4539ce06829SXin LI# only found examples with this additional characteristic 2 bytes
4549ce06829SXin LI>2	string	\x2\x4	Xpack DiskImage archive data
4559ce06829SXin LI#!:ext xdi
456b6cee71dSXin LI# XPack Data
4579ce06829SXin LI# *.xpa updated by Joerg Jenderek Sep 2015
4589ce06829SXin LI# ftp://ftp.elf.stuba.sk/pub/pc/pack/
4599ce06829SXin LI0	string	xpa	XPA
4609ce06829SXin LI!:ext	xpa
4619ce06829SXin LI# XPA32
4629ce06829SXin LI# ftp://ftp.elf.stuba.sk/pub/pc/pack/xpa32.zip
4639ce06829SXin LI# created by XPA32.EXE version 1.0.2 for Windows
4649ce06829SXin LI>0	string	xpa\0\1 \b32 archive data
4659ce06829SXin LI# created by XPACK.COM version 1.67m or 1.67r with short 0x1800
4669ce06829SXin LI>3	ubeshort	!0x0001	\bck archive data
467b6cee71dSXin LI# XPack Single Data
4689ce06829SXin LI# changed by Joerg Jenderek Sep 2015 back to like in version 5.12
4699ce06829SXin LI# letter 'I'+ acute accent is equivalent to \xcd
4709ce06829SXin LI0	string	\xcd\ jm	Xpack single archive data
4719ce06829SXin LI#!:mime	application/x-xpa-compressed
4729ce06829SXin LI!:ext xpa
473b6cee71dSXin LI
474b6cee71dSXin LI# TODO: missing due to unknown magic/magic at end of file:
475b6cee71dSXin LI#DWC
476b6cee71dSXin LI#ARG
477b6cee71dSXin LI#ZAR
478b6cee71dSXin LI#PC/3270
479b6cee71dSXin LI#InstallIt
480b6cee71dSXin LI#RKive
481b6cee71dSXin LI#RK
482b6cee71dSXin LI#XPack Diskimage
483b6cee71dSXin LI
484b6cee71dSXin LI# These were inspired by idarc, but actually verified
485b6cee71dSXin LI# Dzip archiver (.dz)
486b6cee71dSXin LI0	string	DZ Dzip archive data
487b6cee71dSXin LI>2	byte	x \b, version %i
488b6cee71dSXin LI>3	byte	x \b.%i
489b6cee71dSXin LI# ZZip archiver (.zz)
490b6cee71dSXin LI0	string	ZZ\ \0\0 ZZip archive data
491b6cee71dSXin LI0	string	ZZ0 ZZip archive data
492b6cee71dSXin LI# PAQ archiver (.paq)
493b6cee71dSXin LI0	string	\xaa\x40\x5f\x77\x1f\xe5\x82\x0d PAQ archive data
494b6cee71dSXin LI0	string	PAQ PAQ archive data
495b6cee71dSXin LI>3	byte&0xf0	0x30
496b6cee71dSXin LI>>3	byte	x (v%c)
497b6cee71dSXin LI# JAR archiver (.j), this is the successor to ARJ, not Java's JAR (which is essentially ZIP)
498b6cee71dSXin LI0xe	string	\x1aJar\x1b JAR (ARJ Software, Inc.) archive data
499b6cee71dSXin LI0	string	JARCS JAR (ARJ Software, Inc.) archive data
500b6cee71dSXin LI
501b6cee71dSXin LI# ARJ archiver (jason@jarthur.Claremont.EDU)
502b6cee71dSXin LI0	leshort		0xea60		ARJ archive data
503b6cee71dSXin LI!:mime	application/x-arj
504b6cee71dSXin LI>5	byte		x		\b, v%d,
505b6cee71dSXin LI>8	byte		&0x04		multi-volume,
506b6cee71dSXin LI>8	byte		&0x10		slash-switched,
507b6cee71dSXin LI>8	byte		&0x20		backup,
508b6cee71dSXin LI>34	string		x		original name: %s,
509b6cee71dSXin LI>7	byte		0		os: MS-DOS
510b6cee71dSXin LI>7	byte		1		os: PRIMOS
511b6cee71dSXin LI>7	byte		2		os: Unix
512b6cee71dSXin LI>7	byte		3		os: Amiga
513b6cee71dSXin LI>7	byte		4		os: Macintosh
514b6cee71dSXin LI>7	byte		5		os: OS/2
515b6cee71dSXin LI>7	byte		6		os: Apple ][ GS
516b6cee71dSXin LI>7	byte		7		os: Atari ST
517b6cee71dSXin LI>7	byte		8		os: NeXT
518b6cee71dSXin LI>7	byte		9		os: VAX/VMS
519b6cee71dSXin LI>3	byte		>0		%d]
520b6cee71dSXin LI# [JW] idarc says this is also possible
521b6cee71dSXin LI2	leshort		0xea60		ARJ archive data
522b6cee71dSXin LI
523b6cee71dSXin LI# HA archiver (Greg Roelofs, newt@uchicago.edu)
524b6cee71dSXin LI# This is a really bad format. A file containing HAWAII will match this...
525b6cee71dSXin LI#0	string		HA		HA archive data,
526b6cee71dSXin LI#>2	leshort		=1		1 file,
527b6cee71dSXin LI#>2	leshort		>1		%hu files,
528b6cee71dSXin LI#>4	byte&0x0f	=0		first is type CPY
529b6cee71dSXin LI#>4	byte&0x0f	=1		first is type ASC
530b6cee71dSXin LI#>4	byte&0x0f	=2		first is type HSC
531b6cee71dSXin LI#>4	byte&0x0f	=0x0e		first is type DIR
532b6cee71dSXin LI#>4	byte&0x0f	=0x0f		first is type SPECIAL
533b6cee71dSXin LI# suggestion: at least identify small archives (<1024 files)
534b6cee71dSXin LI0  belong&0xffff00fc 0x48410000 HA archive data
535b6cee71dSXin LI>2	leshort		=1		1 file,
536b6cee71dSXin LI>2	leshort		>1		%u files,
537b6cee71dSXin LI>4	byte&0x0f	=0		first is type CPY
538b6cee71dSXin LI>4	byte&0x0f	=1		first is type ASC
539b6cee71dSXin LI>4	byte&0x0f	=2		first is type HSC
540b6cee71dSXin LI>4	byte&0x0f	=0x0e		first is type DIR
541b6cee71dSXin LI>4	byte&0x0f	=0x0f		first is type SPECIAL
542b6cee71dSXin LI
543b6cee71dSXin LI# HPACK archiver (Peter Gutmann, pgut1@cs.aukuni.ac.nz)
544b6cee71dSXin LI0	string		HPAK		HPACK archive data
545b6cee71dSXin LI
546b6cee71dSXin LI# JAM Archive volume format, by Dmitry.Kohmanyuk@UA.net
547b6cee71dSXin LI0	string		\351,\001JAM\ 		JAM archive,
548b6cee71dSXin LI>7	string		>\0			version %.4s
549b6cee71dSXin LI>0x26	byte		=0x27			-
550b6cee71dSXin LI>>0x2b	string          >\0			label %.11s,
551b6cee71dSXin LI>>0x27	lelong		x			serial %08x,
552b6cee71dSXin LI>>0x36	string		>\0			fstype %.8s
553b6cee71dSXin LI
554b6cee71dSXin LI# LHARC/LHA archiver (Greg Roelofs, newt@uchicago.edu)
5553e41d09dSXin LI# Update: Joerg Jenderek
5563e41d09dSXin LI# URL: https://en.wikipedia.org/wiki/LHA_(file_format)
5573e41d09dSXin LI# Reference: http://web.archive.org/web/20021005080911/http://www.osirusoft.com/joejared/lzhformat.html
5583e41d09dSXin LI#
5593e41d09dSXin LI#	check and display information of lharc (LHa,PMarc) file
5603e41d09dSXin LI0	name				lharc-file
5613e41d09dSXin LI# check 1st character of method id like -lz4- -lh5- or -pm2-
5623e41d09dSXin LI>2	string		-
5633e41d09dSXin LI# check 5th character of method id
5643e41d09dSXin LI>>6	string		-
5653e41d09dSXin LI# check header level 0 1 2 3
5663e41d09dSXin LI>>>20	ubyte		<4
5673e41d09dSXin LI# check 2nd, 3th and 4th character of method id
5683e41d09dSXin LI>>>>3	regex		\^(lh[0-9a-ex]|lz[s2-8]|pm[012]|pc1)		\b
5693e41d09dSXin LI!:mime	application/x-lzh-compressed
5703e41d09dSXin LI# creator type "LHA "
5713e41d09dSXin LI!:apple	????LHA
5723e41d09dSXin LI# display archive type name like "LHa/LZS archive data" or "LArc archive"
5733e41d09dSXin LI>>>>>2	string		-lz		\b
5743e41d09dSXin LI!:ext	lzs
5753e41d09dSXin LI# already known  -lzs- -lz4- -lz5- with old names
5763e41d09dSXin LI>>>>>>2	string	-lzs		LHa/LZS archive data
5773e41d09dSXin LI>>>>>>3	regex	\^lz[45]	LHarc 1.x archive data
5783e41d09dSXin LI# missing -lz?- with wikipedia names
5793e41d09dSXin LI>>>>>>3	regex	\^lz[2378]	LArc archive
5803e41d09dSXin LI# display archive type name like "LHa (2.x) archive data"
5813e41d09dSXin LI>>>>>2	string		-lh		\b
5823e41d09dSXin LI# already known -lh0- -lh1- -lh2- -lh3-  -lh4- -lh5- -lh6- -lh7- -lhd- variants with old names
5833e41d09dSXin LI>>>>>>3	regex		\^lh[01]	LHarc 1.x/ARX archive data
5843e41d09dSXin LI# LHice archiver use ".ICE" as name extension instead usual one ".lzh"
5853e41d09dSXin LI# FOOBAR archiver use ".foo" as name extension instead usual one
5863e41d09dSXin LI# "Florain Orjanov's and Olga Bachetska's ARchiver" not found at the moment
5873e41d09dSXin LI>>>>>>>2	string	-lh1		\b
5883e41d09dSXin LI!:ext lha/lzh/ice
5893e41d09dSXin LI>>>>>>3	regex		\^lh[23d]	LHa 2.x? archive data
5903e41d09dSXin LI>>>>>>3	regex		\^lh[7]		LHa (2.x)/LHark archive data
5913e41d09dSXin LI>>>>>>3	regex		\^lh[456]	LHa (2.x) archive data
5923e41d09dSXin LI>>>>>>>2	string	-lh5		\b
5933e41d09dSXin LI# https://en.wikipedia.org/wiki/BIOS
5943e41d09dSXin LI# Some mainboard BIOS like Award use LHa compression. So archives with unusal extension are found like
5953e41d09dSXin LI# bios.rom , kd7_v14.bin, 1010.004, ...
5963e41d09dSXin LI!:ext lha/lzh/rom/bin
5973e41d09dSXin LI# missing -lh?- variants (Joe Jared)
5983e41d09dSXin LI>>>>>>3	regex		\^lh[89a-ce]	LHa (Joe Jared) archive
5993e41d09dSXin LI# UNLHA32 2.67a
6003e41d09dSXin LI>>>>>>2	string		-lhx		LHa (UNLHA32) archive
6013e41d09dSXin LI# lha archives with standard file name extensions ".lha" ".lzh"
6023e41d09dSXin LI>>>>>>3	regex		!\^(lh1|lh5)	\b
6033e41d09dSXin LI!:ext lha/lzh
6043e41d09dSXin LI# this should not happen if all -lh variants are described
6053e41d09dSXin LI>>>>>>2	default		x		LHa (unknown) archive
6063e41d09dSXin LI#!:ext	lha
6073e41d09dSXin LI# PMarc
6083e41d09dSXin LI>>>>>3	regex		\^pm[012]	PMarc archive data
6093e41d09dSXin LI!:ext pma
6103e41d09dSXin LI# append method id without leading and trailing minus character
6113e41d09dSXin LI>>>>>3	string		x		[%3.3s]
6123e41d09dSXin LI>>>>>>0	use	lharc-header
6133e41d09dSXin LI#
6143e41d09dSXin LI#	check and display information of lharc header
6153e41d09dSXin LI0	name				lharc-header
6163e41d09dSXin LI# header size 0x4 , 0x1b-0x61
6173e41d09dSXin LI>0	ubyte		x
6183e41d09dSXin LI# compressed data size != compressed file size
6193e41d09dSXin LI#>7	ulelong		x		\b, data size %d
6203e41d09dSXin LI# attribute: 0x2~?? 0x10~symlink|target 0x20~normal
6213e41d09dSXin LI#>19	ubyte		x		\b, 19_0x%x
6223e41d09dSXin LI# level identifier 0 1 2 3
6233e41d09dSXin LI#>20	ubyte		x		\b, level %d
6243e41d09dSXin LI# time stamp
6253e41d09dSXin LI#>15		ubelong	x		DATE 0x%8.8x
6263e41d09dSXin LI# OS ID for level 1
6273e41d09dSXin LI>20	ubyte		1
6283e41d09dSXin LI# 0x20 types find for *.rom files
6293e41d09dSXin LI>>(21.b+24)	ubyte	<0x21		\b, 0x%x OS
6303e41d09dSXin LI# ascii type like M for MSDOS
6313e41d09dSXin LI>>(21.b+24)	ubyte	>0x20		\b, '%c' OS
6323e41d09dSXin LI# OS ID for level 2
6333e41d09dSXin LI>20	ubyte		2
6343e41d09dSXin LI#>>23	ubyte		x		\b, OS ID 0x%x
6353e41d09dSXin LI>>23	ubyte		<0x21		\b, 0x%x OS
6363e41d09dSXin LI>>23	ubyte		>0x20		\b, '%c' OS
6373e41d09dSXin LI# filename only for level 0 and 1
6383e41d09dSXin LI>20	ubyte		<2
6393e41d09dSXin LI# length of filename
6403e41d09dSXin LI>>21		ubyte	>0		\b, with
6413e41d09dSXin LI# filename
6423e41d09dSXin LI>>>21		pstring	x		"%s"
6433e41d09dSXin LI#
6443e41d09dSXin LI#2	string		-lh0-		LHarc 1.x/ARX archive data [lh0]
6453e41d09dSXin LI#!:mime	application/x-lharc
6463e41d09dSXin LI2	string		-lh0-
6473e41d09dSXin LI>0	use	lharc-file
6483e41d09dSXin LI#2	string		-lh1-		LHarc 1.x/ARX archive data [lh1]
6493e41d09dSXin LI#!:mime	application/x-lharc
6503e41d09dSXin LI2	string		-lh1-
6513e41d09dSXin LI>0	use	lharc-file
6523e41d09dSXin LI# NEW -lz2- ... -lz8-
6533e41d09dSXin LI2	string		-lz2-
6543e41d09dSXin LI>0	use	lharc-file
6553e41d09dSXin LI2	string		-lz3-
6563e41d09dSXin LI>0	use	lharc-file
6573e41d09dSXin LI2	string		-lz4-
6583e41d09dSXin LI>0	use	lharc-file
6593e41d09dSXin LI2	string		-lz5-
6603e41d09dSXin LI>0	use	lharc-file
6613e41d09dSXin LI2	string		-lz7-
6623e41d09dSXin LI>0	use	lharc-file
6633e41d09dSXin LI2	string		-lz8-
6643e41d09dSXin LI>0	use	lharc-file
665b6cee71dSXin LI#	[never seen any but the last; -lh4- reported in comp.compression:]
6663e41d09dSXin LI#2	string		-lzs-		LHa/LZS archive data [lzs]
6673e41d09dSXin LI2	string		-lzs-
6683e41d09dSXin LI>0	use	lharc-file
6693e41d09dSXin LI# According to wikipedia and others such a version does not exist
6703e41d09dSXin LI#2	string		-lh\40-		LHa 2.x? archive data [lh ]
6713e41d09dSXin LI#2	string		-lhd-		LHa 2.x? archive data [lhd]
6723e41d09dSXin LI2	string		-lhd-
6733e41d09dSXin LI>0	use	lharc-file
6743e41d09dSXin LI#2	string		-lh2-		LHa 2.x? archive data [lh2]
6753e41d09dSXin LI2	string		-lh2-
6763e41d09dSXin LI>0	use	lharc-file
6773e41d09dSXin LI#2	string		-lh3-		LHa 2.x? archive data [lh3]
6783e41d09dSXin LI2	string		-lh3-
6793e41d09dSXin LI>0	use	lharc-file
6803e41d09dSXin LI#2	string		-lh4-		LHa (2.x) archive data [lh4]
6813e41d09dSXin LI2	string		-lh4-
6823e41d09dSXin LI>0	use	lharc-file
6833e41d09dSXin LI#2	string		-lh5-		LHa (2.x) archive data [lh5]
6843e41d09dSXin LI2	string		-lh5-
6853e41d09dSXin LI>0	use	lharc-file
6863e41d09dSXin LI#2	string		-lh6-		LHa (2.x) archive data [lh6]
6873e41d09dSXin LI2	string		-lh6-
6883e41d09dSXin LI>0	use	lharc-file
6893e41d09dSXin LI#2	string		-lh7-		LHa (2.x)/LHark archive data [lh7]
6903e41d09dSXin LI2	string		-lh7-
6913e41d09dSXin LI# !:mime	application/x-lha
6923e41d09dSXin LI# >20	byte		x		- header level %d
6933e41d09dSXin LI>0	use	lharc-file
6943e41d09dSXin LI# NEW -lh8- ... -lhe- , -lhx-
6953e41d09dSXin LI2	string		-lh8-
6963e41d09dSXin LI>0	use	lharc-file
6973e41d09dSXin LI2	string		-lh9-
6983e41d09dSXin LI>0	use	lharc-file
6993e41d09dSXin LI2	string		-lha-
7003e41d09dSXin LI>0	use	lharc-file
7013e41d09dSXin LI2	string		-lhb-
7023e41d09dSXin LI>0	use	lharc-file
7033e41d09dSXin LI2	string		-lhc-
7043e41d09dSXin LI>0	use	lharc-file
7053e41d09dSXin LI2	string		-lhe-
7063e41d09dSXin LI>0	use	lharc-file
7073e41d09dSXin LI2	string		-lhx-
7083e41d09dSXin LI>0	use	lharc-file
709b6cee71dSXin LI# taken from idarc [JW]
710b6cee71dSXin LI2   string      -lZ         PUT archive data
7113e41d09dSXin LI# already done by LHarc magics
7123e41d09dSXin LI# this should never happen if all sub types of LZS archive are identified
7133e41d09dSXin LI#2   string      -lz         LZS archive data
714b6cee71dSXin LI2   string      -sw1-       Swag archive data
715b6cee71dSXin LI
7163e41d09dSXin LI0	name		rar-file-header
7173e41d09dSXin LI>24	byte		15		\b, v1.5
7183e41d09dSXin LI>24	byte		20		\b, v2.0
7193e41d09dSXin LI>24	byte		29		\b, v4
7203e41d09dSXin LI>15	byte		0		\b, os: MS-DOS
7213e41d09dSXin LI>15	byte		1		\b, os: OS/2
7223e41d09dSXin LI>15	byte		2		\b, os: Win32
7233e41d09dSXin LI>15	byte		3		\b, os: Unix
7243e41d09dSXin LI>15	byte		4		\b, os: Mac OS
7253e41d09dSXin LI>15	byte		5		\b, os: BeOS
7263e41d09dSXin LI
7273e41d09dSXin LI0	name		rar-archive-header
7283e41d09dSXin LI>3	leshort&0x1ff	>0		\b, flags:
7293e41d09dSXin LI>>3	leshort		&0x01		ArchiveVolume
7303e41d09dSXin LI>>3	leshort		&0x02		Commented
7313e41d09dSXin LI>>3	leshort		&0x04		Locked
7323e41d09dSXin LI>>3	leshort		&0x10		NewVolumeNaming
7333e41d09dSXin LI>>3	leshort		&0x08		Solid
7343e41d09dSXin LI>>3	leshort		&0x20		Authenticated
7353e41d09dSXin LI>>3	leshort		&0x40		RecoveryRecordPresent
7363e41d09dSXin LI>>3	leshort		&0x80		EncryptedBlockHeader
7373e41d09dSXin LI>>3	leshort		&0x100		FirstVolume
7383e41d09dSXin LI
7393e41d09dSXin LI# RAR (Roshal Archive) archive
7403e41d09dSXin LI0	string		Rar!\x1a\7\0		RAR archive data
741b6cee71dSXin LI!:mime	application/x-rar
7423e41d09dSXin LI!:ext	rar/cbr
7433e41d09dSXin LI# file header
7443e41d09dSXin LI>(0xc.l+9)	byte	0x74
7453e41d09dSXin LI>>(0xc.l+7)	use	rar-file-header
7463e41d09dSXin LI# subblock seems to share information with file header
7473e41d09dSXin LI>(0xc.l+9)	byte	0x7a
7483e41d09dSXin LI>>(0xc.l+7)	use	rar-file-header
7493e41d09dSXin LI>9		byte	0x73
7503e41d09dSXin LI>>7		use	rar-archive-header
7513e41d09dSXin LI
7523e41d09dSXin LI0	string		Rar!\x1a\7\1\0		RAR archive data, v5
7533e41d09dSXin LI!:mime	application/x-rar
7543e41d09dSXin LI!:ext	rar
7553e41d09dSXin LI
7563e41d09dSXin LI# Very old RAR archive
7573e41d09dSXin LI# http://jasonblanks.com/wp-includes/images/papers/KnowyourarchiveRAR.pdf
7583e41d09dSXin LI0	string		RE\x7e\x5e  RAR archive data (<v1.5)
7593e41d09dSXin LI!:mime	application/x-rar
7603e41d09dSXin LI!:ext	rar/cbr
761b6cee71dSXin LI
762b6cee71dSXin LI# SQUISH archiver (Greg Roelofs, newt@uchicago.edu)
763b6cee71dSXin LI0	string		SQSH		squished archive data (Acorn RISCOS)
764b6cee71dSXin LI
765b6cee71dSXin LI# UC2 archiver (Greg Roelofs, newt@uchicago.edu)
766b6cee71dSXin LI# [JW] see exe section for self-extracting version
767b6cee71dSXin LI0	string		UC2\x1a		UC2 archive data
768b6cee71dSXin LI
769b6cee71dSXin LI# PKZIP multi-volume archive
770b6cee71dSXin LI0	string		PK\x07\x08PK\x03\x04	Zip multi-volume archive data, at least PKZIP v2.50 to extract
771b6cee71dSXin LI!:mime	application/zip
7723e41d09dSXin LI!:ext zip/cbz
773b6cee71dSXin LI
774b6cee71dSXin LI# Zip archives (Greg Roelofs, c/o zip-bugs@wkuvx1.wku.edu)
775b6cee71dSXin LI0	string		PK\005\006	Zip archive data (empty)
7763e41d09dSXin LI!:mime application/zip
7773e41d09dSXin LI!:ext zip/cbz
778b6cee71dSXin LI0	string		PK\003\004
779b6cee71dSXin LI
780b6cee71dSXin LI# Specialised zip formats which start with a member named 'mimetype'
781b6cee71dSXin LI# (stored uncompressed, with no 'extra field') containing the file's MIME type.
782b6cee71dSXin LI# Check for have 8-byte name, 0-byte extra field, name "mimetype", and
783b6cee71dSXin LI#  contents starting with "application/":
784b6cee71dSXin LI>26	string		\x8\0\0\0mimetypeapplication/
785b6cee71dSXin LI
786b6cee71dSXin LI#  KOffice / OpenOffice & StarOffice / OpenDocument formats
787b6cee71dSXin LI#    From: Abel Cheung <abel@oaka.org>
788b6cee71dSXin LI
789b6cee71dSXin LI#   KOffice (1.2 or above) formats
790b6cee71dSXin LI#    (mimetype contains "application/vnd.kde.<SUBTYPE>")
791b6cee71dSXin LI>>50	string	vnd.kde.		KOffice (>=1.2)
792b6cee71dSXin LI>>>58	string	karbon			Karbon document
793b6cee71dSXin LI>>>58	string	kchart			KChart document
794b6cee71dSXin LI>>>58	string	kformula		KFormula document
795b6cee71dSXin LI>>>58	string	kivio			Kivio document
796b6cee71dSXin LI>>>58	string	kontour			Kontour document
797b6cee71dSXin LI>>>58	string	kpresenter		KPresenter document
798b6cee71dSXin LI>>>58	string	kspread			KSpread document
799b6cee71dSXin LI>>>58	string	kword			KWord document
800b6cee71dSXin LI
801b6cee71dSXin LI#   OpenOffice formats (for OpenOffice 1.x / StarOffice 6/7)
802b6cee71dSXin LI#    (mimetype contains "application/vnd.sun.xml.<SUBTYPE>")
803b6cee71dSXin LI>>50	string	vnd.sun.xml.		OpenOffice.org 1.x
804b6cee71dSXin LI>>>62	string	writer			Writer
805b6cee71dSXin LI>>>>68	byte	!0x2e			document
806b6cee71dSXin LI>>>>68	string	.template		template
807b6cee71dSXin LI>>>>68	string	.global			global document
808b6cee71dSXin LI>>>62	string	calc			Calc
809b6cee71dSXin LI>>>>66	byte	!0x2e			spreadsheet
810b6cee71dSXin LI>>>>66	string	.template		template
811b6cee71dSXin LI>>>62	string	draw			Draw
812b6cee71dSXin LI>>>>66	byte	!0x2e			document
813b6cee71dSXin LI>>>>66	string	.template		template
814b6cee71dSXin LI>>>62	string	impress			Impress
815b6cee71dSXin LI>>>>69	byte	!0x2e			presentation
816b6cee71dSXin LI>>>>69	string	.template		template
817b6cee71dSXin LI>>>62	string	math			Math document
818b6cee71dSXin LI>>>62	string	base			Database file
819b6cee71dSXin LI
820b6cee71dSXin LI#   OpenDocument formats (for OpenOffice 2.x / StarOffice >= 8)
821b6cee71dSXin LI#    http://lists.oasis-open.org/archives/office/200505/msg00006.html
822b6cee71dSXin LI#    (mimetype contains "application/vnd.oasis.opendocument.<SUBTYPE>")
823b6cee71dSXin LI>>50	string	vnd.oasis.opendocument.	OpenDocument
824b6cee71dSXin LI>>>73	string	text
825b6cee71dSXin LI>>>>77	byte	!0x2d			Text
826b6cee71dSXin LI!:mime	application/vnd.oasis.opendocument.text
827b6cee71dSXin LI>>>>77	string	-template		Text Template
828b6cee71dSXin LI!:mime	application/vnd.oasis.opendocument.text-template
829b6cee71dSXin LI>>>>77	string	-web			HTML Document Template
830b6cee71dSXin LI!:mime	application/vnd.oasis.opendocument.text-web
831b6cee71dSXin LI>>>>77	string	-master			Master Document
832b6cee71dSXin LI!:mime	application/vnd.oasis.opendocument.text-master
833b6cee71dSXin LI>>>73	string	graphics
834b6cee71dSXin LI>>>>81	byte	!0x2d			Drawing
835b6cee71dSXin LI!:mime	application/vnd.oasis.opendocument.graphics
836b6cee71dSXin LI>>>>81	string	-template		Template
837b6cee71dSXin LI!:mime	application/vnd.oasis.opendocument.graphics-template
838b6cee71dSXin LI>>>73	string	presentation
839b6cee71dSXin LI>>>>85	byte	!0x2d			Presentation
840b6cee71dSXin LI!:mime	application/vnd.oasis.opendocument.presentation
841b6cee71dSXin LI>>>>85	string	-template		Template
842b6cee71dSXin LI!:mime	application/vnd.oasis.opendocument.presentation-template
843b6cee71dSXin LI>>>73	string	spreadsheet
844b6cee71dSXin LI>>>>84	byte	!0x2d			Spreadsheet
845b6cee71dSXin LI!:mime	application/vnd.oasis.opendocument.spreadsheet
846b6cee71dSXin LI>>>>84	string	-template		Template
847b6cee71dSXin LI!:mime	application/vnd.oasis.opendocument.spreadsheet-template
848b6cee71dSXin LI>>>73	string	chart
849b6cee71dSXin LI>>>>78	byte	!0x2d			Chart
850b6cee71dSXin LI!:mime	application/vnd.oasis.opendocument.chart
851b6cee71dSXin LI>>>>78	string	-template		Template
852b6cee71dSXin LI!:mime	application/vnd.oasis.opendocument.chart-template
853b6cee71dSXin LI>>>73	string	formula
854b6cee71dSXin LI>>>>80	byte	!0x2d			Formula
855b6cee71dSXin LI!:mime	application/vnd.oasis.opendocument.formula
856b6cee71dSXin LI>>>>80	string	-template		Template
857b6cee71dSXin LI!:mime	application/vnd.oasis.opendocument.formula-template
858b6cee71dSXin LI>>>73	string	database		Database
859b6cee71dSXin LI!:mime	application/vnd.oasis.opendocument.database
860b6cee71dSXin LI>>>73	string	image
861b6cee71dSXin LI>>>>78	byte	!0x2d			Image
862b6cee71dSXin LI!:mime	application/vnd.oasis.opendocument.image
863b6cee71dSXin LI>>>>78	string	-template		Template
864b6cee71dSXin LI!:mime	application/vnd.oasis.opendocument.image-template
865b6cee71dSXin LI
866b6cee71dSXin LI#  EPUB (OEBPS) books using OCF (OEBPS Container Format)
867b6cee71dSXin LI#    http://www.idpf.org/ocf/ocf1.0/download/ocf10.htm, section 4.
868b6cee71dSXin LI#    From: Ralf Brown <ralf.brown@gmail.com>
869b6cee71dSXin LI>>50	string	epub+zip	EPUB document
870b6cee71dSXin LI!:mime application/epub+zip
871b6cee71dSXin LI
872b6cee71dSXin LI#  Catch other ZIP-with-mimetype formats
873b6cee71dSXin LI#	In a ZIP file, the bytes immediately after a member's contents are
874b6cee71dSXin LI#	always "PK". The 2 regex rules here print the "mimetype" member's
875b6cee71dSXin LI#	contents up to the first 'P'. Luckily, most MIME types don't contain
876b6cee71dSXin LI#	any capital 'P's. This is a kludge.
877b6cee71dSXin LI#    (mimetype contains "application/<OTHER>")
878b6cee71dSXin LI>>50		string	!epub+zip
879b6cee71dSXin LI>>>50		string	!vnd.oasis.opendocument.
880b6cee71dSXin LI>>>>50		string	!vnd.sun.xml.
881b6cee71dSXin LI>>>>>50		string	!vnd.kde.
882b6cee71dSXin LI>>>>>>38	regex	[!-OQ-~]+		Zip data (MIME type "%s"?)
883b6cee71dSXin LI!:mime	application/zip
884b6cee71dSXin LI#    (mimetype contents other than "application/*")
885b6cee71dSXin LI>26		string	\x8\0\0\0mimetype
886b6cee71dSXin LI>>38		string	!application/
887b6cee71dSXin LI>>>38		regex	[!-OQ-~]+		Zip data (MIME type "%s"?)
888b6cee71dSXin LI!:mime	application/zip
889b6cee71dSXin LI
890b6cee71dSXin LI# Java Jar files
891b6cee71dSXin LI>(26.s+30)	leshort	0xcafe		Java archive data (JAR)
892b6cee71dSXin LI!:mime	application/java-archive
893b6cee71dSXin LI
89420f8619dSXin LI# iOS App
89520f8619dSXin LI>(26.s+30)	leshort	!0xcafe
89620f8619dSXin LI>>26		string	!\x8\0\0\0mimetype
89720f8619dSXin LI>>>30		string	Payload/
89820f8619dSXin LI>>>>38		search/64       .app/   iOS App
89920f8619dSXin LI!:mime application/x-ios-app
90020f8619dSXin LI
90120f8619dSXin LI
902b6cee71dSXin LI# Generic zip archives (Greg Roelofs, c/o zip-bugs@wkuvx1.wku.edu)
903b6cee71dSXin LI#   Next line excludes specialized formats:
904b6cee71dSXin LI>(26.s+30)	leshort	!0xcafe
905b6cee71dSXin LI>>26    string          !\x8\0\0\0mimetype	Zip archive data
906b6cee71dSXin LI!:mime	application/zip
907b6cee71dSXin LI>>>4	byte		0x09		\b, at least v0.9 to extract
908b6cee71dSXin LI>>>4	byte		0x0a		\b, at least v1.0 to extract
909b6cee71dSXin LI>>>4	byte		0x0b		\b, at least v1.1 to extract
910b6cee71dSXin LI>>>4	byte		0x14		\b, at least v2.0 to extract
911*40427ccaSGordon Tetlow>>>4	byte		0x15		\b, at least v2.1 to extract
912*40427ccaSGordon Tetlow>>>4	byte		0x19		\b, at least v2.5 to extract
913*40427ccaSGordon Tetlow>>>4	byte		0x1b		\b, at least v2.7 to extract
9145f0216bdSXin LI>>>4	byte		0x2d		\b, at least v4.5 to extract
915*40427ccaSGordon Tetlow>>>4	byte		0x2e		\b, at least v4.6 to extract
916*40427ccaSGordon Tetlow>>>4	byte		0x32		\b, at least v5.0 to extract
917*40427ccaSGordon Tetlow>>>4	byte		0x33		\b, at least v5.1 to extract
918*40427ccaSGordon Tetlow>>>4	byte		0x34		\b, at least v5.2 to extract
919*40427ccaSGordon Tetlow>>>4	byte		0x3d		\b, at least v6.1 to extract
920*40427ccaSGordon Tetlow>>>4	byte		0x3e		\b, at least v6.2 to extract
921*40427ccaSGordon Tetlow>>>4	byte		0x3f		\b, at least v6.3 to extract
922b6cee71dSXin LI>>>0x161	string		WINZIP		\b, WinZIP self-extracting
923b6cee71dSXin LI
924b6cee71dSXin LI# StarView Metafile
925b6cee71dSXin LI# From Pierre Ducroquet <pinaraf@pinaraf.info>
926b6cee71dSXin LI0	string	VCLMTF	StarView MetaFile
927b6cee71dSXin LI>6	beshort	x	\b, version %d
928b6cee71dSXin LI>8	belong	x	\b, size %d
929b6cee71dSXin LI
930b6cee71dSXin LI# Zoo archiver
931b6cee71dSXin LI20	lelong		0xfdc4a7dc	Zoo archive data
932b6cee71dSXin LI!:mime	application/x-zoo
933b6cee71dSXin LI>4	byte		>48		\b, v%c.
934b6cee71dSXin LI>>6	byte		>47		\b%c
935b6cee71dSXin LI>>>7	byte		>47		\b%c
936b6cee71dSXin LI>32	byte		>0		\b, modify: v%d
937b6cee71dSXin LI>>33	byte		x		\b.%d+
938b6cee71dSXin LI>42	lelong		0xfdc4a7dc	\b,
939b6cee71dSXin LI>>70	byte		>0		extract: v%d
940b6cee71dSXin LI>>>71	byte		x		\b.%d+
941b6cee71dSXin LI
942b6cee71dSXin LI# Shell archives
943b6cee71dSXin LI10	string		#\ This\ is\ a\ shell\ archive	shell archive text
944b6cee71dSXin LI!:mime	application/octet-stream
945b6cee71dSXin LI
946b6cee71dSXin LI#
947b6cee71dSXin LI# LBR. NB: May conflict with the questionable
948b6cee71dSXin LI#          "binary Computer Graphics Metafile" format.
949b6cee71dSXin LI#
950b6cee71dSXin LI0       string  \0\ \ \ \ \ \ \ \ \ \ \ \0\0    LBR archive data
951b6cee71dSXin LI#
952b6cee71dSXin LI# PMA (CP/M derivative of LHA)
9533e41d09dSXin LI# Update: Joerg Jenderek
9543e41d09dSXin LI# URL: https://en.wikipedia.org/wiki/LHA_(file_format)
955b6cee71dSXin LI#
9563e41d09dSXin LI#2       string          -pm0-           PMarc archive data [pm0]
9573e41d09dSXin LI2	string		-pm0-
9583e41d09dSXin LI>0	use	lharc-file
9593e41d09dSXin LI#2       string          -pm1-           PMarc archive data [pm1]
9603e41d09dSXin LI2	string		-pm1-
9613e41d09dSXin LI>0	use	lharc-file
9623e41d09dSXin LI#2       string          -pm2-           PMarc archive data [pm2]
9633e41d09dSXin LI2	string		-pm2-
9643e41d09dSXin LI>0	use	lharc-file
965b6cee71dSXin LI2       string          -pms-           PMarc SFX archive (CP/M, DOS)
9663e41d09dSXin LI#!:mime	application/x-foobar-exec
9673e41d09dSXin LI!:ext com
968b6cee71dSXin LI5       string          -pc1-           PopCom compressed executable (CP/M)
9693e41d09dSXin LI#!:mime	application/x-
9703e41d09dSXin LI#!:ext com
971b6cee71dSXin LI
972b6cee71dSXin LI# From Rafael Laboissiere <rafael@laboissiere.net>
973b6cee71dSXin LI# The Project Revision Control System (see
974b6cee71dSXin LI# http://prcs.sourceforge.net) generates a packaged project
975b6cee71dSXin LI# file which is recognized by the following entry:
976b6cee71dSXin LI0	leshort		0xeb81	PRCS packaged project
977b6cee71dSXin LI
978b6cee71dSXin LI# Microsoft cabinets
979b6cee71dSXin LI# by David Necas (Yeti) <yeti@physics.muni.cz>
980b6cee71dSXin LI#0	string	MSCF\0\0\0\0	Microsoft cabinet file data,
981b6cee71dSXin LI#>25	byte	x		v%d
982b6cee71dSXin LI#>24	byte	x		\b.%d
983b6cee71dSXin LI# MPi: All CABs have version 1.3, so this is pointless.
984b6cee71dSXin LI# Better magic in debian-additions.
985b6cee71dSXin LI
986b6cee71dSXin LI# GTKtalog catalogs
987b6cee71dSXin LI# by David Necas (Yeti) <yeti@physics.muni.cz>
988b6cee71dSXin LI4	string	gtktalog\ 	GTKtalog catalog data,
989b6cee71dSXin LI>13	string	3		version 3
990b6cee71dSXin LI>>14	beshort	0x677a		(gzipped)
991b6cee71dSXin LI>>14	beshort	!0x677a		(not gzipped)
992b6cee71dSXin LI>13	string	>3		version %s
993b6cee71dSXin LI
994b6cee71dSXin LI############################################################################
995b6cee71dSXin LI# Parity archive reconstruction file, the 'par' file format now used on Usenet.
996b6cee71dSXin LI0       string          PAR\0	PARity archive data
997b6cee71dSXin LI>48	leshort		=0	- Index file
998b6cee71dSXin LI>48	leshort		>0	- file number %d
999b6cee71dSXin LI
1000b6cee71dSXin LI# Felix von Leitner <felix-file@fefe.de>
1001b6cee71dSXin LI0	string	d8:announce	BitTorrent file
1002b6cee71dSXin LI!:mime	application/x-bittorrent
10033e41d09dSXin LI# Durval Menezes, <jmgthbfile at durval dot com>
10043e41d09dSXin LI0	string	d13:announce-list	BitTorrent file
10053e41d09dSXin LI!:mime	application/x-bittorrent
1006b6cee71dSXin LI
1007b6cee71dSXin LI# Atari MSA archive - Teemu Hukkanen <tjhukkan@iki.fi>
1008b6cee71dSXin LI0	beshort 0x0e0f		Atari MSA archive data
1009b6cee71dSXin LI>2	beshort x		\b, %d sectors per track
1010b6cee71dSXin LI>4	beshort 0		\b, 1 sided
1011b6cee71dSXin LI>4	beshort 1		\b, 2 sided
1012b6cee71dSXin LI>6	beshort x		\b, starting track: %d
1013b6cee71dSXin LI>8	beshort x		\b, ending track: %d
1014b6cee71dSXin LI
1015b6cee71dSXin LI# Alternate ZIP string (amc@arwen.cs.berkeley.edu)
1016b6cee71dSXin LI0	string	PK00PK\003\004	Zip archive data
1017b6cee71dSXin LI
1018b6cee71dSXin LI# ACE archive (from http://www.wotsit.org/download.asp?f=ace)
1019b6cee71dSXin LI# by Stefan `Sec` Zehl <sec@42.org>
1020b6cee71dSXin LI7	string		**ACE**		ACE archive data
1021b6cee71dSXin LI>15	byte	>0		version %d
1022b6cee71dSXin LI>16	byte	=0x00		\b, from MS-DOS
1023b6cee71dSXin LI>16	byte	=0x01		\b, from OS/2
1024b6cee71dSXin LI>16	byte	=0x02		\b, from Win/32
1025b6cee71dSXin LI>16	byte	=0x03		\b, from Unix
1026b6cee71dSXin LI>16	byte	=0x04		\b, from MacOS
1027b6cee71dSXin LI>16	byte	=0x05		\b, from WinNT
1028b6cee71dSXin LI>16	byte	=0x06		\b, from Primos
1029b6cee71dSXin LI>16	byte	=0x07		\b, from AppleGS
1030b6cee71dSXin LI>16	byte	=0x08		\b, from Atari
1031b6cee71dSXin LI>16	byte	=0x09		\b, from Vax/VMS
1032b6cee71dSXin LI>16	byte	=0x0A		\b, from Amiga
1033b6cee71dSXin LI>16	byte	=0x0B		\b, from Next
1034b6cee71dSXin LI>14	byte	x		\b, version %d to extract
1035b6cee71dSXin LI>5	leshort &0x0080		\b, multiple volumes,
1036b6cee71dSXin LI>>17	byte	x		\b (part %d),
1037b6cee71dSXin LI>5	leshort &0x0002		\b, contains comment
1038b6cee71dSXin LI>5	leshort	&0x0200		\b, sfx
1039b6cee71dSXin LI>5	leshort	&0x0400		\b, small dictionary
1040b6cee71dSXin LI>5	leshort	&0x0800		\b, multi-volume
1041b6cee71dSXin LI>5	leshort	&0x1000		\b, contains AV-String
1042b6cee71dSXin LI>>30	string	\x16*UNREGISTERED\x20VERSION*	(unregistered)
1043b6cee71dSXin LI>5	leshort &0x2000		\b, with recovery record
1044b6cee71dSXin LI>5	leshort &0x4000		\b, locked
1045b6cee71dSXin LI>5	leshort &0x8000		\b, solid
1046b6cee71dSXin LI# Date in MS-DOS format (whatever that is)
1047b6cee71dSXin LI#>18	lelong	x		Created on
1048b6cee71dSXin LI
1049b6cee71dSXin LI# sfArk : compression program for Soundfonts (sf2) by Dirk Jagdmann
1050b6cee71dSXin LI# <doj@cubic.org>
1051b6cee71dSXin LI0x1A	string	sfArk		sfArk compressed Soundfont
1052b6cee71dSXin LI>0x15	string	2
1053b6cee71dSXin LI>>0x1	string	>\0		Version %s
1054b6cee71dSXin LI>>0x2A	string	>\0		: %s
1055b6cee71dSXin LI
1056b6cee71dSXin LI# DR-DOS 7.03 Packed File *.??_
1057b6cee71dSXin LI0	string	Packed\ File\ 	Personal NetWare Packed File
1058b6cee71dSXin LI>12	string	x		\b, was "%.12s"
1059b6cee71dSXin LI
1060b6cee71dSXin LI# EET archive
1061b6cee71dSXin LI# From: Tilman Sauerbeck <tilman@code-monkey.de>
1062b6cee71dSXin LI0	belong	0x1ee7ff00	EET archive
1063b6cee71dSXin LI!:mime	application/x-eet
1064b6cee71dSXin LI
1065b6cee71dSXin LI# rzip archives
1066b6cee71dSXin LI0	string	RZIP		rzip compressed data
1067b6cee71dSXin LI>4	byte	x		- version %d
1068b6cee71dSXin LI>5	byte	x		\b.%d
1069b6cee71dSXin LI>6	belong	x		(%d bytes)
1070b6cee71dSXin LI
1071b6cee71dSXin LI# From: "Robert Dale" <robdale@gmail.com>
1072b6cee71dSXin LI0	belong	123		dar archive,
1073b6cee71dSXin LI>4	belong	x		label "%.8x
1074b6cee71dSXin LI>>8	belong	x		%.8x
1075b6cee71dSXin LI>>>12	beshort	x		%.4x"
1076b6cee71dSXin LI>14	byte	0x54		end slice
1077b6cee71dSXin LI>14	beshort	0x4e4e		multi-part
1078b6cee71dSXin LI>14	beshort	0x4e53		multi-part, with -S
1079b6cee71dSXin LI
1080b6cee71dSXin LI# Symbian installation files
1081b6cee71dSXin LI#  http://www.thouky.co.uk/software/psifs/sis.html
1082b6cee71dSXin LI#  http://developer.symbian.com/main/downloads/papers/SymbianOSv91/softwareinstallsis.pdf
1083b6cee71dSXin LI8	lelong	0x10000419	Symbian installation file
1084b6cee71dSXin LI!:mime	application/vnd.symbian.install
1085b6cee71dSXin LI>4	lelong	0x1000006D	(EPOC release 3/4/5)
1086b6cee71dSXin LI>4	lelong	0x10003A12	(EPOC release 6)
1087b6cee71dSXin LI0	lelong	0x10201A7A	Symbian installation file (Symbian OS 9.x)
1088b6cee71dSXin LI!:mime	x-epoc/x-sisx-app
1089b6cee71dSXin LI
1090b6cee71dSXin LI# From "Nelson A. de Oliveira" <naoliv@gmail.com>
1091b6cee71dSXin LI0	string	MPQ\032		MoPaQ (MPQ) archive
1092b6cee71dSXin LI
1093b6cee71dSXin LI# From: "Nelson A. de Oliveira" <naoliv@gmail.com>
1094b6cee71dSXin LI# .kgb
1095b6cee71dSXin LI0	string KGB_arch		KGB Archiver file
1096b6cee71dSXin LI>10	string x		with compression level %.1s
1097b6cee71dSXin LI
1098b6cee71dSXin LI# xar (eXtensible ARchiver) archive
10993e41d09dSXin LI# xar archive format: http://code.google.com/p/xar/
1100b6cee71dSXin LI# From: "David Remahl" <dremahl@apple.com>
1101b6cee71dSXin LI0	string	xar!		xar archive
11023e41d09dSXin LI!:mime	application/x-xar
1103b6cee71dSXin LI#>4	beshort	x		header size %d
1104b6cee71dSXin LI>6	beshort	x		version %d,
1105b6cee71dSXin LI#>8	quad	x		compressed TOC: %d,
1106b6cee71dSXin LI#>16	quad	x		uncompressed TOC: %d,
1107b6cee71dSXin LI>24	belong	0		no checksum
1108b6cee71dSXin LI>24	belong	1		SHA-1 checksum
1109b6cee71dSXin LI>24	belong	2		MD5 checksum
1110b6cee71dSXin LI
1111b6cee71dSXin LI# Type: Parity Archive
1112b6cee71dSXin LI# From: Daniel van Eeden <daniel_e@dds.nl>
1113b6cee71dSXin LI0	string	PAR2		Parity Archive Volume Set
1114b6cee71dSXin LI
1115b6cee71dSXin LI# Bacula volume format. (Volumes always start with a block header.)
1116b6cee71dSXin LI# URL: http://bacula.org/3.0.x-manuals/en/developers/developers/Block_Header.html
1117b6cee71dSXin LI# From: Adam Buchbinder <adam.buchbinder@gmail.com>
1118b6cee71dSXin LI12	string	BB02		Bacula volume
1119b6cee71dSXin LI>20	bedate	x		\b, started %s
1120b6cee71dSXin LI
1121b6cee71dSXin LI# ePub is XHTML + XML inside a ZIP archive.  The first member of the
1122b6cee71dSXin LI#   archive must be an uncompressed file called 'mimetype' with contents
1123b6cee71dSXin LI#   'application/epub+zip'
1124b6cee71dSXin LI
1125b6cee71dSXin LI
1126b6cee71dSXin LI# From: "Michael Gorny" <mgorny@gentoo.org>
1127b6cee71dSXin LI# ZPAQ: http://mattmahoney.net/dc/zpaq.html
1128b6cee71dSXin LI0	string	zPQ	ZPAQ stream
1129b6cee71dSXin LI>3	byte	x	\b, level %d
11305f0216bdSXin LI# From: Barry Carter <carter.barry@gmail.com>
11315f0216bdSXin LI# http://encode.ru/threads/456-zpaq-updates/page32
11325f0216bdSXin LI0	string	7kSt	ZPAQ file
1133b6cee71dSXin LI
1134b6cee71dSXin LI# BBeB ebook, unencrypted (LRF format)
1135b6cee71dSXin LI# URL: http://www.sven.de/librie/Librie/LrfFormat
1136b6cee71dSXin LI# From: Adam Buchbinder <adam.buchbinder@gmail.com>
1137b6cee71dSXin LI0	string	L\0R\0F\0\0\0	BBeB ebook data, unencrypted
1138b6cee71dSXin LI>8	beshort	x		\b, version %d
1139b6cee71dSXin LI>36	byte	1		\b, front-to-back
1140b6cee71dSXin LI>36	byte	16		\b, back-to-front
1141b6cee71dSXin LI>42	beshort	x		\b, (%dx,
1142b6cee71dSXin LI>44	beshort	x		%d)
1143b6cee71dSXin LI
1144b6cee71dSXin LI# Symantec GHOST image by Joerg Jenderek at May 2014
1145b6cee71dSXin LI# http://us.norton.com/ghost/
1146b6cee71dSXin LI# http://www.garykessler.net/library/file_sigs.html
1147b6cee71dSXin LI0		ubelong&0xFFFFf7f0	0xFEEF0100	Norton GHost image
1148b6cee71dSXin LI# *.GHO
1149b6cee71dSXin LI>2		ubyte&0x08		0x00		\b, first file
1150b6cee71dSXin LI# *.GHS or *.[0-9] with cns program option
1151b6cee71dSXin LI>2		ubyte&0x08		0x08		\b, split file
1152b6cee71dSXin LI# part of split index interesting for *.ghs
1153b6cee71dSXin LI>>4		ubyte			x		id=0x%x
1154b6cee71dSXin LI# compression tag minus one equals numeric compression command line switch z[1-9]
1155b6cee71dSXin LI>3		ubyte			0		\b, no compression
1156b6cee71dSXin LI>3		ubyte			2		\b, fast compression (Z1)
1157b6cee71dSXin LI>3		ubyte			3		\b, medium compression (Z2)
1158b6cee71dSXin LI>3		ubyte			>3
1159b6cee71dSXin LI>>3		ubyte			<11		\b, compression (Z%d-1)
1160b6cee71dSXin LI>2		ubyte&0x08		0x00
1161b6cee71dSXin LI# ~ 30 byte password field only for *.gho
1162b6cee71dSXin LI>>12		ubequad			!0		\b, password protected
1163b6cee71dSXin LI>>44		ubyte			!1
1164b6cee71dSXin LI# 1~Image All, sector-by-sector only for *.gho
1165b6cee71dSXin LI>>>10		ubyte			1		\b, sector copy
1166b6cee71dSXin LI# 1~Image Boot track only for *.gho
1167b6cee71dSXin LI>>>43		ubyte			1		\b, boot track
1168b6cee71dSXin LI# 1~Image Disc only for *.gho implies Image Boot track and sector copy
1169b6cee71dSXin LI>>44		ubyte			1		\b, disc sector copy
1170b6cee71dSXin LI# optional image description only *.gho
1171b6cee71dSXin LI>>0xff		string			>\0		"%-.254s"
1172b6cee71dSXin LI# look for DOS sector end sequence
1173b6cee71dSXin LI>0xE08	search/7776		\x55\xAA
1174b6cee71dSXin LI>>&-512	indirect		x		\b; contains
1175b6cee71dSXin LI
11763e41d09dSXin LI# Google Chrome extensions
11773e41d09dSXin LI# https://developer.chrome.com/extensions/crx
11783e41d09dSXin LI# https://developer.chrome.com/extensions/hosting
11793e41d09dSXin LI0	string	Cr24	Google Chrome extension
11803e41d09dSXin LI!:mime	application/x-chrome-extension
11813e41d09dSXin LI>4	ulong	x	\b, version %u
1182*40427ccaSGordon Tetlow
1183*40427ccaSGordon Tetlow# SeqBox - Sequenced container
1184*40427ccaSGordon Tetlow# ext: sbx, seqbox
1185*40427ccaSGordon Tetlow# Marco Pontello marcopon@gmail.com
1186*40427ccaSGordon Tetlow# reference: https://github.com/MarcoPon/SeqBox
1187*40427ccaSGordon Tetlow0	string	SBx	SeqBox,
1188*40427ccaSGordon Tetlow>3	byte	x	version %d
1189