xref: /freebsd/contrib/file/magic/Magdir/database (revision 43a5ec4eb41567cc92586503212743d89686d78f)
1b6cee71dSXin LI
2b6cee71dSXin LI#------------------------------------------------------------------------------
3*43a5ec4eSXin LI# $File: database,v 1.63 2021/10/04 00:44:30 christos Exp $
4b6cee71dSXin LI# database:  file(1) magic for various databases
5b6cee71dSXin LI#
6b6cee71dSXin LI# extracted from header/code files by Graeme Wilford (eep2gw@ee.surrey.ac.uk)
7b6cee71dSXin LI#
8b6cee71dSXin LI#
9b6cee71dSXin LI# GDBM magic numbers
10b6cee71dSXin LI#  Will be maintained as part of the GDBM distribution in the future.
11b6cee71dSXin LI#  <downsj@teeny.org>
12c2931133SXin LI0	belong	0x13579acd	GNU dbm 1.x or ndbm database, big endian, 32-bit
13b6cee71dSXin LI!:mime	application/x-gdbm
14c2931133SXin LI0	belong	0x13579ace	GNU dbm 1.x or ndbm database, big endian, old
15c2931133SXin LI!:mime	application/x-gdbm
16c2931133SXin LI0	belong	0x13579acf	GNU dbm 1.x or ndbm database, big endian, 64-bit
17c2931133SXin LI!:mime	application/x-gdbm
18c2931133SXin LI0	lelong	0x13579acd	GNU dbm 1.x or ndbm database, little endian, 32-bit
19c2931133SXin LI!:mime	application/x-gdbm
20c2931133SXin LI0	lelong	0x13579ace	GNU dbm 1.x or ndbm database, little endian, old
21c2931133SXin LI!:mime	application/x-gdbm
22c2931133SXin LI0	lelong	0x13579acf	GNU dbm 1.x or ndbm database, little endian, 64-bit
23b6cee71dSXin LI!:mime	application/x-gdbm
24b6cee71dSXin LI0	string	GDBM		GNU dbm 2.x database
25b6cee71dSXin LI!:mime	application/x-gdbm
26b6cee71dSXin LI#
27b6cee71dSXin LI# Berkeley DB
28b6cee71dSXin LI#
29b6cee71dSXin LI# Ian Darwin's file /etc/magic files: big/little-endian version.
30b6cee71dSXin LI#
31b6cee71dSXin LI# Hash 1.85/1.86 databases store metadata in network byte order.
32b6cee71dSXin LI# Btree 1.85/1.86 databases store the metadata in host byte order.
33b6cee71dSXin LI# Hash and Btree 2.X and later databases store the metadata in host byte order.
34b6cee71dSXin LI
35b6cee71dSXin LI0	long	0x00061561	Berkeley DB
36b6cee71dSXin LI!:mime	application/x-dbm
37b6cee71dSXin LI>8	belong	4321
38b6cee71dSXin LI>>4	belong	>2		1.86
39b6cee71dSXin LI>>4	belong	<3		1.85
40b6cee71dSXin LI>>4	belong	>0		(Hash, version %d, native byte-order)
41b6cee71dSXin LI>8	belong	1234
42b6cee71dSXin LI>>4	belong	>2		1.86
43b6cee71dSXin LI>>4	belong	<3		1.85
44b6cee71dSXin LI>>4	belong	>0		(Hash, version %d, little-endian)
45b6cee71dSXin LI
46b6cee71dSXin LI0	belong	0x00061561	Berkeley DB
47b6cee71dSXin LI>8	belong	4321
48b6cee71dSXin LI>>4	belong	>2		1.86
49b6cee71dSXin LI>>4	belong	<3		1.85
50b6cee71dSXin LI>>4	belong	>0		(Hash, version %d, big-endian)
51b6cee71dSXin LI>8	belong	1234
52b6cee71dSXin LI>>4	belong	>2		1.86
53b6cee71dSXin LI>>4	belong	<3		1.85
54b6cee71dSXin LI>>4	belong	>0		(Hash, version %d, native byte-order)
55b6cee71dSXin LI
56b6cee71dSXin LI0	long	0x00053162	Berkeley DB 1.85/1.86
57b6cee71dSXin LI>4	long	>0		(Btree, version %d, native byte-order)
58b6cee71dSXin LI0	belong	0x00053162	Berkeley DB 1.85/1.86
59b6cee71dSXin LI>4	belong	>0		(Btree, version %d, big-endian)
60b6cee71dSXin LI0	lelong	0x00053162	Berkeley DB 1.85/1.86
61b6cee71dSXin LI>4	lelong	>0		(Btree, version %d, little-endian)
62b6cee71dSXin LI
63b6cee71dSXin LI12	long	0x00061561	Berkeley DB
64b6cee71dSXin LI>16	long	>0		(Hash, version %d, native byte-order)
65b6cee71dSXin LI12	belong	0x00061561	Berkeley DB
66b6cee71dSXin LI>16	belong	>0		(Hash, version %d, big-endian)
67b6cee71dSXin LI12	lelong	0x00061561	Berkeley DB
68b6cee71dSXin LI>16	lelong	>0		(Hash, version %d, little-endian)
69b6cee71dSXin LI
70b6cee71dSXin LI12	long	0x00053162	Berkeley DB
71b6cee71dSXin LI>16	long	>0		(Btree, version %d, native byte-order)
72b6cee71dSXin LI12	belong	0x00053162	Berkeley DB
73b6cee71dSXin LI>16	belong	>0		(Btree, version %d, big-endian)
74b6cee71dSXin LI12	lelong	0x00053162	Berkeley DB
75b6cee71dSXin LI>16	lelong	>0		(Btree, version %d, little-endian)
76b6cee71dSXin LI
77b6cee71dSXin LI12	long	0x00042253	Berkeley DB
78b6cee71dSXin LI>16	long	>0		(Queue, version %d, native byte-order)
79b6cee71dSXin LI12	belong	0x00042253	Berkeley DB
80b6cee71dSXin LI>16	belong	>0		(Queue, version %d, big-endian)
81b6cee71dSXin LI12	lelong	0x00042253	Berkeley DB
82b6cee71dSXin LI>16	lelong	>0		(Queue, version %d, little-endian)
83b6cee71dSXin LI
84b6cee71dSXin LI# From Max Bowsher.
85b6cee71dSXin LI12	long	0x00040988	Berkeley DB
86b6cee71dSXin LI>16	long	>0		(Log, version %d, native byte-order)
87b6cee71dSXin LI12	belong	0x00040988	Berkeley DB
88b6cee71dSXin LI>16	belong	>0		(Log, version %d, big-endian)
89b6cee71dSXin LI12	lelong	0x00040988	Berkeley DB
90b6cee71dSXin LI>16	lelong	>0		(Log, version %d, little-endian)
91b6cee71dSXin LI
92b6cee71dSXin LI#
93b6cee71dSXin LI#
94b6cee71dSXin LI# Round Robin Database Tool by Tobias Oetiker <oetiker@ee.ethz.ch>
95b6cee71dSXin LI0	string/b	RRD\0		RRDTool DB
96b6cee71dSXin LI>4	string/b	x		version %s
97b6cee71dSXin LI
98b6cee71dSXin LI>>10	short		!0		16bit aligned
99b6cee71dSXin LI>>>10	bedouble	8.642135e+130	big-endian
100b6cee71dSXin LI>>>>18	short		x		32bit long (m68k)
101b6cee71dSXin LI
102b6cee71dSXin LI>>10	short		0
103b6cee71dSXin LI>>>12	long		!0		32bit aligned
104b6cee71dSXin LI>>>>12	bedouble	8.642135e+130	big-endian
105b6cee71dSXin LI>>>>>20 long		0		64bit long
106b6cee71dSXin LI>>>>>20 long		!0		32bit long
107b6cee71dSXin LI>>>>12	ledouble	8.642135e+130	little-endian
108b6cee71dSXin LI>>>>>24 long		0		64bit long
109b6cee71dSXin LI>>>>>24 long		!0		32bit long (i386)
110b6cee71dSXin LI>>>>12	string		\x43\x2b\x1f\x5b\x2f\x25\xc0\xc7	middle-endian
111b6cee71dSXin LI>>>>>24 short		!0		32bit long (arm)
112b6cee71dSXin LI
113b6cee71dSXin LI>>8	quad		0		64bit aligned
114b6cee71dSXin LI>>>16	bedouble	8.642135e+130	big-endian
115b6cee71dSXin LI>>>>24	long		0		64bit long (s390x)
116b6cee71dSXin LI>>>>24	long		!0		32bit long (hppa/mips/ppc/s390/SPARC)
117b6cee71dSXin LI>>>16	ledouble	8.642135e+130	little-endian
118b6cee71dSXin LI>>>>28	long		0		64bit long (alpha/amd64/ia64)
119b6cee71dSXin LI>>>>28	long		!0		32bit long (armel/mipsel)
120b6cee71dSXin LI
121b6cee71dSXin LI#----------------------------------------------------------------------
122b6cee71dSXin LI# ROOT: file(1) magic for ROOT databases
123b6cee71dSXin LI#
124b6cee71dSXin LI0       string  root\0  ROOT file
125b6cee71dSXin LI>4      belong  x       Version %d
126b6cee71dSXin LI>33     belong  x       (Compression: %d)
127b6cee71dSXin LI
128b6cee71dSXin LI# XXX: Weak magic.
129b6cee71dSXin LI# Alex Ott <ott@jet.msk.su>
130b6cee71dSXin LI## Paradox file formats
131b6cee71dSXin LI#2	  leshort	0x0800	Paradox
132b6cee71dSXin LI#>0x39	  byte		3	v. 3.0
133b6cee71dSXin LI#>0x39	  byte		4	v. 3.5
134b6cee71dSXin LI#>0x39	  byte		9	v. 4.x
135b6cee71dSXin LI#>0x39	  byte		10	v. 5.x
136b6cee71dSXin LI#>0x39	  byte		11	v. 5.x
137b6cee71dSXin LI#>0x39	  byte		12	v. 7.x
138b6cee71dSXin LI#>>0x04	  byte		0	indexed .DB data file
139b6cee71dSXin LI#>>0x04	  byte		1	primary index .PX file
140b6cee71dSXin LI#>>0x04	  byte		2	non-indexed .DB data file
141b6cee71dSXin LI#>>0x04	  byte		3	non-incrementing secondary index .Xnn file
142b6cee71dSXin LI#>>0x04	  byte		4	secondary index .Ynn file
143b6cee71dSXin LI#>>0x04	  byte		5	incrementing secondary index .Xnn file
144b6cee71dSXin LI#>>0x04	  byte		6	non-incrementing secondary index .XGn file
145b6cee71dSXin LI#>>0x04	  byte		7	secondary index .YGn file
146b6cee71dSXin LI#>>>0x04	  byte		8	incrementing secondary index .XGn file
147b6cee71dSXin LI
148b6cee71dSXin LI## XBase database files
149b6cee71dSXin LI# updated by Joerg Jenderek at Feb 2013
15048c779cdSXin LI# https://www.dbase.com/Knowledgebase/INT/db7_file_fmt.htm
15148c779cdSXin LI# https://www.clicketyclick.dk/databases/xbase/format/dbf.html
152b6cee71dSXin LI# inspect VVYYMMDD , where 1<= MM <= 12 and 1<= DD <= 31
153b6cee71dSXin LI0	ubelong&0x0000FFFF		<0x00000C20
154b6cee71dSXin LI# skip Infocom game Z-machine
155b6cee71dSXin LI>2		ubyte			>0
156b6cee71dSXin LI# skip Androids *.xml
157b6cee71dSXin LI>>3		ubyte			>0
158b6cee71dSXin LI>>>3		ubyte			<32
159b6cee71dSXin LI# 1 < version VV
160b6cee71dSXin LI>>>>0		ubyte			>1
161b6cee71dSXin LI# skip HELP.CA3 by test for reserved byte ( NULL )
162b6cee71dSXin LI>>>>>27		ubyte			0
163b6cee71dSXin LI# reserved bytes not always 0 ; also found 0x3901 (T4.DBF) ,0x7101 (T5.DBF,T6.DBF)
164b6cee71dSXin LI#>>>>>30		ubeshort     		x		30NULL?%x
165b6cee71dSXin LI# possible production flag,tag numbers(<=0x30),tag length(<=0x20), reserved (NULL)
166b6cee71dSXin LI>>>>>>24	ubelong&0xffFFFFff	>0x01302000
167b6cee71dSXin LI# .DBF or .MDX
168b6cee71dSXin LI>>>>>>24	ubelong&0xffFFFFff	<0x01302001
169b6cee71dSXin LI# for Xbase Database file (*.DBF) reserved (NULL) for multi-user
170b6cee71dSXin LI>>>>>>>24	ubelong&0xffFFFFff	=0
171b6cee71dSXin LI# test for 2 reserved NULL bytes,transaction and encryption byte flag
172b6cee71dSXin LI>>>>>>>>12	ubelong&0xFFFFfEfE	0
173b6cee71dSXin LI# test for MDX flag
174b6cee71dSXin LI>>>>>>>>>28	ubyte			x
175b6cee71dSXin LI>>>>>>>>>28	ubyte&0xf8		0
176b6cee71dSXin LI# header size >= 32
177b6cee71dSXin LI>>>>>>>>>>8	uleshort		>31
178b6cee71dSXin LI# skip PIC15736.PCX by test for language driver name or field name
179b6cee71dSXin LI>>>>>>>>>>>32	ubyte			>0
180b6cee71dSXin LI#!:mime	application/x-dbf; charset=unknown-8bit ??
181b6cee71dSXin LI#!:mime	application/x-dbase
182b6cee71dSXin LI>>>>>>>>>>>>0	use			xbase-type
183b6cee71dSXin LI# database file
184*43a5ec4eSXin LI>>>>>>>>>>>>28	ubyte&0x04		=0		\b DBF
185*43a5ec4eSXin LI!:ext	dbf
186*43a5ec4eSXin LI>>>>>>>>>>>>28	ubyte&0x04		=4		\b DataBaseContainer
187*43a5ec4eSXin LI!:ext	dbc
188b6cee71dSXin LI>>>>>>>>>>>>4	lelong			0		\b, no records
189b6cee71dSXin LI>>>>>>>>>>>>4	lelong			>0		\b, %d record
190b6cee71dSXin LI# plural s appended
191b6cee71dSXin LI>>>>>>>>>>>>>4	lelong			>1		\bs
19248c779cdSXin LI# https://www.clicketyclick.dk/databases/xbase/format/dbf_check.html#CHECK_DBF
193b6cee71dSXin LI# 1 <= record size <= 4000 (dBase 3,4) or 32 * KB (=0x8000)
194b6cee71dSXin LI>>>>>>>>>>>>10	uleshort		x		* %d
195b6cee71dSXin LI# file size = records * record size + header size
196b6cee71dSXin LI>>>>>>>>>>>>1	ubyte			x		\b, update-date
197b6cee71dSXin LI>>>>>>>>>>>>1	use			xbase-date
19848c779cdSXin LI# https://msdn.microsoft.com/de-de/library/cc483186(v=vs.71).aspx
199*43a5ec4eSXin LI#>>>>>>>>>>>>29	ubyte			=0		\b, codepage ID=%#x
200b6cee71dSXin LI# 2~cp850 , 3~cp1252 , 0x1b~?? ; what code page is 0x1b ?
201*43a5ec4eSXin LI>>>>>>>>>>>>29	ubyte			>0		\b, codepage ID=%#x
202b6cee71dSXin LI#>>>>>>>>>>>>28	ubyte&0x01		0		\b, no index file
203*43a5ec4eSXin LI# MDX or CDX index
204b6cee71dSXin LI>>>>>>>>>>>>28	ubyte&0x01		1		\b, with index file .MDX
205b6cee71dSXin LI>>>>>>>>>>>>28	ubyte&0x02		2		\b, with memo .FPT
206*43a5ec4eSXin LI#>>>>>>>>>>>>28	ubyte&0x04		4		\b, DataBaseContainer
207b6cee71dSXin LI# 1st record offset + 1 = header size
208b6cee71dSXin LI>>>>>>>>>>>>8	uleshort		>0
209b6cee71dSXin LI>>>>>>>>>>>>(8.s+1)	ubyte		>0
210b6cee71dSXin LI>>>>>>>>>>>>>8		uleshort	>0		\b, at offset %d
211b6cee71dSXin LI>>>>>>>>>>>>>(8.s+1)	ubyte		>0
212b6cee71dSXin LI>>>>>>>>>>>>>>&-1	string		>\0		1st record "%s"
21340427ccaSGordon Tetlow# for multiple index files (*.MDX) Production flag,tag numbers(<=0x30),tag length(<=0x20), reserved (NULL)
214b6cee71dSXin LI>>>>>>>24	ubelong&0x0133f7ff	>0
215b6cee71dSXin LI# test for reserved NULL byte
216c2931133SXin LI>>>>>>>>47	ubyte			0
217b6cee71dSXin LI# test for valid TAG key format (0x10 or 0)
218b6cee71dSXin LI>>>>>>>>>559	ubyte&0xeF		0
219b6cee71dSXin LI# test MM <= 12
220c2931133SXin LI>>>>>>>>>>45	ubeshort		<0x0C20
221c2931133SXin LI>>>>>>>>>>>45	ubyte			>0
222c2931133SXin LI>>>>>>>>>>>>46	ubyte			<32
223c2931133SXin LI>>>>>>>>>>>>>46	ubyte			>0
224b6cee71dSXin LI#!:mime	application/x-mdx
225c2931133SXin LI>>>>>>>>>>>>>>0		use		xbase-type
226c2931133SXin LI>>>>>>>>>>>>>>0		ubyte		x		\b MDX
227c2931133SXin LI>>>>>>>>>>>>>>1		ubyte		x		\b, creation-date
228c2931133SXin LI>>>>>>>>>>>>>>1		use		xbase-date
229c2931133SXin LI>>>>>>>>>>>>>>44	ubyte		x		\b, update-date
230c2931133SXin LI>>>>>>>>>>>>>>44	use		xbase-date
231b6cee71dSXin LI# No.of tags in use (1,2,5,12)
232c2931133SXin LI>>>>>>>>>>>>>>28	uleshort	x		\b, %d
233b6cee71dSXin LI# No. of entries in tag (0x30)
234c2931133SXin LI>>>>>>>>>>>>>>25	ubyte		x		\b/%d tags
235b6cee71dSXin LI#  Length of tag
236c2931133SXin LI>>>>>>>>>>>>>>26	ubyte		x		* %d
237b6cee71dSXin LI# 1st tag name_
238b6cee71dSXin LI>>>>>>>>>>>>>548	string		x		\b, 1st tag "%.11s"
239b6cee71dSXin LI# 2nd tag name
240b6cee71dSXin LI#>>>>>>>>>>>>(26.b+548)	string		x		\b, 2nd tag "%.11s"
241b6cee71dSXin LI#
242b6cee71dSXin LI#		Print the xBase names of different version variants
243b6cee71dSXin LI0	name				xbase-type
244b6cee71dSXin LI>0	ubyte		<2
245b6cee71dSXin LI# 1 < version
246b6cee71dSXin LI>0	ubyte		>1
247b6cee71dSXin LI>>0	ubyte		0x02		FoxBase
248*43a5ec4eSXin LI!:mime	application/x-dbf
249*43a5ec4eSXin LI# like: ACCESS.DBF USER.DBF dbase3date.dbf mitarbei.dbf produkte.dbf umlaut-test-v2.dbf
250b6cee71dSXin LI# FoxBase+/dBaseIII+, no memo
251b6cee71dSXin LI>>0	ubyte		0x03		FoxBase+/dBase III
252b6cee71dSXin LI!:mime	application/x-dbf
253*43a5ec4eSXin LI# like: 92DATA.DBF MSCATLOG.DBF SYLLABI2.DBF SYLLABUS.DBF T4.DBF Teleadr.dbf us_city.dbf
254b6cee71dSXin LI# dBASE IV no memo file
255b6cee71dSXin LI>>0	ubyte		0x04		dBase IV
256b6cee71dSXin LI!:mime	application/x-dbf
257*43a5ec4eSXin LI# like: Quattro-test11.dbf umlaut-test-v4.dbf
258b6cee71dSXin LI# dBASE V no memo file
259b6cee71dSXin LI>>0	ubyte		0x05		dBase V
260b6cee71dSXin LI!:mime	application/x-dbf
261*43a5ec4eSXin LI# like: dbase4double.dbf Quattro-test2.dbf umlaut-test7.dbf
262*43a5ec4eSXin LI!:ext	dbf
263*43a5ec4eSXin LI# probably Apollo Database Server 9.7? xBase (0x6)
264*43a5ec4eSXin LI>>0	ubyte		0x06		Apollo
265*43a5ec4eSXin LI!:mime	application/x-dbf
266*43a5ec4eSXin LI# like: ALIAS.DBF CRYPT.DBF PROCS.DBF USERS.DBF
267*43a5ec4eSXin LI# https://docs.microsoft.com/en-us/previous-versions/visualstudio/foxpro/st4a0s68(v=vs.80)
268*43a5ec4eSXin LI>>0	ubyte		0x2F		FoxBase+/Dbase III plus, no memo
269*43a5ec4eSXin LI!:mime	application/x-dbf
270*43a5ec4eSXin LI# no example
271b6cee71dSXin LI>>0	ubyte		0x30		Visual FoxPro
272b6cee71dSXin LI!:mime	application/x-dbf
273*43a5ec4eSXin LI# like: 26FRX.DBF 30DBC.DBF 30DBCPRO.DBF BEHINDSC.DBF USER_LEV.DBF
274*43a5ec4eSXin LI# Microsoft Visual FoxPro Database Container File like: FOXPRO-DB-TEST.DBC TESTDATA.DBC TASTRADE.DBC
275b6cee71dSXin LI>>0	ubyte		0x31		Visual FoxPro, autoincrement
276b6cee71dSXin LI!:mime	application/x-dbf
277*43a5ec4eSXin LI# like: AI_Table.DBF dbase_31.dbf w_cityFoxpro.dbf
278b6cee71dSXin LI# Visual FoxPro, with field type Varchar or Varbinary
279b6cee71dSXin LI>>0	ubyte		0x32		Visual FoxPro, with field type Varchar
280b6cee71dSXin LI!:mime	application/x-dbf
281*43a5ec4eSXin LI# like: dbase_32.dbf
282b6cee71dSXin LI# dBASE IV SQL, no memo;dbv memo var size (Flagship)
283b6cee71dSXin LI>>0	ubyte		0x43		dBase IV, with SQL table
284b6cee71dSXin LI!:mime	application/x-dbf
285*43a5ec4eSXin LI# like: ASSEMBLY.DBF INVENTRY.DBF STAFF.DBF
286*43a5ec4eSXin LI# https://docs.microsoft.com/en-us/previous-versions/visualstudio/foxpro/st4a0s68(v=vs.80)
287*43a5ec4eSXin LI>>0	ubyte		0x62		dBase IV, with SQL table
288b6cee71dSXin LI#!:mime	application/x-dbf
289*43a5ec4eSXin LI# no example
290b6cee71dSXin LI# dBASE IV, with memo!!
291b6cee71dSXin LI>>0	ubyte		0x7b		dBase IV, with memo
292b6cee71dSXin LI!:mime	application/x-dbf
293*43a5ec4eSXin LI# like: test3memo.DBF dbase5.DBF
294*43a5ec4eSXin LI# https://docs.microsoft.com/en-us/previous-versions/visualstudio/foxpro/st4a0s68(v=vs.80)
295*43a5ec4eSXin LI>>0	ubyte		0x82		dBase IV, with SQL system
296b6cee71dSXin LI#!:mime	application/x-dbf
297*43a5ec4eSXin LI# no example
298b6cee71dSXin LI# FoxBase+/dBaseIII+ with memo .DBT!
299b6cee71dSXin LI>>0	ubyte		0x83		FoxBase+/dBase III, with memo .DBT
300b6cee71dSXin LI!:mime	application/x-dbf
301*43a5ec4eSXin LI# like: T2.DBF t3.DBF biblio.dbf dbase_83.dbf dbase3dbt0_4.dbf fsadress.dbf stop.dbf
302b6cee71dSXin LI# VISUAL OBJECTS (first 1.0 versions) for the Dbase III files (NTX clipper driver); memo file
303b6cee71dSXin LI>>0	ubyte		0x87		VISUAL OBJECTS, with memo file
304b6cee71dSXin LI!:mime	application/x-dbf
305*43a5ec4eSXin LI# like: ACCESS.DBF dbase3date.dbf dbase3float.dbf holdings.dbf mitarbei.dbf
306*43a5ec4eSXin LI# https://docs.microsoft.com/en-us/previous-versions/visualstudio/foxpro/st4a0s68(v=vs.80)
307*43a5ec4eSXin LI>>0	ubyte		0x8A		FoxBase+/dBase III, with memo .DBT
308b6cee71dSXin LI#!:mime	application/x-dbf
309*43a5ec4eSXin LI# no example
310b6cee71dSXin LI# dBASE IV with memo!
311b6cee71dSXin LI>>0	ubyte		0x8B		dBase IV, with memo .DBT
312b6cee71dSXin LI!:mime	application/x-dbf
313*43a5ec4eSXin LI# like: animals.dbf archive.dbf callin.dbf dbase_8b.dbf phnebook.dbf t6.dbf
314b6cee71dSXin LI# dBase IV with SQL Table,no memo?
315b6cee71dSXin LI>>0	ubyte		0x8E		dBase IV, with SQL table
316b6cee71dSXin LI!:mime	application/x-dbf
317*43a5ec4eSXin LI# like: dbase5.DBF test3memo.DBF test-memo.DBF
318b6cee71dSXin LI# .dbv and .dbt memo (Flagship)?
319b6cee71dSXin LI>>0	ubyte		0xB3		Flagship
320*43a5ec4eSXin LI!:mime	application/x-dbf
321*43a5ec4eSXin LI# no example
322*43a5ec4eSXin LI# https://docs.microsoft.com/en-us/previous-versions/visualstudio/foxpro/st4a0s68(v=vs.80)
323*43a5ec4eSXin LI>>0	ubyte		0xCA		dBase IV with memo .DBT
324b6cee71dSXin LI#!:mime	application/x-dbf
325*43a5ec4eSXin LI# no example
326b6cee71dSXin LI# dBASE IV with SQL table, with memo .DBT
327b6cee71dSXin LI>>0	ubyte		0xCB		dBase IV with SQL table, with memo .DBT
328b6cee71dSXin LI!:mime	application/x-dbf
329*43a5ec4eSXin LI# like: dbase5.DBF test3memo.DBF test-memo.DBF
330b6cee71dSXin LI# HiPer-Six format;Clipper SIX, with SMT memo file
331b6cee71dSXin LI>>0	ubyte		0xE5		Clipper SIX with memo
332b6cee71dSXin LI!:mime	application/x-dbf
333*43a5ec4eSXin LI# like: dbase5.DBF test3memo.DBF test-memo.DBF testClipper.dbf DATA.DBF
334*43a5ec4eSXin LI# https://docs.microsoft.com/en-us/previous-versions/visualstudio/foxpro/st4a0s68(v=vs.80)
335*43a5ec4eSXin LI>>0	ubyte		0xF4		dBase IV, with SQL table, with memo
336b6cee71dSXin LI#!:mime	application/x-dbf
337*43a5ec4eSXin LI# no example
338b6cee71dSXin LI>>0	ubyte		0xF5		FoxPro with memo
339b6cee71dSXin LI!:mime	application/x-dbf
340*43a5ec4eSXin LI# like: CUSTOMER.DBF FOXUSER1.DBF Invoice.DBF NG.DBF OBJSAMP.DBF dbase_f5.dbf kunde.dbf
341*43a5ec4eSXin LI# probably Apollo Database Server 9.7 with SQL and memo mask? xBase (0xF6)
342*43a5ec4eSXin LI>>0	ubyte		0xF6		Apollo, with SQL table with memo
343*43a5ec4eSXin LI!:mime	application/x-dbf
344*43a5ec4eSXin LI# like: SCRIPTS.DBF
345*43a5ec4eSXin LI# https://docs.microsoft.com/en-us/previous-versions/visualstudio/foxpro/st4a0s68(v=vs.80)
346b6cee71dSXin LI#>>0	ubyte		0xFA		FoxPro 2.x, with memo
347b6cee71dSXin LI#!:mime	application/x-dbf
348*43a5ec4eSXin LI# no example
349b6cee71dSXin LI# unknown version (should not happen)
350b6cee71dSXin LI>>0	default		x		xBase
351b6cee71dSXin LI!:mime	application/x-dbf
352*43a5ec4eSXin LI>>>0	ubyte		x		(%#x)
353b6cee71dSXin LI# flags in version byte
354b6cee71dSXin LI# DBT flag (with dBASE III memo .DBT)!!
355b6cee71dSXin LI# >>0	ubyte&0x80	>0		DBT_FLAG=%x
356b6cee71dSXin LI# memo flag ??
357b6cee71dSXin LI# >>0	ubyte&0x08	>0		MEMO_FLAG=%x
358b6cee71dSXin LI# SQL flag ??
359b6cee71dSXin LI# >>0	ubyte&0x70	>0		SQL_FLAG=%x
360b6cee71dSXin LI#		test and print the date of xBase .DBF .MDX
361b6cee71dSXin LI0	name				xbase-date
362b6cee71dSXin LI# inspect YYMMDD , where 1<= MM <= 12 and 1<= DD <= 31
363b6cee71dSXin LI>0	ubelong		x
364b6cee71dSXin LI>1	ubyte		<13
365b6cee71dSXin LI>>1	ubyte		>0
366b6cee71dSXin LI>>>2	ubyte		>0
367b6cee71dSXin LI>>>>2	ubyte		<32
368b6cee71dSXin LI>>>>>0	ubyte		x
369b6cee71dSXin LI# YY is interpreted as 20YY or 19YY
370b6cee71dSXin LI>>>>>>0	ubyte		<100		\b %.2d
371b6cee71dSXin LI# YY is interpreted 1900+YY; TODO: display yy or 20yy instead 1YY
372b6cee71dSXin LI>>>>>>0	ubyte		>99		\b %d
373b6cee71dSXin LI>>>>>1	ubyte		x		\b-%d
374b6cee71dSXin LI>>>>>2	ubyte		x		\b-%d
375b6cee71dSXin LI
376b6cee71dSXin LI#	dBase memo files .DBT or .FPT
37748c779cdSXin LI# https://msdn.microsoft.com/en-us/library/8599s21w(v=vs.80).aspx
378b6cee71dSXin LI16		ubyte		<4
379b6cee71dSXin LI>16		ubyte		!2
380b6cee71dSXin LI>>16		ubyte		!1
381b6cee71dSXin LI# next free block index is positive
382b6cee71dSXin LI>>>0		ulelong		>0
383b6cee71dSXin LI# skip many JPG. ZIP, BZ2 by test for reserved bytes NULL , 0|2 , 0|1 , low byte of block size
384d38c30c0SXin LI>>>>17		ubelong&0xFFfdFEff	0x00000000
385b6cee71dSXin LI# skip many RAR by test for low byte 0 ,high byte 0|2|even of block size, 0|a|e|d7 , 0|64h
386b6cee71dSXin LI>>>>>20		ubelong&0xFF01209B	0x00000000
387b6cee71dSXin LI# dBASE III
388b6cee71dSXin LI>>>>>>16	ubyte		3
389b6cee71dSXin LI# dBASE III DBT
390c2931133SXin LI>>>>>>>0	use		dbase3-memo-print
391c2931133SXin LI# dBASE III DBT without version, dBASE IV DBT , FoxPro FPT , or many ZIP , DBF garbage
392b6cee71dSXin LI>>>>>>16	ubyte		0
393c2931133SXin LI# unusual dBASE III DBT like angest.dbt, dBASE IV DBT with block size 0 , FoxPro FPT ,  or garbage PCX DBF
394c2931133SXin LI>>>>>>>20	uleshort	0
395c2931133SXin LI# FoxPro FPT , unusual dBASE III DBT like biblio.dbt or garbage
396c2931133SXin LI>>>>>>>>8	ulong		=0
397c2931133SXin LI>>>>>>>>>6	ubeshort	>0
398c2931133SXin LI# skip emacs.PIF
399c2931133SXin LI>>>>>>>>>>4	ushort		0
400d38c30c0SXin LI# check for valid FoxPro field type
401d38c30c0SXin LI>>>>>>>>>>>512	ubelong		<3
402d38c30c0SXin LI>>>>>>>>>>>>0	use		foxpro-memo-print
403c2931133SXin LI# dBASE III DBT , garbage
404d38c30c0SXin LI# skip WORD1XW.DOC with improbably high free block index
4052726a701SXin LI>>>>>>>>>0	ulelong		<0x400000
4062726a701SXin LI# skip WinStore.App.exe by looking for printable 2nd character of 1st memo item
4072726a701SXin LI>>>>>>>>>>513	ubyte		>037
408c2931133SXin LI# unusual dBASE III DBT like adressen.dbt
4092726a701SXin LI>>>>>>>>>>>0	use		dbase3-memo-print
410c2931133SXin LI# dBASE III DBT like angest.dbt, or garbage PCX DBF
411c2931133SXin LI>>>>>>>>8	ubelong		!0
412c2931133SXin LI# skip PCX and some DBF by test for for reserved NULL bytes
413c2931133SXin LI>>>>>>>>>510	ubeshort	0
4142726a701SXin LI# skip bad symples with improbably high free block index above 2 GiB file limit
4152726a701SXin LI>>>>>>>>>>0	ulelong		<0x400000
4162726a701SXin LI# skip AI070GEP.EPS by printable 1st character of 1st memo item
4172726a701SXin LI>>>>>>>>>>>512	ubyte		>037
4182726a701SXin LI# skip gluon-ffhat-1.0-tp-link-tl-wr1043n-nd-v2-sysupgrade.bin by printable 2nd character
4192726a701SXin LI>>>>>>>>>>>>513	ubyte		>037
4202726a701SXin LI>>>>>>>>>>>>>0	use		dbase3-memo-print
421c2931133SXin LI# dBASE IV DBT with positive block size
422c2931133SXin LI>>>>>>>20	uleshort	>0
4233e41d09dSXin LI# dBASE IV DBT with valid block length like 512, 1024
4243e41d09dSXin LI# multiple of 2 in between 16 and 16 K ,implies upper and lower bits are zero
425d38c30c0SXin LI# skip also 3600h 3E00h size
426d38c30c0SXin LI>>>>>>>>20	uleshort&0xE00f	0
4273e41d09dSXin LI>>>>>>>>>0	use		dbase4-memo-print
428b6cee71dSXin LI
429c2931133SXin LI#		Print the information of dBase III DBT memo file
430c2931133SXin LI0	name				dbase3-memo-print
431c2931133SXin LI>0	ubyte			x		dBase III DBT
432d38c30c0SXin LI!:mime	application/x-dbt
433d38c30c0SXin LI!:ext	dbt
434c2931133SXin LI# instead 3 as version number 0 for unusual examples like biblio.dbt
435c2931133SXin LI>16	ubyte			!3		\b, version number %u
436b6cee71dSXin LI# Number of next available block for appending data
437c2931133SXin LI#>0	lelong			=0		\b, next free block index %u
438c2931133SXin LI>0	lelong			!0		\b, next free block index %u
439*43a5ec4eSXin LI# no positive block length
440c2931133SXin LI#>20	uleshort		=0		\b, block length %u
441c2931133SXin LI>20	uleshort		!0		\b, block length %u
442c2931133SXin LI# dBase III memo field terminated by \032\032
443c2931133SXin LI>512	string			>\0		\b, 1st item "%s"
444d38c30c0SXin LI# https://www.clicketyclick.dk/databases/xbase/format/dbt.html
445c2931133SXin LI#		Print the information of dBase IV DBT memo file
446c2931133SXin LI0	name				dbase4-memo-print
447c2931133SXin LI>0		lelong		x		dBase IV DBT
4483e41d09dSXin LI!:mime	application/x-dbt
4493e41d09dSXin LI!:ext dbt
450*43a5ec4eSXin LI# 8 character shorted main name of corresponding dBASE IV DBF file
451c2931133SXin LI>8		ubelong		>0x20000000
452c2931133SXin LI# skip unusual like for angest.dbt
453c2931133SXin LI>>20		uleshort	>0
454c2931133SXin LI>>>8		string		>\0		\b of %-.8s.DBF
455c2931133SXin LI# value 0 implies 512 as size
456c2931133SXin LI#>4		ulelong		=0		\b, blocks size %u
457c2931133SXin LI# size of blocks not reliable like 0x2020204C in angest.dbt
458c2931133SXin LI>4		ulelong		!0
459c2931133SXin LI>>4		ulelong&0x0000003f	0	\b, blocks size %u
460c2931133SXin LI# dBase IV DBT with positive block length (found 512 , 1024)
461c2931133SXin LI>20		uleshort	>0		\b, block length %u
462c2931133SXin LI# next available block
463c2931133SXin LI#>0		lelong		=0		\b, next free block index %u
464c2931133SXin LI>0		lelong		!0		\b, next free block index %u
465c2931133SXin LI>20		uleshort	>0
466c2931133SXin LI>>(20.s)	ubelong		x
467c2931133SXin LI>>>&-4		use		dbase4-memofield-print
468c2931133SXin LI# unusual dBase IV DBT without block length (implies 512 as length)
469c2931133SXin LI>20		uleshort	=0
470b6cee71dSXin LI>>512		ubelong		x
471c2931133SXin LI>>>&-4		use				dbase4-memofield-print
472c2931133SXin LI#		Print the information of dBase IV memo field
473c2931133SXin LI0	name			dbase4-memofield-print
474c2931133SXin LI# free dBase IV memo field
475c2931133SXin LI>0		ubelong		!0xFFFF0800
476c2931133SXin LI>>0		lelong		x		\b, next free block %u
477c2931133SXin LI>>4		lelong		x		\b, next used block %u
478c2931133SXin LI# used dBase IV memo field
479c2931133SXin LI>0		ubelong		=0xFFFF0800
480c2931133SXin LI# length of memo field
481c2931133SXin LI>>4		lelong		x		\b, field length %d
482c2931133SXin LI>>>8		string		>\0		\b, 1st used item "%s"
483d38c30c0SXin LI# http://www.dbfree.org/webdocs/1-documentation/0018-developers_stuff_(advanced)/os_related_stuff/xbase_file_format.htm
484c2931133SXin LI#		Print the information of FoxPro FPT memo file
485c2931133SXin LI0	name				foxpro-memo-print
486c2931133SXin LI>0		belong		x		FoxPro FPT
487d38c30c0SXin LI!:mime	application/x-fpt
488d38c30c0SXin LI!:ext	fpt
489c2931133SXin LI# Size of blocks for FoxPro ( 64,256 )
490c2931133SXin LI>6		ubeshort	x		\b, blocks size %u
491c2931133SXin LI# next available block
492c2931133SXin LI#>0		belong		=0		\b, next free block index %u
493c2931133SXin LI>0		belong		!0		\b, next free block index %u
494c2931133SXin LI# field type ( 0~picture, 1~memo, 2~object )
495c2931133SXin LI>512		ubelong		<3		\b, field type %u
496c2931133SXin LI# length of memo field
497c2931133SXin LI>512		ubelong		1
498c2931133SXin LI>>516		belong		>0		\b, field length %d
499c2931133SXin LI>>>520		string		>\0		\b, 1st item "%s"
500b6cee71dSXin LI
501*43a5ec4eSXin LI# Summary:	DBASE Compound Index file *.CDX and FoxPro index *.IDX
502*43a5ec4eSXin LI# From:		Joerg Jenderek
503*43a5ec4eSXin LI# URL:		https://www.clicketyclick.dk/databases/xbase/format/cdx.html
504*43a5ec4eSXin LI#		https://www.clicketyclick.dk/databases/xbase/format/idx.html
505*43a5ec4eSXin LI#		https://www.clicketyclick.dk/databases/xbase/format/idx_comp.html
506*43a5ec4eSXin LI# Reference:	https://mark0.net/download/triddefs_xml.7z/defs/s/sybase-ianywhere-cdx.trid.xml
507*43a5ec4eSXin LI#		https://mark0.net/download/triddefs_xml.7z/defs/c/cdx-vfp7.trid.xml
508*43a5ec4eSXin LI# like: kunde.cdx
509*43a5ec4eSXin LI0	ulelong		0x1C00
510*43a5ec4eSXin LI>0	use			xbase-index
511*43a5ec4eSXin LI# like: SYLLABI2.CDX SYLLABUS.CDX
512*43a5ec4eSXin LI0	ulelong		0x0800
513*43a5ec4eSXin LI>0	use			xbase-index
514*43a5ec4eSXin LI# often in xBase index pointer to root node 400h
515*43a5ec4eSXin LI0	ulelong		0x0400
516*43a5ec4eSXin LI# skip most Maple help database *.hdb with version tag handled by ./maple
517*43a5ec4eSXin LI>1028	string		!version
518*43a5ec4eSXin LI# skip Maple help database hsum.hdb checking for valid reserved area
519*43a5ec4eSXin LI>>492	quad		=0
520*43a5ec4eSXin LI# skip remaining Maple help database *.hdb by checking key length
521*43a5ec4eSXin LI#>>>12	uleshort	!0x000F			KEY_LENGTHVALID
522*43a5ec4eSXin LI>>>0	use			xbase-index
523*43a5ec4eSXin LI#	display information about dBase/FoxPro index
524*43a5ec4eSXin LI0	name			xbase-index
525*43a5ec4eSXin LI>0	ulelong		x			xBase
526*43a5ec4eSXin LI!:mime	application/x-dbase-index
527*43a5ec4eSXin LI>14	ubyte		&0x40			compound index
528*43a5ec4eSXin LI# DCX for FoxPro database index like: TESTDATA.DCX
529*43a5ec4eSXin LI!:ext	cdx/dcx
530*43a5ec4eSXin LI>14	ubyte		^0x40			index
531*43a5ec4eSXin LI# only 1 example like: TEST.IDX
532*43a5ec4eSXin LI!:ext	idx
533*43a5ec4eSXin LI# pointer to root node like: 1C00h 800h often 400h
534*43a5ec4eSXin LI>0	ulelong		!0x400			\b, root pointer %#x
535*43a5ec4eSXin LI# Pointer to free node list: often 0 but -1 if not present
536*43a5ec4eSXin LI>4	ulelong		!0			\b, free node pointer %#x
537*43a5ec4eSXin LI# MAYBE number of pages in file (Foxbase, FoxPro 1.x) or
538*43a5ec4eSXin LI# http://www.foxpert.com/foxpro/knowlbits/files/knowlbits_200708_1.HTM
539*43a5ec4eSXin LI# Whenever Visual FoxPro updates the index file it increments this reserved field
540*43a5ec4eSXin LI# Reserved for internal use like: 02000000h 03000000h 460c0000h 780f0000h 89000000h 9fdc0100h often 0
541*43a5ec4eSXin LI>8	ulelong		!0			\b, reserved counter %#x
542*43a5ec4eSXin LI# length of key like: mostly 000Ah 0028h (TEST.IDX)
543*43a5ec4eSXin LI>12	uleshort	!0x000A			\b, key length %#x
544*43a5ec4eSXin LI# index options like: 24h E0h E8h
545*43a5ec4eSXin LI# 1~a unique index 8~index has FOR clause 32~compact index format 64~compound index header
546*43a5ec4eSXin LI# 16~Bit vector (SoftC) 128~Structure index (FoxPro)
547*43a5ec4eSXin LI>14	ubyte		x			\b, index options (%#x
548*43a5ec4eSXin LI>14	ubyte		&0x01			\b, unique
549*43a5ec4eSXin LI>14	ubyte		&0x08			\b, has FOR clause
550*43a5ec4eSXin LI>14	ubyte		&0x10			\b, bit vector (SoftC)
551*43a5ec4eSXin LI>14	ubyte		&0x20			\b, compact format
552*43a5ec4eSXin LI#>14	ubyte		&0x40			\b, compound header
553*43a5ec4eSXin LI>14	ubyte		&0x80			\b, structure
554*43a5ec4eSXin LI>14	ubyte		x			\b)
555*43a5ec4eSXin LI# WHAT EXACTLY IS THAT? index signature like: 0 (sybase-ianywhere-cdx.trid.xml) 1 (cdx-vfp7.trid.xml)
556*43a5ec4eSXin LI>15	ubyte		!0			\b, index signature %u
557*43a5ec4eSXin LI# reserved area (0-bytes) til about 500, but not for uncompressed Index files *.idx
558*43a5ec4eSXin LI>16	quad		!0			\b, at 16 reserved %#llx
559*43a5ec4eSXin LI>492	quad		!0			\b, at 492 reserved %#llx
560*43a5ec4eSXin LI# for IDX variant
561*43a5ec4eSXin LI#>14	ubyte		^0x40			IDX
562*43a5ec4eSXin LI# for CDX variant
563*43a5ec4eSXin LI>14	ubyte		&0x40
564*43a5ec4eSXin LI# Ascending or descending: 0~ascending 1~descending
565*43a5ec4eSXin LI>>502	uleshort	x			\b, sort order %u
566*43a5ec4eSXin LI# Total expression length (FoxPro 2) like: 0 1
567*43a5ec4eSXin LI>>504	uleshort	!0			\b, expression length %u
568*43a5ec4eSXin LI# FOR expression pool length like: 1
569*43a5ec4eSXin LI>>506	uleshort	!1			\b, FOR expression pool length %#x
570*43a5ec4eSXin LI# reserved for internal use like: 0
571*43a5ec4eSXin LI>>508	uleshort	!0			\b, at 0x508 reserved %#x
572*43a5ec4eSXin LI# Key expression pool length like: 1
573*43a5ec4eSXin LI>>510	uleshort	!1			\b, key expression pool length %#x
574*43a5ec4eSXin LI# 512 - 1023 Key & FOR expression pool (uncompiled)
575*43a5ec4eSXin LI>>512	quad		!0			\b, key expression pool %#llx
576*43a5ec4eSXin LI#>>520	quad		!0			\b, key expression pool %#llx
577*43a5ec4eSXin LI
578*43a5ec4eSXin LI# Summary:	dBASE IV Printer Form *.PRF
579*43a5ec4eSXin LI# From:		Joerg Jenderek
580*43a5ec4eSXin LI# URL:		https://en.wikipedia.org/wiki/.dbf#Other_file_types_found_in_dBASE
581*43a5ec4eSXin LI# Reference:	https://mark0.net/download/triddefs_xml.7z/defs/p/prf-dbase.trid.xml
582*43a5ec4eSXin LI0	ubeshort	0x0400
583*43a5ec4eSXin LI# skip some Xbase Index files *.ndx and Infocom (Z-machine 4) *.z4 handled by ./adventure
584*43a5ec4eSXin LI# by looking for valid printer driver name extension
585*43a5ec4eSXin LI>0x58	search/8	.PR2
586*43a5ec4eSXin LI>>0	use			xbase-prf
587*43a5ec4eSXin LI#	display information of dbase print form like printer driver *.PR2
588*43a5ec4eSXin LI0	name			xbase-prf	dBase Printer Form
589*43a5ec4eSXin LI!:mime	application/x-dbase-prf
590*43a5ec4eSXin LI!:ext	prf
591*43a5ec4eSXin LI# MAYBE version? like: 4~DBASE IV
592*43a5ec4eSXin LI#>0	ubyte		x			\b, version %u
593*43a5ec4eSXin LI# MAYBE flag like: 1~with output file name 0~not
594*43a5ec4eSXin LI#>2	ubyte		!0			\b, flag %u
595*43a5ec4eSXin LI# optional printer text output file name like E:\DBASE\IV\T6.txt
596*43a5ec4eSXin LI>3	string		>\0			\b, output file %s
597*43a5ec4eSXin LI# probably padding with nils til 0x53
598*43a5ec4eSXin LI#>0x48	 uquad		!0			\b, at 0x48 padding %#llx
599*43a5ec4eSXin LI# dBASE IV printer driver name like: Generic.PR2 ASCII.PR2
600*43a5ec4eSXin LI>0x56	string		>\0			\b, using printer driver %s
601*43a5ec4eSXin LI# 2 is probably last character of previous dBASE printer driver name
602*43a5ec4eSXin LI#>0x60	ubyte		!0x32			\b, at 0x60 %#x
603*43a5ec4eSXin LI# probably padding with nils til 0xa8
604*43a5ec4eSXin LI#>0x61	uquad		!0			\b, at 0x61 padding %#llx
605*43a5ec4eSXin LI# unknown 0x03020300 0x03020100 at 0xa8
606*43a5ec4eSXin LI>0xa8	ubelong 	x			\b, at 0xa8 unknown %#8.8x
607*43a5ec4eSXin LI# probably padding with nils til 0x2aa
608*43a5ec4eSXin LI#>0x2a0	uquad		!0			\b, at 0x2a0 padding %#llx
609*43a5ec4eSXin LI# unknown 0x100ff7f01000001 at 0x2AB
610*43a5ec4eSXin LI>0x2ab	ubequad		!0x100ff7f01000001	\b, at 0x2ab unknown %#llx
611*43a5ec4eSXin LI# unknown 0x0042 at 0x2b3
612*43a5ec4eSXin LI>0x2b3	ubeshort 	!0x0042			\b, at 0x2b3 unknown %#4.4x
613*43a5ec4eSXin LI# unknown last 4 bytes at 0x2b6 like: 0 0x23
614*43a5ec4eSXin LI>0x2b6	ubelong		!0			\b, at 0x2b6 unknown %#8.8x
615*43a5ec4eSXin LI
616b6cee71dSXin LI# TODO:
617b6cee71dSXin LI# DBASE index file *.NDX
618*43a5ec4eSXin LI# dBASE compiled Format *.FMO
619*43a5ec4eSXin LI# FoxPro Database memo file *.DCT
620*43a5ec4eSXin LI# FoxPro Forms Memo *.SCT
621*43a5ec4eSXin LI# FoxPro Generated Menu Program *.MPR
622*43a5ec4eSXin LI# FoxPro Report *.FRX
623*43a5ec4eSXin LI# FoxPro Report Memo *.FRT
624*43a5ec4eSXin LI# Foxpro Generated Screen Program *.SPR
625*43a5ec4eSXin LI# Foxpro memo *.PJT
626b6cee71dSXin LI## End of XBase database stuff
627b6cee71dSXin LI
628b6cee71dSXin LI# MS Access database
629b6cee71dSXin LI4	string	Standard\ Jet\ DB	Microsoft Access Database
630b6cee71dSXin LI!:mime	application/x-msaccess
631b6cee71dSXin LI4	string	Standard\ ACE\ DB	Microsoft Access Database
632b6cee71dSXin LI!:mime	application/x-msaccess
633b6cee71dSXin LI
6343e41d09dSXin LI# From: Joerg Jenderek
6353e41d09dSXin LI# URL: http://fileformats.archiveteam.org/wiki/Extensible_Storage_Engine
6363e41d09dSXin LI# Reference: https://github.com/libyal/libesedb/archive/master.zip
6373e41d09dSXin LI#	libesedb-master/documentation/
6383e41d09dSXin LI#	Extensible Storage Engine (ESE) Database File (EDB) format.asciidoc
6393e41d09dSXin LI# Note: also known as "JET Blue". Used by numerous Windows components such as
6403e41d09dSXin LI# Windows Search, Mail, Exchange and Active Directory.
6413e41d09dSXin LI4	ubelong		0xefcdab89
6423e41d09dSXin LI# unknown1
6433e41d09dSXin LI>132	ubelong		0		Extensible storage engine
6443e41d09dSXin LI!:mime	application/x-ms-ese
6453e41d09dSXin LI# file_type 0~database 1~stream
6463e41d09dSXin LI>>12	ulelong		0		DataBase
6473e41d09dSXin LI# Security DataBase (sdb)
6483e41d09dSXin LI!:ext	edb/sdb
6493e41d09dSXin LI>>12	ulelong		1		STreaMing
6503e41d09dSXin LI!:ext	stm
6513e41d09dSXin LI# format_version 620h
652*43a5ec4eSXin LI>>8	uleshort	x		\b, version %#x
653*43a5ec4eSXin LI>>10	uleshort	>0		revision %#4.4x
654*43a5ec4eSXin LI>>0	ubelong		x	 	\b, checksum %#8.8x
6553e41d09dSXin LI# Page size 4096 8192 32768
6563e41d09dSXin LI>>236	ulequad		x		\b, page size %lld
6573e41d09dSXin LI# database_state
6583e41d09dSXin LI>>52	ulelong		1		\b, JustCreated
6593e41d09dSXin LI>>52	ulelong		2		\b, DirtyShutdown
6603e41d09dSXin LI#>>52	ulelong		3		\b, CleanShutdown
6613e41d09dSXin LI>>52	ulelong		4		\b, BeingConverted
6623e41d09dSXin LI>>52	ulelong		5		\b, ForceDetach
6632726a701SXin LI# Windows NT major version when the databases indexes were updated.
6643e41d09dSXin LI>>216	ulelong		x		\b, Windows version %d
6652726a701SXin LI# Windows NT minor version
6663e41d09dSXin LI>>220	ulelong		x		\b.%d
6673e41d09dSXin LI
6683e41d09dSXin LI# From: Joerg Jenderek
66948c779cdSXin LI# URL: https://forensicswiki.org/wiki/Windows_Application_Compatibility
6703e41d09dSXin LI# Note: files contain application compatibility fixes, application compatibility modes and application help messages.
6713e41d09dSXin LI8	string		sdbf
6723e41d09dSXin LI>7	ubyte		0
6733e41d09dSXin LI# TAG_TYPE_LIST+TAG_INDEXES
6743e41d09dSXin LI>>12	uleshort	0x7802		Windows application compatibility Shim DataBase
6753e41d09dSXin LI# version? 2 3
6763e41d09dSXin LI#>>>0	ulelong		x		\b, version %d
6773e41d09dSXin LI!:mime	application/x-ms-sdb
6783e41d09dSXin LI!:ext	sdb
6793e41d09dSXin LI
680b6cee71dSXin LI# TDB database from Samba et al - Martin Pool <mbp@samba.org>
681b6cee71dSXin LI0	string	TDB\ file		TDB database
682b6cee71dSXin LI>32	lelong	0x2601196D		version 6, little-endian
683b6cee71dSXin LI>>36	lelong	x			hash size %d bytes
684b6cee71dSXin LI
685b6cee71dSXin LI# SE Linux policy database
686b6cee71dSXin LI0       lelong  0xf97cff8c      SE Linux policy
687b6cee71dSXin LI>16     lelong  x               v%d
688b6cee71dSXin LI>20     lelong  1      MLS
689b6cee71dSXin LI>24     lelong  x       %d symbols
690b6cee71dSXin LI>28     lelong  x       %d ocons
691b6cee71dSXin LI
692b6cee71dSXin LI# ICE authority file data (Wolfram Kleff)
693b6cee71dSXin LI2	string		ICE		ICE authority data
694b6cee71dSXin LI
695b6cee71dSXin LI# X11 Xauthority file (Wolfram Kleff)
696b6cee71dSXin LI10	string		MIT-MAGIC-COOKIE-1	X11 Xauthority data
697b6cee71dSXin LI11	string		MIT-MAGIC-COOKIE-1	X11 Xauthority data
698b6cee71dSXin LI12	string		MIT-MAGIC-COOKIE-1	X11 Xauthority data
699b6cee71dSXin LI13	string		MIT-MAGIC-COOKIE-1	X11 Xauthority data
700b6cee71dSXin LI14	string		MIT-MAGIC-COOKIE-1	X11 Xauthority data
701b6cee71dSXin LI15	string		MIT-MAGIC-COOKIE-1	X11 Xauthority data
702b6cee71dSXin LI16	string		MIT-MAGIC-COOKIE-1	X11 Xauthority data
703b6cee71dSXin LI17	string		MIT-MAGIC-COOKIE-1	X11 Xauthority data
704b6cee71dSXin LI18	string		MIT-MAGIC-COOKIE-1	X11 Xauthority data
705b6cee71dSXin LI
706b6cee71dSXin LI# From: Maxime Henrion <mux@FreeBSD.org>
707b6cee71dSXin LI# PostgreSQL's custom dump format, Maxime Henrion <mux@FreeBSD.org>
708b6cee71dSXin LI0	string		PGDMP		PostgreSQL custom database dump
709b6cee71dSXin LI>5	byte		x		- v%d
710b6cee71dSXin LI>6	byte		x		\b.%d
711b6cee71dSXin LI>5	beshort		<0x101		\b-0
712b6cee71dSXin LI>5	beshort		>0x100
713b6cee71dSXin LI>>7	byte		x		\b-%d
714b6cee71dSXin LI
715b6cee71dSXin LI# Type: Advanced Data Format (ADF) database
71648c779cdSXin LI# URL:  https://www.grc.nasa.gov/WWW/cgns/adf/
717b6cee71dSXin LI# From: Nicolas Chauvat <nicolas.chauvat@logilab.fr>
718b6cee71dSXin LI0	string	@(#)ADF\ Database	CGNS Advanced Data Format
719b6cee71dSXin LI
720b6cee71dSXin LI# Tokyo Cabinet magic data
721b6cee71dSXin LI# http://tokyocabinet.sourceforge.net/index.html
722b6cee71dSXin LI0	string		ToKyO\ CaBiNeT\n	Tokyo Cabinet
723b6cee71dSXin LI>14	string		x			\b (%s)
724b6cee71dSXin LI>32	byte		0			\b, Hash
725b6cee71dSXin LI!:mime	application/x-tokyocabinet-hash
726b6cee71dSXin LI>32	byte		1			\b, B+ tree
727b6cee71dSXin LI!:mime	application/x-tokyocabinet-btree
728b6cee71dSXin LI>32	byte		2			\b, Fixed-length
729b6cee71dSXin LI!:mime	application/x-tokyocabinet-fixed
730b6cee71dSXin LI>32	byte		3			\b, Table
731b6cee71dSXin LI!:mime	application/x-tokyocabinet-table
732b6cee71dSXin LI>33	byte		&1			\b, [open]
733b6cee71dSXin LI>33	byte		&2			\b, [fatal]
734b6cee71dSXin LI>34	byte		x			\b, apow=%d
735b6cee71dSXin LI>35	byte		x			\b, fpow=%d
736b6cee71dSXin LI>36	byte		&0x01			\b, [large]
737b6cee71dSXin LI>36	byte		&0x02			\b, [deflate]
738b6cee71dSXin LI>36	byte		&0x04			\b, [bzip]
739b6cee71dSXin LI>36	byte		&0x08			\b, [tcbs]
740b6cee71dSXin LI>36	byte		&0x10			\b, [excodec]
741b6cee71dSXin LI>40	lequad		x			\b, bnum=%lld
742b6cee71dSXin LI>48	lequad		x			\b, rnum=%lld
743b6cee71dSXin LI>56	lequad		x			\b, fsiz=%lld
744b6cee71dSXin LI
745b6cee71dSXin LI# Type:	QDBM Quick Database Manager
746b6cee71dSXin LI# From:	Benoit Sibaud <bsibaud@april.org>
747b6cee71dSXin LI0	string		\\[depot\\]\n\f		Quick Database Manager, little endian
748b6cee71dSXin LI0	string		\\[DEPOT\\]\n\f		Quick Database Manager, big endian
749b6cee71dSXin LI
750b6cee71dSXin LI# Type:	TokyoCabinet database
751b6cee71dSXin LI# URL:	http://tokyocabinet.sourceforge.net/
752b6cee71dSXin LI# From:	Benoit Sibaud <bsibaud@april.org>
753b6cee71dSXin LI0	string		ToKyO\ CaBiNeT\n	TokyoCabinet database
754b6cee71dSXin LI>14	string		x			(version %s)
755b6cee71dSXin LI
75648c779cdSXin LI# From:  Stephane Blondon https://www.yaal.fr
757b6cee71dSXin LI# Database file for Zope (done by FileStorage)
7589fc5c47fSXin LI0	string	FS21	Zope Object Database File Storage v3 (data)
7599fc5c47fSXin LI0	string	FS30	Zope Object Database File Storage v4 (data)
7609fc5c47fSXin LI
761b6cee71dSXin LI# Cache file for the database of Zope (done by ClientStorage)
762b6cee71dSXin LI0	string		ZEC3	Zope Object Database Client Cache File (data)
763b6cee71dSXin LI
764b6cee71dSXin LI# IDA (Interactive Disassembler) database
765b6cee71dSXin LI0	string		IDA1	IDA (Interactive Disassembler) database
7669ce06829SXin LI
76748c779cdSXin LI# Hopper (reverse engineering tool) https://www.hopperapp.com/
7689ce06829SXin LI0	string		hopperdb	Hopper database
7699ce06829SXin LI
7703e41d09dSXin LI# URL: https://en.wikipedia.org/wiki/Panorama_(database_engine)
7713e41d09dSXin LI# Reference: http://www.provue.com/Panorama/
7723e41d09dSXin LI# From: Joerg Jenderek
7733e41d09dSXin LI# NOTE: test only versions 4 and 6.0 with Windows
7743e41d09dSXin LI# length of Panorama database name
7753e41d09dSXin LI5	ubyte				>0
7763e41d09dSXin LI# look after database name for "some" null bits
7773e41d09dSXin LI>(5.B+7)	ubelong&0xF3ffF000	0
7783e41d09dSXin LI# look for first keyword
7793e41d09dSXin LI>>&1		search/2		DESIGN		Panorama database
7803e41d09dSXin LI#!:mime	application/x-panorama-database
7813e41d09dSXin LI!:apple	KASXZEPD
7823e41d09dSXin LI!:ext	pan
7833e41d09dSXin LI# database name
7843e41d09dSXin LI>>>5	pstring				x		\b, "%s"
785282e23f0SXin LI
786282e23f0SXin LI#
787282e23f0SXin LI#
788282e23f0SXin LI# askSam Database by Stefan A. Haubenthal <polluks@web.de>
789282e23f0SXin LI0	string	askw40\0	askSam DB
790282e23f0SXin LI
791282e23f0SXin LI#
792282e23f0SXin LI#
793282e23f0SXin LI# MUIbase Database Tool by Stefan A. Haubenthal <polluks@web.de>
794282e23f0SXin LI0	string	MBSTV\040	MUIbase DB
795282e23f0SXin LI>6	string	x		version %s
79640427ccaSGordon Tetlow
79740427ccaSGordon Tetlow#
79840427ccaSGordon Tetlow# CDB database
79940427ccaSGordon Tetlow0	string	NBCDB\012	NetBSD Constant Database
80040427ccaSGordon Tetlow>7	byte	x		\b, version %d
80140427ccaSGordon Tetlow>8	string	x		\b, for '%s'
80240427ccaSGordon Tetlow>24	lelong	x		\b, datasize %d
80340427ccaSGordon Tetlow>28	lelong	x		\b, entries %d
80440427ccaSGordon Tetlow>32	lelong	x		\b, index %d
80540427ccaSGordon Tetlow>36	lelong	x		\b, seed %#x
8062dc4dbb9SEitan Adler
8072dc4dbb9SEitan Adler#
8082dc4dbb9SEitan Adler# Redis RDB - https://redis.io/topics/persistence
8092dc4dbb9SEitan Adler0	string	REDIS			Redis RDB file,
8102dc4dbb9SEitan Adler>5	regex	[0-9][0-9][0-9][0-9]	version %s
8112dc4dbb9SEitan Adler
8122dc4dbb9SEitan Adler# Mork database.
8132dc4dbb9SEitan Adler# Used by older versions of Mozilla Suite and Firefox,
8142dc4dbb9SEitan Adler# and current versions of Thunderbird.
8152dc4dbb9SEitan Adler# From: David Korth <gerbilsoft@gerbilsoft.com>
8162dc4dbb9SEitan Adler0	string	//\ <!--\ <mdb:mork:z\ v="	Mozilla Mork database
8172dc4dbb9SEitan Adler>23	string	x		\b, version %.3s
8182726a701SXin LI
8192726a701SXin LI# URL:		https://en.wikipedia.org/wiki/Management_Information_Format
8202726a701SXin LI# Reference:	https://www.dmtf.org/sites/default/files/standards/documents/DSP0005.pdf
8212726a701SXin LI# From:		Joerg Jenderek
8222726a701SXin LI# Note:		only tested with monitor asset reports of Dell Display Manager
8232726a701SXin LI#		skip start like Language=fr|CA|iso8859-1
8242726a701SXin LI0	search/27/C	Start\040Component	DMI Management Information Format
8252726a701SXin LI#!:mime	text/plain
8262726a701SXin LI!:mime	text/x-dmtf-mif
8272726a701SXin LI!:ext	mif
8282726a701SXin LI
829