xref: /freebsd/contrib/file/magic/Magdir/database (revision b6cee71de37d56e36dbc118e2d9b03e7cece5709)
1*b6cee71dSXin LI
2*b6cee71dSXin LI#------------------------------------------------------------------------------
3*b6cee71dSXin LI# $File: database,v 1.41 2014/06/03 19:17:27 christos Exp $
4*b6cee71dSXin LI# database:  file(1) magic for various databases
5*b6cee71dSXin LI#
6*b6cee71dSXin LI# extracted from header/code files by Graeme Wilford (eep2gw@ee.surrey.ac.uk)
7*b6cee71dSXin LI#
8*b6cee71dSXin LI#
9*b6cee71dSXin LI# GDBM magic numbers
10*b6cee71dSXin LI#  Will be maintained as part of the GDBM distribution in the future.
11*b6cee71dSXin LI#  <downsj@teeny.org>
12*b6cee71dSXin LI0	belong	0x13579ace	GNU dbm 1.x or ndbm database, big endian
13*b6cee71dSXin LI!:mime	application/x-gdbm
14*b6cee71dSXin LI0	lelong	0x13579ace	GNU dbm 1.x or ndbm database, little endian
15*b6cee71dSXin LI!:mime	application/x-gdbm
16*b6cee71dSXin LI0	string	GDBM		GNU dbm 2.x database
17*b6cee71dSXin LI!:mime	application/x-gdbm
18*b6cee71dSXin LI#
19*b6cee71dSXin LI# Berkeley DB
20*b6cee71dSXin LI#
21*b6cee71dSXin LI# Ian Darwin's file /etc/magic files: big/little-endian version.
22*b6cee71dSXin LI#
23*b6cee71dSXin LI# Hash 1.85/1.86 databases store metadata in network byte order.
24*b6cee71dSXin LI# Btree 1.85/1.86 databases store the metadata in host byte order.
25*b6cee71dSXin LI# Hash and Btree 2.X and later databases store the metadata in host byte order.
26*b6cee71dSXin LI
27*b6cee71dSXin LI0	long	0x00061561	Berkeley DB
28*b6cee71dSXin LI!:mime	application/x-dbm
29*b6cee71dSXin LI>8	belong	4321
30*b6cee71dSXin LI>>4	belong	>2		1.86
31*b6cee71dSXin LI>>4	belong	<3		1.85
32*b6cee71dSXin LI>>4	belong	>0		(Hash, version %d, native byte-order)
33*b6cee71dSXin LI>8	belong	1234
34*b6cee71dSXin LI>>4	belong	>2		1.86
35*b6cee71dSXin LI>>4	belong	<3		1.85
36*b6cee71dSXin LI>>4	belong	>0		(Hash, version %d, little-endian)
37*b6cee71dSXin LI
38*b6cee71dSXin LI0	belong	0x00061561	Berkeley DB
39*b6cee71dSXin LI>8	belong	4321
40*b6cee71dSXin LI>>4	belong	>2		1.86
41*b6cee71dSXin LI>>4	belong	<3		1.85
42*b6cee71dSXin LI>>4	belong	>0		(Hash, version %d, big-endian)
43*b6cee71dSXin LI>8	belong	1234
44*b6cee71dSXin LI>>4	belong	>2		1.86
45*b6cee71dSXin LI>>4	belong	<3		1.85
46*b6cee71dSXin LI>>4	belong	>0		(Hash, version %d, native byte-order)
47*b6cee71dSXin LI
48*b6cee71dSXin LI0	long	0x00053162	Berkeley DB 1.85/1.86
49*b6cee71dSXin LI>4	long	>0		(Btree, version %d, native byte-order)
50*b6cee71dSXin LI0	belong	0x00053162	Berkeley DB 1.85/1.86
51*b6cee71dSXin LI>4	belong	>0		(Btree, version %d, big-endian)
52*b6cee71dSXin LI0	lelong	0x00053162	Berkeley DB 1.85/1.86
53*b6cee71dSXin LI>4	lelong	>0		(Btree, version %d, little-endian)
54*b6cee71dSXin LI
55*b6cee71dSXin LI12	long	0x00061561	Berkeley DB
56*b6cee71dSXin LI>16	long	>0		(Hash, version %d, native byte-order)
57*b6cee71dSXin LI12	belong	0x00061561	Berkeley DB
58*b6cee71dSXin LI>16	belong	>0		(Hash, version %d, big-endian)
59*b6cee71dSXin LI12	lelong	0x00061561	Berkeley DB
60*b6cee71dSXin LI>16	lelong	>0		(Hash, version %d, little-endian)
61*b6cee71dSXin LI
62*b6cee71dSXin LI12	long	0x00053162	Berkeley DB
63*b6cee71dSXin LI>16	long	>0		(Btree, version %d, native byte-order)
64*b6cee71dSXin LI12	belong	0x00053162	Berkeley DB
65*b6cee71dSXin LI>16	belong	>0		(Btree, version %d, big-endian)
66*b6cee71dSXin LI12	lelong	0x00053162	Berkeley DB
67*b6cee71dSXin LI>16	lelong	>0		(Btree, version %d, little-endian)
68*b6cee71dSXin LI
69*b6cee71dSXin LI12	long	0x00042253	Berkeley DB
70*b6cee71dSXin LI>16	long	>0		(Queue, version %d, native byte-order)
71*b6cee71dSXin LI12	belong	0x00042253	Berkeley DB
72*b6cee71dSXin LI>16	belong	>0		(Queue, version %d, big-endian)
73*b6cee71dSXin LI12	lelong	0x00042253	Berkeley DB
74*b6cee71dSXin LI>16	lelong	>0		(Queue, version %d, little-endian)
75*b6cee71dSXin LI
76*b6cee71dSXin LI# From Max Bowsher.
77*b6cee71dSXin LI12	long	0x00040988	Berkeley DB
78*b6cee71dSXin LI>16	long	>0		(Log, version %d, native byte-order)
79*b6cee71dSXin LI12	belong	0x00040988	Berkeley DB
80*b6cee71dSXin LI>16	belong	>0		(Log, version %d, big-endian)
81*b6cee71dSXin LI12	lelong	0x00040988	Berkeley DB
82*b6cee71dSXin LI>16	lelong	>0		(Log, version %d, little-endian)
83*b6cee71dSXin LI
84*b6cee71dSXin LI#
85*b6cee71dSXin LI#
86*b6cee71dSXin LI# Round Robin Database Tool by Tobias Oetiker <oetiker@ee.ethz.ch>
87*b6cee71dSXin LI0	string/b	RRD\0		RRDTool DB
88*b6cee71dSXin LI>4	string/b	x		version %s
89*b6cee71dSXin LI
90*b6cee71dSXin LI>>10	short		!0		16bit aligned
91*b6cee71dSXin LI>>>10	bedouble	8.642135e+130	big-endian
92*b6cee71dSXin LI>>>>18	short		x		32bit long (m68k)
93*b6cee71dSXin LI
94*b6cee71dSXin LI>>10	short		0
95*b6cee71dSXin LI>>>12	long		!0		32bit aligned
96*b6cee71dSXin LI>>>>12	bedouble	8.642135e+130	big-endian
97*b6cee71dSXin LI>>>>>20 long		0		64bit long
98*b6cee71dSXin LI>>>>>20 long		!0		32bit long
99*b6cee71dSXin LI>>>>12	ledouble	8.642135e+130	little-endian
100*b6cee71dSXin LI>>>>>24 long		0		64bit long
101*b6cee71dSXin LI>>>>>24 long		!0		32bit long (i386)
102*b6cee71dSXin LI>>>>12	string		\x43\x2b\x1f\x5b\x2f\x25\xc0\xc7	middle-endian
103*b6cee71dSXin LI>>>>>24 short		!0		32bit long (arm)
104*b6cee71dSXin LI
105*b6cee71dSXin LI>>8	quad		0		64bit aligned
106*b6cee71dSXin LI>>>16	bedouble	8.642135e+130	big-endian
107*b6cee71dSXin LI>>>>24	long		0		64bit long (s390x)
108*b6cee71dSXin LI>>>>24	long		!0		32bit long (hppa/mips/ppc/s390/SPARC)
109*b6cee71dSXin LI>>>16	ledouble	8.642135e+130	little-endian
110*b6cee71dSXin LI>>>>28	long		0		64bit long (alpha/amd64/ia64)
111*b6cee71dSXin LI>>>>28	long		!0		32bit long (armel/mipsel)
112*b6cee71dSXin LI
113*b6cee71dSXin LI#----------------------------------------------------------------------
114*b6cee71dSXin LI# ROOT: file(1) magic for ROOT databases
115*b6cee71dSXin LI#
116*b6cee71dSXin LI0       string  root\0  ROOT file
117*b6cee71dSXin LI>4      belong  x       Version %d
118*b6cee71dSXin LI>33     belong  x       (Compression: %d)
119*b6cee71dSXin LI
120*b6cee71dSXin LI# XXX: Weak magic.
121*b6cee71dSXin LI# Alex Ott <ott@jet.msk.su>
122*b6cee71dSXin LI## Paradox file formats
123*b6cee71dSXin LI#2	  leshort	0x0800	Paradox
124*b6cee71dSXin LI#>0x39	  byte		3	v. 3.0
125*b6cee71dSXin LI#>0x39	  byte		4	v. 3.5
126*b6cee71dSXin LI#>0x39	  byte		9	v. 4.x
127*b6cee71dSXin LI#>0x39	  byte		10	v. 5.x
128*b6cee71dSXin LI#>0x39	  byte		11	v. 5.x
129*b6cee71dSXin LI#>0x39	  byte		12	v. 7.x
130*b6cee71dSXin LI#>>0x04	  byte		0	indexed .DB data file
131*b6cee71dSXin LI#>>0x04	  byte		1	primary index .PX file
132*b6cee71dSXin LI#>>0x04	  byte		2	non-indexed .DB data file
133*b6cee71dSXin LI#>>0x04	  byte		3	non-incrementing secondary index .Xnn file
134*b6cee71dSXin LI#>>0x04	  byte		4	secondary index .Ynn file
135*b6cee71dSXin LI#>>0x04	  byte		5	incrementing secondary index .Xnn file
136*b6cee71dSXin LI#>>0x04	  byte		6	non-incrementing secondary index .XGn file
137*b6cee71dSXin LI#>>0x04	  byte		7	secondary index .YGn file
138*b6cee71dSXin LI#>>>0x04	  byte		8	incrementing secondary index .XGn file
139*b6cee71dSXin LI
140*b6cee71dSXin LI## XBase database files
141*b6cee71dSXin LI# updated by Joerg Jenderek at Feb 2013
142*b6cee71dSXin LI# http://www.dbase.com/Knowledgebase/INT/db7_file_fmt.htm
143*b6cee71dSXin LI# http://www.clicketyclick.dk/databases/xbase/format/dbf.html
144*b6cee71dSXin LI# http://home.f1.htw-berlin.de/scheibl/db/intern/dBase.htm
145*b6cee71dSXin LI# inspect VVYYMMDD , where 1<= MM <= 12 and 1<= DD <= 31
146*b6cee71dSXin LI0	ubelong&0x0000FFFF		<0x00000C20
147*b6cee71dSXin LI# skip Infocom game Z-machine
148*b6cee71dSXin LI>2		ubyte			>0
149*b6cee71dSXin LI# skip Androids *.xml
150*b6cee71dSXin LI>>3		ubyte			>0
151*b6cee71dSXin LI>>>3		ubyte			<32
152*b6cee71dSXin LI# 1 < version VV
153*b6cee71dSXin LI>>>>0		ubyte			>1
154*b6cee71dSXin LI# skip HELP.CA3 by test for reserved byte ( NULL )
155*b6cee71dSXin LI>>>>>27		ubyte			0
156*b6cee71dSXin LI# reserved bytes not always 0 ; also found 0x3901 (T4.DBF) ,0x7101 (T5.DBF,T6.DBF)
157*b6cee71dSXin LI#>>>>>30		ubeshort     		x		30NULL?%x
158*b6cee71dSXin LI# possible production flag,tag numbers(<=0x30),tag length(<=0x20), reserved (NULL)
159*b6cee71dSXin LI>>>>>>24	ubelong&0xffFFFFff	>0x01302000
160*b6cee71dSXin LI# .DBF or .MDX
161*b6cee71dSXin LI>>>>>>24	ubelong&0xffFFFFff	<0x01302001
162*b6cee71dSXin LI# for Xbase Database file (*.DBF) reserved (NULL) for multi-user
163*b6cee71dSXin LI>>>>>>>24	ubelong&0xffFFFFff	=0
164*b6cee71dSXin LI# test for 2 reserved NULL bytes,transaction and encryption byte flag
165*b6cee71dSXin LI>>>>>>>>12	ubelong&0xFFFFfEfE	0
166*b6cee71dSXin LI# test for MDX flag
167*b6cee71dSXin LI>>>>>>>>>28	ubyte			x
168*b6cee71dSXin LI>>>>>>>>>28	ubyte&0xf8		0
169*b6cee71dSXin LI# header size >= 32
170*b6cee71dSXin LI>>>>>>>>>>8	uleshort		>31
171*b6cee71dSXin LI# skip PIC15736.PCX by test for language driver name or field name
172*b6cee71dSXin LI>>>>>>>>>>>32	ubyte			>0
173*b6cee71dSXin LI#!:mime	application/x-dbf; charset=unknown-8bit ??
174*b6cee71dSXin LI#!:mime	application/x-dbase
175*b6cee71dSXin LI>>>>>>>>>>>>0	use			xbase-type
176*b6cee71dSXin LI# database file
177*b6cee71dSXin LI>>>>>>>>>>>>0	ubyte			x		\b DBF
178*b6cee71dSXin LI>>>>>>>>>>>>4	lelong			0		\b, no records
179*b6cee71dSXin LI>>>>>>>>>>>>4	lelong			>0		\b, %d record
180*b6cee71dSXin LI# plural s appended
181*b6cee71dSXin LI>>>>>>>>>>>>>4	lelong			>1		\bs
182*b6cee71dSXin LI# http://www.clicketyclick.dk/databases/xbase/format/dbf_check.html#CHECK_DBF
183*b6cee71dSXin LI# 1 <= record size <= 4000 (dBase 3,4) or 32 * KB (=0x8000)
184*b6cee71dSXin LI>>>>>>>>>>>>10	uleshort		x		* %d
185*b6cee71dSXin LI# file size = records * record size + header size
186*b6cee71dSXin LI>>>>>>>>>>>>1	ubyte			x		\b, update-date
187*b6cee71dSXin LI>>>>>>>>>>>>1	use			xbase-date
188*b6cee71dSXin LI# http://msdn.microsoft.com/de-de/library/cc483186(v=vs.71).aspx
189*b6cee71dSXin LI#>>>>>>>>>>>>29	ubyte			=0		\b, codepage ID=0x%x
190*b6cee71dSXin LI# 2~cp850 , 3~cp1252 , 0x1b~?? ; what code page is 0x1b ?
191*b6cee71dSXin LI>>>>>>>>>>>>29	ubyte			>0		\b, codepage ID=0x%x
192*b6cee71dSXin LI#>>>>>>>>>>>>28	ubyte&0x01		0		\b, no index file
193*b6cee71dSXin LI>>>>>>>>>>>>28	ubyte&0x01		1		\b, with index file .MDX
194*b6cee71dSXin LI>>>>>>>>>>>>28	ubyte&0x02		2		\b, with memo .FPT
195*b6cee71dSXin LI>>>>>>>>>>>>28	ubyte&0x04		4		\b, DataBaseContainer
196*b6cee71dSXin LI# 1st record offset + 1 = header size
197*b6cee71dSXin LI>>>>>>>>>>>>8	uleshort		>0
198*b6cee71dSXin LI>>>>>>>>>>>>(8.s+1)	ubyte		>0
199*b6cee71dSXin LI>>>>>>>>>>>>>8		uleshort	>0		\b, at offset %d
200*b6cee71dSXin LI>>>>>>>>>>>>>(8.s+1)	ubyte		>0
201*b6cee71dSXin LI>>>>>>>>>>>>>>&-1	string		>\0		1st record "%s"
202*b6cee71dSXin LI# for multiple index files (*.MDX) Production flag,tag numbers(<=0x30),tag length(<=0x20), reserverd (NULL)
203*b6cee71dSXin LI>>>>>>>24	ubelong&0x0133f7ff	>0
204*b6cee71dSXin LI# test for reserved NULL byte
205*b6cee71dSXin LI>>>>>>>>47	ubyte			x
206*b6cee71dSXin LI# test for valid TAG key format (0x10 or 0)
207*b6cee71dSXin LI>>>>>>>>>559	ubyte&0xeF		0
208*b6cee71dSXin LI# test MM <= 12
209*b6cee71dSXin LI>>>>>>>>>45	ubeshort		<0x0C20
210*b6cee71dSXin LI>>>>>>>>>>45	ubyte			>0
211*b6cee71dSXin LI>>>>>>>>>>>46	ubyte			<32
212*b6cee71dSXin LI>>>>>>>>>>>>46	ubyte			>0
213*b6cee71dSXin LI#!:mime	application/x-mdx
214*b6cee71dSXin LI>>>>>>>>>>>>>0	use			xbase-type
215*b6cee71dSXin LI>>>>>>>>>>>>>0	ubyte			x		\b MDX
216*b6cee71dSXin LI>>>>>>>>>>>>>1	ubyte			x		\b, creation-date
217*b6cee71dSXin LI>>>>>>>>>>>>>1	use			xbase-date
218*b6cee71dSXin LI>>>>>>>>>>>>>44	ubyte			x		\b, update-date
219*b6cee71dSXin LI>>>>>>>>>>>>>44	use			xbase-date
220*b6cee71dSXin LI# No.of tags in use (1,2,5,12)
221*b6cee71dSXin LI>>>>>>>>>>>>>28	uleshort		x		\b, %d
222*b6cee71dSXin LI# No. of entries in tag (0x30)
223*b6cee71dSXin LI>>>>>>>>>>>>>25	ubyte			x		\b/%d tags
224*b6cee71dSXin LI#  Length of tag
225*b6cee71dSXin LI>>>>>>>>>>>>>26	ubyte			x		* %d
226*b6cee71dSXin LI# 1st tag name_
227*b6cee71dSXin LI>>>>>>>>>>>>>548	string		x		\b, 1st tag "%.11s"
228*b6cee71dSXin LI# 2nd tag name
229*b6cee71dSXin LI#>>>>>>>>>>>>(26.b+548)	string		x		\b, 2nd tag "%.11s"
230*b6cee71dSXin LI#
231*b6cee71dSXin LI#		Print the xBase names of different version variants
232*b6cee71dSXin LI0	name				xbase-type
233*b6cee71dSXin LI>0	ubyte		<2
234*b6cee71dSXin LI# 1 < version
235*b6cee71dSXin LI>0	ubyte		>1
236*b6cee71dSXin LI>>0	ubyte		0x02		FoxBase
237*b6cee71dSXin LI# FoxBase+/dBaseIII+, no memo
238*b6cee71dSXin LI>>0	ubyte		0x03		FoxBase+/dBase III
239*b6cee71dSXin LI!:mime	application/x-dbf
240*b6cee71dSXin LI# dBASE IV no memo file
241*b6cee71dSXin LI>>0	ubyte		0x04		dBase IV
242*b6cee71dSXin LI!:mime	application/x-dbf
243*b6cee71dSXin LI# dBASE V no memo file
244*b6cee71dSXin LI>>0	ubyte		0x05		dBase V
245*b6cee71dSXin LI!:mime	application/x-dbf
246*b6cee71dSXin LI>>0	ubyte		0x30		Visual FoxPro
247*b6cee71dSXin LI!:mime	application/x-dbf
248*b6cee71dSXin LI>>0	ubyte		0x31		Visual FoxPro, autoincrement
249*b6cee71dSXin LI!:mime	application/x-dbf
250*b6cee71dSXin LI# Visual FoxPro, with field type Varchar or Varbinary
251*b6cee71dSXin LI>>0	ubyte		0x32		Visual FoxPro, with field type Varchar
252*b6cee71dSXin LI!:mime	application/x-dbf
253*b6cee71dSXin LI# dBASE IV SQL, no memo;dbv memo var size (Flagship)
254*b6cee71dSXin LI>>0	ubyte		0x43		dBase IV, with SQL table
255*b6cee71dSXin LI!:mime	application/x-dbf
256*b6cee71dSXin LI# http://msdn.microsoft.com/en-US/library/st4a0s68(v=vs.80).aspx
257*b6cee71dSXin LI#>>0	ubyte		0x62		dBase IV, with SQL table
258*b6cee71dSXin LI#!:mime	application/x-dbf
259*b6cee71dSXin LI# dBASE IV, with memo!!
260*b6cee71dSXin LI>>0	ubyte		0x7b		dBase IV, with memo
261*b6cee71dSXin LI!:mime	application/x-dbf
262*b6cee71dSXin LI# http://msdn.microsoft.com/en-US/library/st4a0s68(v=vs.80).aspx
263*b6cee71dSXin LI#>>0	ubyte		0x82		dBase IV, with SQL system
264*b6cee71dSXin LI#!:mime	application/x-dbf
265*b6cee71dSXin LI# FoxBase+/dBaseIII+ with memo .DBT!
266*b6cee71dSXin LI>>0	ubyte		0x83		FoxBase+/dBase III, with memo .DBT
267*b6cee71dSXin LI!:mime	application/x-dbf
268*b6cee71dSXin LI# VISUAL OBJECTS (first 1.0 versions) for the Dbase III files (NTX clipper driver); memo file
269*b6cee71dSXin LI>>0	ubyte		0x87		VISUAL OBJECTS, with memo file
270*b6cee71dSXin LI!:mime	application/x-dbf
271*b6cee71dSXin LI# http://msdn.microsoft.com/en-US/library/st4a0s68(v=vs.80).aspx
272*b6cee71dSXin LI#>>0	ubyte		0x8A		FoxBase+/dBase III, with memo .DBT
273*b6cee71dSXin LI#!:mime	application/x-dbf
274*b6cee71dSXin LI# dBASE IV with memo!
275*b6cee71dSXin LI>>0	ubyte		0x8B		dBase IV, with memo .DBT
276*b6cee71dSXin LI!:mime	application/x-dbf
277*b6cee71dSXin LI# dBase IV with SQL Table,no memo?
278*b6cee71dSXin LI>>0	ubyte		0x8E		dBase IV, with SQL table
279*b6cee71dSXin LI!:mime	application/x-dbf
280*b6cee71dSXin LI# .dbv and .dbt memo (Flagship)?
281*b6cee71dSXin LI>>0	ubyte		0xB3		Flagship
282*b6cee71dSXin LI# http://msdn.microsoft.com/en-US/library/st4a0s68(v=vs.80).aspx
283*b6cee71dSXin LI#>>0	ubyte		0xCA		dBase IV with memo .DBT
284*b6cee71dSXin LI#!:mime	application/x-dbf
285*b6cee71dSXin LI# dBASE IV with SQL table, with memo .DBT
286*b6cee71dSXin LI>>0	ubyte		0xCB		dBase IV with SQL table, with memo .DBT
287*b6cee71dSXin LI!:mime	application/x-dbf
288*b6cee71dSXin LI# HiPer-Six format;Clipper SIX, with SMT memo file
289*b6cee71dSXin LI>>0	ubyte		0xE5		Clipper SIX with memo
290*b6cee71dSXin LI!:mime	application/x-dbf
291*b6cee71dSXin LI# http://msdn.microsoft.com/en-US/library/st4a0s68(v=vs.80).aspx
292*b6cee71dSXin LI#>>0	ubyte		0xF4		dBase IV, with SQL table, with memo
293*b6cee71dSXin LI#!:mime	application/x-dbf
294*b6cee71dSXin LI>>0	ubyte		0xF5		FoxPro with memo
295*b6cee71dSXin LI!:mime	application/x-dbf
296*b6cee71dSXin LI# http://msdn.microsoft.com/en-US/library/st4a0s68(v=vs.80).aspx
297*b6cee71dSXin LI#>>0	ubyte		0xFA		FoxPro 2.x, with memo
298*b6cee71dSXin LI#!:mime	application/x-dbf
299*b6cee71dSXin LI# unknown version (should not happen)
300*b6cee71dSXin LI>>0	default		x		xBase
301*b6cee71dSXin LI!:mime	application/x-dbf
302*b6cee71dSXin LI>>>0	ubyte		x		(0x%x)
303*b6cee71dSXin LI# flags in version byte
304*b6cee71dSXin LI# DBT flag (with dBASE III memo .DBT)!!
305*b6cee71dSXin LI# >>0	ubyte&0x80	>0		DBT_FLAG=%x
306*b6cee71dSXin LI# memo flag ??
307*b6cee71dSXin LI# >>0	ubyte&0x08	>0		MEMO_FLAG=%x
308*b6cee71dSXin LI# SQL flag ??
309*b6cee71dSXin LI# >>0	ubyte&0x70	>0		SQL_FLAG=%x
310*b6cee71dSXin LI#		test and print the date of xBase .DBF .MDX
311*b6cee71dSXin LI0	name				xbase-date
312*b6cee71dSXin LI# inspect YYMMDD , where 1<= MM <= 12 and 1<= DD <= 31
313*b6cee71dSXin LI>0	ubelong		x
314*b6cee71dSXin LI>1	ubyte		<13
315*b6cee71dSXin LI>>1	ubyte		>0
316*b6cee71dSXin LI>>>2	ubyte		>0
317*b6cee71dSXin LI>>>>2	ubyte		<32
318*b6cee71dSXin LI>>>>>0	ubyte		x
319*b6cee71dSXin LI# YY is interpreted as 20YY or 19YY
320*b6cee71dSXin LI>>>>>>0	ubyte		<100		\b %.2d
321*b6cee71dSXin LI# YY is interpreted 1900+YY; TODO: display yy or 20yy instead 1YY
322*b6cee71dSXin LI>>>>>>0	ubyte		>99		\b %d
323*b6cee71dSXin LI>>>>>1	ubyte		x		\b-%d
324*b6cee71dSXin LI>>>>>2	ubyte		x		\b-%d
325*b6cee71dSXin LI
326*b6cee71dSXin LI#	dBase memo files .DBT or .FPT
327*b6cee71dSXin LI# http://msdn.microsoft.com/en-us/library/8599s21w(v=vs.80).aspx
328*b6cee71dSXin LI16		ubyte		<4
329*b6cee71dSXin LI>16		ubyte		!2
330*b6cee71dSXin LI>>16		ubyte		!1
331*b6cee71dSXin LI# next free block index is positive
332*b6cee71dSXin LI>>>0		ulelong		>0
333*b6cee71dSXin LI# skip many JPG. ZIP, BZ2 by test for reserved bytes NULL , 0|2 , 0|1 , low byte of block size
334*b6cee71dSXin LI>>>>17		ubelong&0xFFfdFE00	0x00000000
335*b6cee71dSXin LI# skip many RAR by test for low byte 0 ,high byte 0|2|even of block size, 0|a|e|d7 , 0|64h
336*b6cee71dSXin LI>>>>>20		ubelong&0xFF01209B	0x00000000
337*b6cee71dSXin LI# dBASE III
338*b6cee71dSXin LI>>>>>>16	ubyte		3
339*b6cee71dSXin LI# dBASE III DBT
340*b6cee71dSXin LI>>>>>>>0	use		xbase-memo-print
341*b6cee71dSXin LI# dBASE IV DBT , FoxPro FPT or many PNG , ZIP , DBF garbage
342*b6cee71dSXin LI>>>>>>16	ubyte		0
343*b6cee71dSXin LI# dBASE IV DBT with DBF name or DBF garbage
344*b6cee71dSXin LI>>>>>>>8	ubelong		>0x40000000
345*b6cee71dSXin LI# skip DBF and catch dBASE IV DBT with DBF name and with non big index of next free block
346*b6cee71dSXin LI>>>>>>>>0	ulelong		<0x01010002
347*b6cee71dSXin LI>>>>>>>>>0	use		xbase-memo-print
348*b6cee71dSXin LI>>>>>>>8	ubelong		0
349*b6cee71dSXin LI# skip MM*DD*.bin by test for for reserved NULL byte
350*b6cee71dSXin LI>>>>>>>>508	ubelong		0
351*b6cee71dSXin LI# real memo files should contain text here
352*b6cee71dSXin LI>>>>>>>>>520	ubelong		>0x20202019
353*b6cee71dSXin LI>>>>>>>>>>520	ubelong		<0xFEFEFEFF
354*b6cee71dSXin LI>>>>>>>>>>>0	use		xbase-memo-print
355*b6cee71dSXin LI# garbage PCX , ZIP , JAR , XPI
356*b6cee71dSXin LI>>>>>>>8	default		x
357*b6cee71dSXin LI
358*b6cee71dSXin LI#		Print the information of dBase DBT or FoxPro FPT memo files
359*b6cee71dSXin LI0	name				xbase-memo-print
360*b6cee71dSXin LI>0	ubyte			x
361*b6cee71dSXin LI# test version
362*b6cee71dSXin LI# memo file
363*b6cee71dSXin LI>>16	ubyte			3		dBase III DBT
364*b6cee71dSXin LI>>16	ubyte			0
365*b6cee71dSXin LI>>>512	ubelong			<0x00000003	FoxPro FPT
366*b6cee71dSXin LI# Size of blocks for FoxPro
367*b6cee71dSXin LI>>>>6	ubeshort		x		\b, blocks size %u
368*b6cee71dSXin LI# Number of next available block for appending data for FoxPro
369*b6cee71dSXin LI>>>>0	ubelong			=0		\b, next free block index %u
370*b6cee71dSXin LI>>>>0	ubelong			!0		\b, next free block index %u
371*b6cee71dSXin LI>>>512	default			x		dBase IV DBT
372*b6cee71dSXin LI# DBF file name without extension
373*b6cee71dSXin LI>>>>8	string			>\0		\b of %-.8s.DBF
374*b6cee71dSXin LI# size of blocks  ; not reliable 0x2020204C
375*b6cee71dSXin LI#>>>>4	ulelong			=0		\b, blocks size %u
376*b6cee71dSXin LI>>>>4	ulelong			!0		\b, blocks size %u
377*b6cee71dSXin LI# Block length found 0 , 512
378*b6cee71dSXin LI#>>>>20	uleshort		=0		\b, block length %u
379*b6cee71dSXin LI>>>>20	uleshort		!0		\b, block length %u
380*b6cee71dSXin LI# Number of next available block for appending data
381*b6cee71dSXin LI>>>>0	ulelong			=0		\b, next free block index %u
382*b6cee71dSXin LI>>>>0	ulelong			!0		\b, next free block index %u
383*b6cee71dSXin LI>>512	ubelong			x
384*b6cee71dSXin LI>>>512	ubelong			=0xFFFF0800
385*b6cee71dSXin LI>>>>520	string			>\0		\b, 1st used item "%s"
386*b6cee71dSXin LI# FoxPro
387*b6cee71dSXin LI>>>512	ubelong			<3
388*b6cee71dSXin LI# FoxPro memo
389*b6cee71dSXin LI>>>>512	ubelong			=1
390*b6cee71dSXin LI>>>>520	string			>\0		\b, 1st used item "%s"
391*b6cee71dSXin LI>>>512	default			x
392*b6cee71dSXin LI# may be deleted memo field
393*b6cee71dSXin LI>>>>512	string			>\0		\b, 1st item "%s"
394*b6cee71dSXin LI
395*b6cee71dSXin LI# TODO:
396*b6cee71dSXin LI# DBASE index file *.NDX
397*b6cee71dSXin LI# DBASE Compound Index file *.CDX
398*b6cee71dSXin LI# dBASE IV Printer Driver *.PRF
399*b6cee71dSXin LI## End of XBase database stuff
400*b6cee71dSXin LI
401*b6cee71dSXin LI# MS Access database
402*b6cee71dSXin LI4	string	Standard\ Jet\ DB	Microsoft Access Database
403*b6cee71dSXin LI!:mime	application/x-msaccess
404*b6cee71dSXin LI4	string	Standard\ ACE\ DB	Microsoft Access Database
405*b6cee71dSXin LI!:mime	application/x-msaccess
406*b6cee71dSXin LI
407*b6cee71dSXin LI# TDB database from Samba et al - Martin Pool <mbp@samba.org>
408*b6cee71dSXin LI0	string	TDB\ file		TDB database
409*b6cee71dSXin LI>32	lelong	0x2601196D		version 6, little-endian
410*b6cee71dSXin LI>>36	lelong	x			hash size %d bytes
411*b6cee71dSXin LI
412*b6cee71dSXin LI# SE Linux policy database
413*b6cee71dSXin LI0       lelong  0xf97cff8c      SE Linux policy
414*b6cee71dSXin LI>16     lelong  x               v%d
415*b6cee71dSXin LI>20     lelong  1      MLS
416*b6cee71dSXin LI>24     lelong  x       %d symbols
417*b6cee71dSXin LI>28     lelong  x       %d ocons
418*b6cee71dSXin LI
419*b6cee71dSXin LI# ICE authority file data (Wolfram Kleff)
420*b6cee71dSXin LI2	string		ICE		ICE authority data
421*b6cee71dSXin LI
422*b6cee71dSXin LI# X11 Xauthority file (Wolfram Kleff)
423*b6cee71dSXin LI10	string		MIT-MAGIC-COOKIE-1	X11 Xauthority data
424*b6cee71dSXin LI11	string		MIT-MAGIC-COOKIE-1	X11 Xauthority data
425*b6cee71dSXin LI12	string		MIT-MAGIC-COOKIE-1	X11 Xauthority data
426*b6cee71dSXin LI13	string		MIT-MAGIC-COOKIE-1	X11 Xauthority data
427*b6cee71dSXin LI14	string		MIT-MAGIC-COOKIE-1	X11 Xauthority data
428*b6cee71dSXin LI15	string		MIT-MAGIC-COOKIE-1	X11 Xauthority data
429*b6cee71dSXin LI16	string		MIT-MAGIC-COOKIE-1	X11 Xauthority data
430*b6cee71dSXin LI17	string		MIT-MAGIC-COOKIE-1	X11 Xauthority data
431*b6cee71dSXin LI18	string		MIT-MAGIC-COOKIE-1	X11 Xauthority data
432*b6cee71dSXin LI
433*b6cee71dSXin LI# From: Maxime Henrion <mux@FreeBSD.org>
434*b6cee71dSXin LI# PostgreSQL's custom dump format, Maxime Henrion <mux@FreeBSD.org>
435*b6cee71dSXin LI0	string		PGDMP		PostgreSQL custom database dump
436*b6cee71dSXin LI>5	byte		x		- v%d
437*b6cee71dSXin LI>6	byte		x		\b.%d
438*b6cee71dSXin LI>5	beshort		<0x101		\b-0
439*b6cee71dSXin LI>5	beshort		>0x100
440*b6cee71dSXin LI>>7	byte		x		\b-%d
441*b6cee71dSXin LI
442*b6cee71dSXin LI# Type: Advanced Data Format (ADF) database
443*b6cee71dSXin LI# URL:  http://www.grc.nasa.gov/WWW/cgns/adf/
444*b6cee71dSXin LI# From: Nicolas Chauvat <nicolas.chauvat@logilab.fr>
445*b6cee71dSXin LI0	string	@(#)ADF\ Database	CGNS Advanced Data Format
446*b6cee71dSXin LI
447*b6cee71dSXin LI# Tokyo Cabinet magic data
448*b6cee71dSXin LI# http://tokyocabinet.sourceforge.net/index.html
449*b6cee71dSXin LI0	string		ToKyO\ CaBiNeT\n	Tokyo Cabinet
450*b6cee71dSXin LI>14	string		x			\b (%s)
451*b6cee71dSXin LI>32	byte		0			\b, Hash
452*b6cee71dSXin LI!:mime	application/x-tokyocabinet-hash
453*b6cee71dSXin LI>32	byte		1			\b, B+ tree
454*b6cee71dSXin LI!:mime	application/x-tokyocabinet-btree
455*b6cee71dSXin LI>32	byte		2			\b, Fixed-length
456*b6cee71dSXin LI!:mime	application/x-tokyocabinet-fixed
457*b6cee71dSXin LI>32	byte		3			\b, Table
458*b6cee71dSXin LI!:mime	application/x-tokyocabinet-table
459*b6cee71dSXin LI>33	byte		&1			\b, [open]
460*b6cee71dSXin LI>33	byte		&2			\b, [fatal]
461*b6cee71dSXin LI>34	byte		x			\b, apow=%d
462*b6cee71dSXin LI>35	byte		x			\b, fpow=%d
463*b6cee71dSXin LI>36	byte		&0x01			\b, [large]
464*b6cee71dSXin LI>36	byte		&0x02			\b, [deflate]
465*b6cee71dSXin LI>36	byte		&0x04			\b, [bzip]
466*b6cee71dSXin LI>36	byte		&0x08			\b, [tcbs]
467*b6cee71dSXin LI>36	byte		&0x10			\b, [excodec]
468*b6cee71dSXin LI>40	lequad		x			\b, bnum=%lld
469*b6cee71dSXin LI>48	lequad		x			\b, rnum=%lld
470*b6cee71dSXin LI>56	lequad		x			\b, fsiz=%lld
471*b6cee71dSXin LI
472*b6cee71dSXin LI# Type:	QDBM Quick Database Manager
473*b6cee71dSXin LI# From:	Benoit Sibaud <bsibaud@april.org>
474*b6cee71dSXin LI0	string		\\[depot\\]\n\f		Quick Database Manager, little endian
475*b6cee71dSXin LI0	string		\\[DEPOT\\]\n\f		Quick Database Manager, big endian
476*b6cee71dSXin LI
477*b6cee71dSXin LI# Type:	TokyoCabinet database
478*b6cee71dSXin LI# URL:	http://tokyocabinet.sourceforge.net/
479*b6cee71dSXin LI# From:	Benoit Sibaud <bsibaud@april.org>
480*b6cee71dSXin LI0	string		ToKyO\ CaBiNeT\n	TokyoCabinet database
481*b6cee71dSXin LI>14	string		x			(version %s)
482*b6cee71dSXin LI
483*b6cee71dSXin LI# From:  Stephane Blondon http://www.yaal.fr
484*b6cee71dSXin LI# Database file for Zope (done by FileStorage)
485*b6cee71dSXin LI0	string		FS21	Zope Object Database File Storage (data)
486*b6cee71dSXin LI# Cache file for the database of Zope (done by ClientStorage)
487*b6cee71dSXin LI0	string		ZEC3	Zope Object Database Client Cache File (data)
488*b6cee71dSXin LI
489*b6cee71dSXin LI# IDA (Interactive Disassembler) database
490*b6cee71dSXin LI0	string		IDA1	IDA (Interactive Disassembler) database
491