xref: /dflybsd-src/contrib/file/magic/Magdir/database (revision 739f0ef867128a933e021db3d831e906fcafd825)
1327e51cbSPeter Avalos
2327e51cbSPeter Avalos#------------------------------------------------------------------------------
3*3b9cdfa3SAntonio Huete Jimenez# $File: database,v 1.67 2022/07/12 18:57:42 christos Exp $
4327e51cbSPeter Avalos# database:  file(1) magic for various databases
5327e51cbSPeter Avalos#
6327e51cbSPeter Avalos# extracted from header/code files by Graeme Wilford (eep2gw@ee.surrey.ac.uk)
7327e51cbSPeter Avalos#
8327e51cbSPeter Avalos#
9327e51cbSPeter Avalos# GDBM magic numbers
10327e51cbSPeter Avalos#  Will be maintained as part of the GDBM distribution in the future.
11327e51cbSPeter Avalos#  <downsj@teeny.org>
1282c5fa3eSPeter Avalos0	belong	0x13579acd	GNU dbm 1.x or ndbm database, big endian, 32-bit
1379343712SPeter Avalos!:mime	application/x-gdbm
1482c5fa3eSPeter Avalos0	belong	0x13579ace	GNU dbm 1.x or ndbm database, big endian, old
1582c5fa3eSPeter Avalos!:mime	application/x-gdbm
1682c5fa3eSPeter Avalos0	belong	0x13579acf	GNU dbm 1.x or ndbm database, big endian, 64-bit
1782c5fa3eSPeter Avalos!:mime	application/x-gdbm
1882c5fa3eSPeter Avalos0	lelong	0x13579acd	GNU dbm 1.x or ndbm database, little endian, 32-bit
1982c5fa3eSPeter Avalos!:mime	application/x-gdbm
2082c5fa3eSPeter Avalos0	lelong	0x13579ace	GNU dbm 1.x or ndbm database, little endian, old
2182c5fa3eSPeter Avalos!:mime	application/x-gdbm
2282c5fa3eSPeter Avalos0	lelong	0x13579acf	GNU dbm 1.x or ndbm database, little endian, 64-bit
2379343712SPeter Avalos!:mime	application/x-gdbm
24327e51cbSPeter Avalos0	string	GDBM		GNU dbm 2.x database
2579343712SPeter Avalos!:mime	application/x-gdbm
26327e51cbSPeter Avalos#
27327e51cbSPeter Avalos# Berkeley DB
28327e51cbSPeter Avalos#
29327e51cbSPeter Avalos# Ian Darwin's file /etc/magic files: big/little-endian version.
30327e51cbSPeter Avalos#
31327e51cbSPeter Avalos# Hash 1.85/1.86 databases store metadata in network byte order.
32327e51cbSPeter Avalos# Btree 1.85/1.86 databases store the metadata in host byte order.
33327e51cbSPeter Avalos# Hash and Btree 2.X and later databases store the metadata in host byte order.
34327e51cbSPeter Avalos
35327e51cbSPeter Avalos0	long	0x00061561	Berkeley DB
3679343712SPeter Avalos!:mime	application/x-dbm
37327e51cbSPeter Avalos>8	belong	4321
38327e51cbSPeter Avalos>>4	belong	>2		1.86
39327e51cbSPeter Avalos>>4	belong	<3		1.85
40327e51cbSPeter Avalos>>4	belong	>0		(Hash, version %d, native byte-order)
41327e51cbSPeter Avalos>8	belong	1234
42327e51cbSPeter Avalos>>4	belong	>2		1.86
43327e51cbSPeter Avalos>>4	belong	<3		1.85
44327e51cbSPeter Avalos>>4	belong	>0		(Hash, version %d, little-endian)
45327e51cbSPeter Avalos
46327e51cbSPeter Avalos0	belong	0x00061561	Berkeley DB
47327e51cbSPeter Avalos>8	belong	4321
48327e51cbSPeter Avalos>>4	belong	>2		1.86
49327e51cbSPeter Avalos>>4	belong	<3		1.85
50327e51cbSPeter Avalos>>4	belong	>0		(Hash, version %d, big-endian)
51327e51cbSPeter Avalos>8	belong	1234
52327e51cbSPeter Avalos>>4	belong	>2		1.86
53327e51cbSPeter Avalos>>4	belong	<3		1.85
54327e51cbSPeter Avalos>>4	belong	>0		(Hash, version %d, native byte-order)
55327e51cbSPeter Avalos
56327e51cbSPeter Avalos0	long	0x00053162	Berkeley DB 1.85/1.86
57327e51cbSPeter Avalos>4	long	>0		(Btree, version %d, native byte-order)
58327e51cbSPeter Avalos0	belong	0x00053162	Berkeley DB 1.85/1.86
59327e51cbSPeter Avalos>4	belong	>0		(Btree, version %d, big-endian)
60327e51cbSPeter Avalos0	lelong	0x00053162	Berkeley DB 1.85/1.86
61327e51cbSPeter Avalos>4	lelong	>0		(Btree, version %d, little-endian)
62327e51cbSPeter Avalos
63327e51cbSPeter Avalos12	long	0x00061561	Berkeley DB
64327e51cbSPeter Avalos>16	long	>0		(Hash, version %d, native byte-order)
65327e51cbSPeter Avalos12	belong	0x00061561	Berkeley DB
66327e51cbSPeter Avalos>16	belong	>0		(Hash, version %d, big-endian)
67327e51cbSPeter Avalos12	lelong	0x00061561	Berkeley DB
68327e51cbSPeter Avalos>16	lelong	>0		(Hash, version %d, little-endian)
69327e51cbSPeter Avalos
70327e51cbSPeter Avalos12	long	0x00053162	Berkeley DB
71327e51cbSPeter Avalos>16	long	>0		(Btree, version %d, native byte-order)
72327e51cbSPeter Avalos12	belong	0x00053162	Berkeley DB
73327e51cbSPeter Avalos>16	belong	>0		(Btree, version %d, big-endian)
74327e51cbSPeter Avalos12	lelong	0x00053162	Berkeley DB
75327e51cbSPeter Avalos>16	lelong	>0		(Btree, version %d, little-endian)
76327e51cbSPeter Avalos
77327e51cbSPeter Avalos12	long	0x00042253	Berkeley DB
78327e51cbSPeter Avalos>16	long	>0		(Queue, version %d, native byte-order)
79327e51cbSPeter Avalos12	belong	0x00042253	Berkeley DB
80327e51cbSPeter Avalos>16	belong	>0		(Queue, version %d, big-endian)
81327e51cbSPeter Avalos12	lelong	0x00042253	Berkeley DB
82327e51cbSPeter Avalos>16	lelong	>0		(Queue, version %d, little-endian)
83327e51cbSPeter Avalos
84327e51cbSPeter Avalos# From Max Bowsher.
85327e51cbSPeter Avalos12	long	0x00040988	Berkeley DB
86327e51cbSPeter Avalos>16	long	>0		(Log, version %d, native byte-order)
87327e51cbSPeter Avalos12	belong	0x00040988	Berkeley DB
88327e51cbSPeter Avalos>16	belong	>0		(Log, version %d, big-endian)
89327e51cbSPeter Avalos12	lelong	0x00040988	Berkeley DB
90327e51cbSPeter Avalos>16	lelong	>0		(Log, version %d, little-endian)
91327e51cbSPeter Avalos
92327e51cbSPeter Avalos#
93327e51cbSPeter Avalos#
94327e51cbSPeter Avalos# Round Robin Database Tool by Tobias Oetiker <oetiker@ee.ethz.ch>
95e8af9738SPeter Avalos0	string/b	RRD\0		RRDTool DB
96e8af9738SPeter Avalos>4	string/b	x		version %s
97e8af9738SPeter Avalos
98e8af9738SPeter Avalos>>10	short		!0		16bit aligned
99e8af9738SPeter Avalos>>>10	bedouble	8.642135e+130	big-endian
100e8af9738SPeter Avalos>>>>18	short		x		32bit long (m68k)
101e8af9738SPeter Avalos
102e8af9738SPeter Avalos>>10	short		0
103e8af9738SPeter Avalos>>>12	long		!0		32bit aligned
104e8af9738SPeter Avalos>>>>12	bedouble	8.642135e+130	big-endian
105e8af9738SPeter Avalos>>>>>20 long		0		64bit long
106e8af9738SPeter Avalos>>>>>20 long		!0		32bit long
107e8af9738SPeter Avalos>>>>12	ledouble	8.642135e+130	little-endian
108e8af9738SPeter Avalos>>>>>24 long		0		64bit long
109e8af9738SPeter Avalos>>>>>24 long		!0		32bit long (i386)
110e8af9738SPeter Avalos>>>>12	string		\x43\x2b\x1f\x5b\x2f\x25\xc0\xc7	middle-endian
111e8af9738SPeter Avalos>>>>>24 short		!0		32bit long (arm)
112e8af9738SPeter Avalos
113e8af9738SPeter Avalos>>8	quad		0		64bit aligned
114e8af9738SPeter Avalos>>>16	bedouble	8.642135e+130	big-endian
115e8af9738SPeter Avalos>>>>24	long		0		64bit long (s390x)
11682c5fa3eSPeter Avalos>>>>24	long		!0		32bit long (hppa/mips/ppc/s390/SPARC)
117e8af9738SPeter Avalos>>>16	ledouble	8.642135e+130	little-endian
118e8af9738SPeter Avalos>>>>28	long		0		64bit long (alpha/amd64/ia64)
119e8af9738SPeter Avalos>>>>28	long		!0		32bit long (armel/mipsel)
120e8af9738SPeter Avalos
121327e51cbSPeter Avalos#----------------------------------------------------------------------
122327e51cbSPeter Avalos# ROOT: file(1) magic for ROOT databases
123327e51cbSPeter Avalos#
124327e51cbSPeter Avalos0       string  root\0  ROOT file
125327e51cbSPeter Avalos>4      belong  x       Version %d
126327e51cbSPeter Avalos>33     belong  x       (Compression: %d)
127327e51cbSPeter Avalos
128327e51cbSPeter Avalos# XXX: Weak magic.
129327e51cbSPeter Avalos# Alex Ott <ott@jet.msk.su>
130327e51cbSPeter Avalos## Paradox file formats
131327e51cbSPeter Avalos#2	  leshort	0x0800	Paradox
132327e51cbSPeter Avalos#>0x39	  byte		3	v. 3.0
133327e51cbSPeter Avalos#>0x39	  byte		4	v. 3.5
134327e51cbSPeter Avalos#>0x39	  byte		9	v. 4.x
135327e51cbSPeter Avalos#>0x39	  byte		10	v. 5.x
136327e51cbSPeter Avalos#>0x39	  byte		11	v. 5.x
137327e51cbSPeter Avalos#>0x39	  byte		12	v. 7.x
138327e51cbSPeter Avalos#>>0x04	  byte		0	indexed .DB data file
139327e51cbSPeter Avalos#>>0x04	  byte		1	primary index .PX file
140327e51cbSPeter Avalos#>>0x04	  byte		2	non-indexed .DB data file
141327e51cbSPeter Avalos#>>0x04	  byte		3	non-incrementing secondary index .Xnn file
142327e51cbSPeter Avalos#>>0x04	  byte		4	secondary index .Ynn file
143327e51cbSPeter Avalos#>>0x04	  byte		5	incrementing secondary index .Xnn file
144327e51cbSPeter Avalos#>>0x04	  byte		6	non-incrementing secondary index .XGn file
145327e51cbSPeter Avalos#>>0x04	  byte		7	secondary index .YGn file
146327e51cbSPeter Avalos#>>>0x04	  byte		8	incrementing secondary index .XGn file
14779343712SPeter Avalos
148327e51cbSPeter Avalos## XBase database files
149e8af9738SPeter Avalos# updated by Joerg Jenderek at Feb 2013
1506fca56fbSSascha Wildner# https://www.dbase.com/Knowledgebase/INT/db7_file_fmt.htm
1516fca56fbSSascha Wildner# https://www.clicketyclick.dk/databases/xbase/format/dbf.html
152e8af9738SPeter Avalos# inspect VVYYMMDD , where 1<= MM <= 12 and 1<= DD <= 31
153e8af9738SPeter Avalos0	ubelong&0x0000FFFF		<0x00000C20
154*3b9cdfa3SAntonio Huete Jimenez!:strength +10
155e8af9738SPeter Avalos# skip Infocom game Z-machine
156e8af9738SPeter Avalos>2		ubyte			>0
157e8af9738SPeter Avalos# skip Androids *.xml
158e8af9738SPeter Avalos>>3		ubyte			>0
159e8af9738SPeter Avalos>>>3		ubyte			<32
160e8af9738SPeter Avalos# 1 < version VV
161e8af9738SPeter Avalos>>>>0		ubyte			>1
162e8af9738SPeter Avalos# skip HELP.CA3 by test for reserved byte ( NULL )
163e8af9738SPeter Avalos>>>>>27		ubyte			0
164e8af9738SPeter Avalos# reserved bytes not always 0 ; also found 0x3901 (T4.DBF) ,0x7101 (T5.DBF,T6.DBF)
165e8af9738SPeter Avalos#>>>>>30		ubeshort     		x		30NULL?%x
166e8af9738SPeter Avalos# possible production flag,tag numbers(<=0x30),tag length(<=0x20), reserved (NULL)
167e8af9738SPeter Avalos>>>>>>24	ubelong&0xffFFFFff	>0x01302000
168e8af9738SPeter Avalos# .DBF or .MDX
169e8af9738SPeter Avalos>>>>>>24	ubelong&0xffFFFFff	<0x01302001
170e8af9738SPeter Avalos# for Xbase Database file (*.DBF) reserved (NULL) for multi-user
171e8af9738SPeter Avalos>>>>>>>24	ubelong&0xffFFFFff	=0
172e8af9738SPeter Avalos# test for 2 reserved NULL bytes,transaction and encryption byte flag
173e8af9738SPeter Avalos>>>>>>>>12	ubelong&0xFFFFfEfE	0
174e8af9738SPeter Avalos# test for MDX flag
175e8af9738SPeter Avalos>>>>>>>>>28	ubyte			x
176e8af9738SPeter Avalos>>>>>>>>>28	ubyte&0xf8		0
177e8af9738SPeter Avalos# header size >= 32
178e8af9738SPeter Avalos>>>>>>>>>>8	uleshort		>31
179e8af9738SPeter Avalos# skip PIC15736.PCX by test for language driver name or field name
180e8af9738SPeter Avalos>>>>>>>>>>>32	ubyte			>0
181e8af9738SPeter Avalos#!:mime	application/x-dbf; charset=unknown-8bit ??
182e8af9738SPeter Avalos#!:mime	application/x-dbase
183e8af9738SPeter Avalos>>>>>>>>>>>>0	use			xbase-type
184e8af9738SPeter Avalos# database file
185614728caSSascha Wildner>>>>>>>>>>>>28	ubyte&0x04		=0		\b DBF
186614728caSSascha Wildner!:ext	dbf
187614728caSSascha Wildner>>>>>>>>>>>>28	ubyte&0x04		=4		\b DataBaseContainer
188614728caSSascha Wildner!:ext	dbc
189e8af9738SPeter Avalos>>>>>>>>>>>>4	lelong			0		\b, no records
19082c5fa3eSPeter Avalos>>>>>>>>>>>>4	lelong			>0		\b, %d record
191e8af9738SPeter Avalos# plural s appended
192e8af9738SPeter Avalos>>>>>>>>>>>>>4	lelong			>1		\bs
1936fca56fbSSascha Wildner# https://www.clicketyclick.dk/databases/xbase/format/dbf_check.html#CHECK_DBF
194e8af9738SPeter Avalos# 1 <= record size <= 4000 (dBase 3,4) or 32 * KB (=0x8000)
195e8af9738SPeter Avalos>>>>>>>>>>>>10	uleshort		x		* %d
196e8af9738SPeter Avalos# file size = records * record size + header size
197e8af9738SPeter Avalos>>>>>>>>>>>>1	ubyte			x		\b, update-date
198e8af9738SPeter Avalos>>>>>>>>>>>>1	use			xbase-date
1996fca56fbSSascha Wildner# https://msdn.microsoft.com/de-de/library/cc483186(v=vs.71).aspx
200614728caSSascha Wildner#>>>>>>>>>>>>29	ubyte			=0		\b, codepage ID=%#x
201e8af9738SPeter Avalos# 2~cp850 , 3~cp1252 , 0x1b~?? ; what code page is 0x1b ?
202614728caSSascha Wildner>>>>>>>>>>>>29	ubyte			>0		\b, codepage ID=%#x
203e8af9738SPeter Avalos#>>>>>>>>>>>>28	ubyte&0x01		0		\b, no index file
204614728caSSascha Wildner# MDX or CDX index
205e8af9738SPeter Avalos>>>>>>>>>>>>28	ubyte&0x01		1		\b, with index file .MDX
206e8af9738SPeter Avalos>>>>>>>>>>>>28	ubyte&0x02		2		\b, with memo .FPT
207614728caSSascha Wildner#>>>>>>>>>>>>28	ubyte&0x04		4		\b, DataBaseContainer
208e8af9738SPeter Avalos# 1st record offset + 1 = header size
209e8af9738SPeter Avalos>>>>>>>>>>>>8	uleshort		>0
210e8af9738SPeter Avalos>>>>>>>>>>>>(8.s+1)	ubyte		>0
211e8af9738SPeter Avalos>>>>>>>>>>>>>8		uleshort	>0		\b, at offset %d
212e8af9738SPeter Avalos>>>>>>>>>>>>>(8.s+1)	ubyte		>0
213e8af9738SPeter Avalos>>>>>>>>>>>>>>&-1	string		>\0		1st record "%s"
214c30bd091SSascha Wildner# for multiple index files (*.MDX) Production flag,tag numbers(<=0x30),tag length(<=0x20), reserved (NULL)
215e8af9738SPeter Avalos>>>>>>>24	ubelong&0x0133f7ff	>0
216e8af9738SPeter Avalos# test for reserved NULL byte
21782c5fa3eSPeter Avalos>>>>>>>>47	ubyte			0
218e8af9738SPeter Avalos# test for valid TAG key format (0x10 or 0)
219e8af9738SPeter Avalos>>>>>>>>>559	ubyte&0xeF		0
220e8af9738SPeter Avalos# test MM <= 12
22182c5fa3eSPeter Avalos>>>>>>>>>>45	ubeshort		<0x0C20
22282c5fa3eSPeter Avalos>>>>>>>>>>>45	ubyte			>0
22382c5fa3eSPeter Avalos>>>>>>>>>>>>46	ubyte			<32
22482c5fa3eSPeter Avalos>>>>>>>>>>>>>46	ubyte			>0
225e8af9738SPeter Avalos#!:mime	application/x-mdx
22682c5fa3eSPeter Avalos>>>>>>>>>>>>>>0		use		xbase-type
22782c5fa3eSPeter Avalos>>>>>>>>>>>>>>0		ubyte		x		\b MDX
22882c5fa3eSPeter Avalos>>>>>>>>>>>>>>1		ubyte		x		\b, creation-date
22982c5fa3eSPeter Avalos>>>>>>>>>>>>>>1		use		xbase-date
23082c5fa3eSPeter Avalos>>>>>>>>>>>>>>44	ubyte		x		\b, update-date
23182c5fa3eSPeter Avalos>>>>>>>>>>>>>>44	use		xbase-date
232e8af9738SPeter Avalos# No.of tags in use (1,2,5,12)
23382c5fa3eSPeter Avalos>>>>>>>>>>>>>>28	uleshort	x		\b, %d
234e8af9738SPeter Avalos# No. of entries in tag (0x30)
23582c5fa3eSPeter Avalos>>>>>>>>>>>>>>25	ubyte		x		\b/%d tags
236e8af9738SPeter Avalos#  Length of tag
23782c5fa3eSPeter Avalos>>>>>>>>>>>>>>26	ubyte		x		* %d
238e8af9738SPeter Avalos# 1st tag name_
239e8af9738SPeter Avalos>>>>>>>>>>>>>548	string		x		\b, 1st tag "%.11s"
240e8af9738SPeter Avalos# 2nd tag name
241e8af9738SPeter Avalos#>>>>>>>>>>>>(26.b+548)	string		x		\b, 2nd tag "%.11s"
242327e51cbSPeter Avalos#
243e8af9738SPeter Avalos#		Print the xBase names of different version variants
244e8af9738SPeter Avalos0	name				xbase-type
245e8af9738SPeter Avalos>0	ubyte		<2
246e8af9738SPeter Avalos# 1 < version
247e8af9738SPeter Avalos>0	ubyte		>1
248e8af9738SPeter Avalos>>0	ubyte		0x02		FoxBase
249614728caSSascha Wildner!:mime	application/x-dbf
250614728caSSascha Wildner# like: ACCESS.DBF USER.DBF dbase3date.dbf mitarbei.dbf produkte.dbf umlaut-test-v2.dbf
251e8af9738SPeter Avalos# FoxBase+/dBaseIII+, no memo
252e8af9738SPeter Avalos>>0	ubyte		0x03		FoxBase+/dBase III
253e8af9738SPeter Avalos!:mime	application/x-dbf
254614728caSSascha Wildner# like: 92DATA.DBF MSCATLOG.DBF SYLLABI2.DBF SYLLABUS.DBF T4.DBF Teleadr.dbf us_city.dbf
255e8af9738SPeter Avalos# dBASE IV no memo file
256e8af9738SPeter Avalos>>0	ubyte		0x04		dBase IV
257e8af9738SPeter Avalos!:mime	application/x-dbf
258614728caSSascha Wildner# like: Quattro-test11.dbf umlaut-test-v4.dbf
259e8af9738SPeter Avalos# dBASE V no memo file
260e8af9738SPeter Avalos>>0	ubyte		0x05		dBase V
261e8af9738SPeter Avalos!:mime	application/x-dbf
262614728caSSascha Wildner# like: dbase4double.dbf Quattro-test2.dbf umlaut-test7.dbf
263614728caSSascha Wildner!:ext	dbf
264614728caSSascha Wildner# probably Apollo Database Server 9.7? xBase (0x6)
265614728caSSascha Wildner>>0	ubyte		0x06		Apollo
266614728caSSascha Wildner!:mime	application/x-dbf
267614728caSSascha Wildner# like: ALIAS.DBF CRYPT.DBF PROCS.DBF USERS.DBF
268614728caSSascha Wildner# https://docs.microsoft.com/en-us/previous-versions/visualstudio/foxpro/st4a0s68(v=vs.80)
269614728caSSascha Wildner>>0	ubyte		0x2F		FoxBase+/Dbase III plus, no memo
270614728caSSascha Wildner!:mime	application/x-dbf
271614728caSSascha Wildner# no example
272e8af9738SPeter Avalos>>0	ubyte		0x30		Visual FoxPro
273e8af9738SPeter Avalos!:mime	application/x-dbf
274614728caSSascha Wildner# like: 26FRX.DBF 30DBC.DBF 30DBCPRO.DBF BEHINDSC.DBF USER_LEV.DBF
275614728caSSascha Wildner# Microsoft Visual FoxPro Database Container File like: FOXPRO-DB-TEST.DBC TESTDATA.DBC TASTRADE.DBC
276e8af9738SPeter Avalos>>0	ubyte		0x31		Visual FoxPro, autoincrement
277e8af9738SPeter Avalos!:mime	application/x-dbf
278614728caSSascha Wildner# like: AI_Table.DBF dbase_31.dbf w_cityFoxpro.dbf
279e8af9738SPeter Avalos# Visual FoxPro, with field type Varchar or Varbinary
280e8af9738SPeter Avalos>>0	ubyte		0x32		Visual FoxPro, with field type Varchar
281e8af9738SPeter Avalos!:mime	application/x-dbf
282614728caSSascha Wildner# like: dbase_32.dbf
283e8af9738SPeter Avalos# dBASE IV SQL, no memo;dbv memo var size (Flagship)
284e8af9738SPeter Avalos>>0	ubyte		0x43		dBase IV, with SQL table
285e8af9738SPeter Avalos!:mime	application/x-dbf
286614728caSSascha Wildner# like: ASSEMBLY.DBF INVENTRY.DBF STAFF.DBF
287614728caSSascha Wildner# https://docs.microsoft.com/en-us/previous-versions/visualstudio/foxpro/st4a0s68(v=vs.80)
288614728caSSascha Wildner>>0	ubyte		0x62		dBase IV, with SQL table
28979343712SPeter Avalos#!:mime	application/x-dbf
290614728caSSascha Wildner# no example
291e8af9738SPeter Avalos# dBASE IV, with memo!!
292e8af9738SPeter Avalos>>0	ubyte		0x7b		dBase IV, with memo
293e8af9738SPeter Avalos!:mime	application/x-dbf
294614728caSSascha Wildner# like: test3memo.DBF dbase5.DBF
295614728caSSascha Wildner# https://docs.microsoft.com/en-us/previous-versions/visualstudio/foxpro/st4a0s68(v=vs.80)
296614728caSSascha Wildner>>0	ubyte		0x82		dBase IV, with SQL system
29779343712SPeter Avalos#!:mime	application/x-dbf
298614728caSSascha Wildner# no example
299e8af9738SPeter Avalos# FoxBase+/dBaseIII+ with memo .DBT!
300e8af9738SPeter Avalos>>0	ubyte		0x83		FoxBase+/dBase III, with memo .DBT
301e8af9738SPeter Avalos!:mime	application/x-dbf
302614728caSSascha Wildner# like: T2.DBF t3.DBF biblio.dbf dbase_83.dbf dbase3dbt0_4.dbf fsadress.dbf stop.dbf
303e8af9738SPeter Avalos# VISUAL OBJECTS (first 1.0 versions) for the Dbase III files (NTX clipper driver); memo file
304e8af9738SPeter Avalos>>0	ubyte		0x87		VISUAL OBJECTS, with memo file
305e8af9738SPeter Avalos!:mime	application/x-dbf
306614728caSSascha Wildner# like: ACCESS.DBF dbase3date.dbf dbase3float.dbf holdings.dbf mitarbei.dbf
307614728caSSascha Wildner# https://docs.microsoft.com/en-us/previous-versions/visualstudio/foxpro/st4a0s68(v=vs.80)
308614728caSSascha Wildner>>0	ubyte		0x8A		FoxBase+/dBase III, with memo .DBT
30979343712SPeter Avalos#!:mime	application/x-dbf
310614728caSSascha Wildner# no example
311e8af9738SPeter Avalos# dBASE IV with memo!
312e8af9738SPeter Avalos>>0	ubyte		0x8B		dBase IV, with memo .DBT
313e8af9738SPeter Avalos!:mime	application/x-dbf
314614728caSSascha Wildner# like: animals.dbf archive.dbf callin.dbf dbase_8b.dbf phnebook.dbf t6.dbf
315e8af9738SPeter Avalos# dBase IV with SQL Table,no memo?
316e8af9738SPeter Avalos>>0	ubyte		0x8E		dBase IV, with SQL table
317e8af9738SPeter Avalos!:mime	application/x-dbf
318614728caSSascha Wildner# like: dbase5.DBF test3memo.DBF test-memo.DBF
319e8af9738SPeter Avalos# .dbv and .dbt memo (Flagship)?
320e8af9738SPeter Avalos>>0	ubyte		0xB3		Flagship
321614728caSSascha Wildner!:mime	application/x-dbf
322614728caSSascha Wildner# no example
323614728caSSascha Wildner# https://docs.microsoft.com/en-us/previous-versions/visualstudio/foxpro/st4a0s68(v=vs.80)
324614728caSSascha Wildner>>0	ubyte		0xCA		dBase IV with memo .DBT
32579343712SPeter Avalos#!:mime	application/x-dbf
326614728caSSascha Wildner# no example
327e8af9738SPeter Avalos# dBASE IV with SQL table, with memo .DBT
328e8af9738SPeter Avalos>>0	ubyte		0xCB		dBase IV with SQL table, with memo .DBT
329e8af9738SPeter Avalos!:mime	application/x-dbf
330614728caSSascha Wildner# like: dbase5.DBF test3memo.DBF test-memo.DBF
331e8af9738SPeter Avalos# HiPer-Six format;Clipper SIX, with SMT memo file
332e8af9738SPeter Avalos>>0	ubyte		0xE5		Clipper SIX with memo
333e8af9738SPeter Avalos!:mime	application/x-dbf
334614728caSSascha Wildner# like: dbase5.DBF test3memo.DBF test-memo.DBF testClipper.dbf DATA.DBF
335614728caSSascha Wildner# https://docs.microsoft.com/en-us/previous-versions/visualstudio/foxpro/st4a0s68(v=vs.80)
336614728caSSascha Wildner>>0	ubyte		0xF4		dBase IV, with SQL table, with memo
33779343712SPeter Avalos#!:mime	application/x-dbf
338614728caSSascha Wildner# no example
339e8af9738SPeter Avalos>>0	ubyte		0xF5		FoxPro with memo
340e8af9738SPeter Avalos!:mime	application/x-dbf
341614728caSSascha Wildner# like: CUSTOMER.DBF FOXUSER1.DBF Invoice.DBF NG.DBF OBJSAMP.DBF dbase_f5.dbf kunde.dbf
342614728caSSascha Wildner# probably Apollo Database Server 9.7 with SQL and memo mask? xBase (0xF6)
343614728caSSascha Wildner>>0	ubyte		0xF6		Apollo, with SQL table with memo
344614728caSSascha Wildner!:mime	application/x-dbf
345614728caSSascha Wildner# like: SCRIPTS.DBF
346614728caSSascha Wildner# https://docs.microsoft.com/en-us/previous-versions/visualstudio/foxpro/st4a0s68(v=vs.80)
347e8af9738SPeter Avalos#>>0	ubyte		0xFA		FoxPro 2.x, with memo
34879343712SPeter Avalos#!:mime	application/x-dbf
349614728caSSascha Wildner# no example
350e8af9738SPeter Avalos# unknown version (should not happen)
351e8af9738SPeter Avalos>>0	default		x		xBase
352e8af9738SPeter Avalos!:mime	application/x-dbf
353614728caSSascha Wildner>>>0	ubyte		x		(%#x)
354e8af9738SPeter Avalos# flags in version byte
355e8af9738SPeter Avalos# DBT flag (with dBASE III memo .DBT)!!
356e8af9738SPeter Avalos# >>0	ubyte&0x80	>0		DBT_FLAG=%x
357e8af9738SPeter Avalos# memo flag ??
358e8af9738SPeter Avalos# >>0	ubyte&0x08	>0		MEMO_FLAG=%x
359e8af9738SPeter Avalos# SQL flag ??
360e8af9738SPeter Avalos# >>0	ubyte&0x70	>0		SQL_FLAG=%x
361e8af9738SPeter Avalos#		test and print the date of xBase .DBF .MDX
362e8af9738SPeter Avalos0	name				xbase-date
363e8af9738SPeter Avalos# inspect YYMMDD , where 1<= MM <= 12 and 1<= DD <= 31
364e8af9738SPeter Avalos>0	ubelong		x
365e8af9738SPeter Avalos>1	ubyte		<13
366e8af9738SPeter Avalos>>1	ubyte		>0
367e8af9738SPeter Avalos>>>2	ubyte		>0
368e8af9738SPeter Avalos>>>>2	ubyte		<32
369e8af9738SPeter Avalos>>>>>0	ubyte		x
370e8af9738SPeter Avalos# YY is interpreted as 20YY or 19YY
371e8af9738SPeter Avalos>>>>>>0	ubyte		<100		\b %.2d
372e8af9738SPeter Avalos# YY is interpreted 1900+YY; TODO: display yy or 20yy instead 1YY
373e8af9738SPeter Avalos>>>>>>0	ubyte		>99		\b %d
374e8af9738SPeter Avalos>>>>>1	ubyte		x		\b-%d
375e8af9738SPeter Avalos>>>>>2	ubyte		x		\b-%d
376e8af9738SPeter Avalos
377e8af9738SPeter Avalos#	dBase memo files .DBT or .FPT
3786fca56fbSSascha Wildner# https://msdn.microsoft.com/en-us/library/8599s21w(v=vs.80).aspx
379e8af9738SPeter Avalos16		ubyte		<4
380e8af9738SPeter Avalos>16		ubyte		!2
381e8af9738SPeter Avalos>>16		ubyte		!1
382e8af9738SPeter Avalos# next free block index is positive
383e8af9738SPeter Avalos>>>0		ulelong		>0
384e8af9738SPeter Avalos# skip many JPG. ZIP, BZ2 by test for reserved bytes NULL , 0|2 , 0|1 , low byte of block size
3856fca56fbSSascha Wildner>>>>17		ubelong&0xFFfdFEff	0x00000000
386e8af9738SPeter Avalos# skip many RAR by test for low byte 0 ,high byte 0|2|even of block size, 0|a|e|d7 , 0|64h
387e8af9738SPeter Avalos>>>>>20		ubelong&0xFF01209B	0x00000000
388e8af9738SPeter Avalos# dBASE III
389e8af9738SPeter Avalos>>>>>>16	ubyte		3
390e8af9738SPeter Avalos# dBASE III DBT
39182c5fa3eSPeter Avalos>>>>>>>0	use		dbase3-memo-print
39282c5fa3eSPeter Avalos# dBASE III DBT without version, dBASE IV DBT , FoxPro FPT , or many ZIP , DBF garbage
393e8af9738SPeter Avalos>>>>>>16	ubyte		0
39482c5fa3eSPeter Avalos# unusual dBASE III DBT like angest.dbt, dBASE IV DBT with block size 0 , FoxPro FPT ,  or garbage PCX DBF
39582c5fa3eSPeter Avalos>>>>>>>20	uleshort	0
39682c5fa3eSPeter Avalos# FoxPro FPT , unusual dBASE III DBT like biblio.dbt or garbage
39782c5fa3eSPeter Avalos>>>>>>>>8	ulong		=0
39882c5fa3eSPeter Avalos>>>>>>>>>6	ubeshort	>0
39982c5fa3eSPeter Avalos# skip emacs.PIF
40082c5fa3eSPeter Avalos>>>>>>>>>>4	ushort		0
4016fca56fbSSascha Wildner# check for valid FoxPro field type
4026fca56fbSSascha Wildner>>>>>>>>>>>512	ubelong		<3
403*3b9cdfa3SAntonio Huete Jimenez# skip LXMDCLN4.OUT LXMDCLN6.OUT LXMDALG6.OUT with invalid blocksize 170=AAh
404*3b9cdfa3SAntonio Huete Jimenez>>>>>>>>>>>>6	ubeshort&0x002f	0
405*3b9cdfa3SAntonio Huete Jimenez>>>>>>>>>>>>>0	use		foxpro-memo-print
40682c5fa3eSPeter Avalos# dBASE III DBT , garbage
4076fca56fbSSascha Wildner# skip WORD1XW.DOC with improbably high free block index
408c990e5baSDaniel Fojt>>>>>>>>>0	ulelong		<0x400000
409c990e5baSDaniel Fojt# skip WinStore.App.exe by looking for printable 2nd character of 1st memo item
410c990e5baSDaniel Fojt>>>>>>>>>>513	ubyte		>037
411*3b9cdfa3SAntonio Huete Jimenez# skip DOS executables CPQ0TD.DRV E30ODI.COM IBM0MONO.DRV by looking for printable 1st character of 1st memo item
412*3b9cdfa3SAntonio Huete Jimenez>>>>>>>>>>>512	ubyte		>037
41382c5fa3eSPeter Avalos# unusual dBASE III DBT like adressen.dbt
414*3b9cdfa3SAntonio Huete Jimenez>>>>>>>>>>>>0	use		dbase3-memo-print
41582c5fa3eSPeter Avalos# dBASE III DBT like angest.dbt, or garbage PCX DBF
41682c5fa3eSPeter Avalos>>>>>>>>8	ubelong		!0
41782c5fa3eSPeter Avalos# skip PCX and some DBF by test for for reserved NULL bytes
41882c5fa3eSPeter Avalos>>>>>>>>>510	ubeshort	0
419c990e5baSDaniel Fojt# skip bad symples with improbably high free block index above 2 GiB file limit
420c990e5baSDaniel Fojt>>>>>>>>>>0	ulelong		<0x400000
421c990e5baSDaniel Fojt# skip AI070GEP.EPS by printable 1st character of 1st memo item
422c990e5baSDaniel Fojt>>>>>>>>>>>512	ubyte		>037
423*3b9cdfa3SAntonio Huete Jimenez# skip some Microsoft Visual C, OMF library like: BZ2.LIB WATTCPWL.LIB ZLIB.LIB
424*3b9cdfa3SAntonio Huete Jimenez>>>>>>>>>>>>512	ubyte		<0200
425c990e5baSDaniel Fojt# skip gluon-ffhat-1.0-tp-link-tl-wr1043n-nd-v2-sysupgrade.bin by printable 2nd character
426*3b9cdfa3SAntonio Huete Jimenez>>>>>>>>>>>>>513 ubyte		>037
427*3b9cdfa3SAntonio Huete Jimenez>>>>>>>>>>>>>>0	use		dbase3-memo-print
42882c5fa3eSPeter Avalos# dBASE IV DBT with positive block size
42982c5fa3eSPeter Avalos>>>>>>>20	uleshort	>0
430c30bd091SSascha Wildner# dBASE IV DBT with valid block length like 512, 1024
431c30bd091SSascha Wildner# multiple of 2 in between 16 and 16 K ,implies upper and lower bits are zero
4326fca56fbSSascha Wildner# skip also 3600h 3E00h size
4336fca56fbSSascha Wildner>>>>>>>>20	uleshort&0xE00f	0
434c30bd091SSascha Wildner>>>>>>>>>0	use		dbase4-memo-print
435e8af9738SPeter Avalos
43682c5fa3eSPeter Avalos#		Print the information of dBase III DBT memo file
43782c5fa3eSPeter Avalos0	name				dbase3-memo-print
43882c5fa3eSPeter Avalos>0	ubyte			x		dBase III DBT
4396fca56fbSSascha Wildner!:mime	application/x-dbt
4406fca56fbSSascha Wildner!:ext	dbt
44182c5fa3eSPeter Avalos# instead 3 as version number 0 for unusual examples like biblio.dbt
44282c5fa3eSPeter Avalos>16	ubyte			!3		\b, version number %u
443e8af9738SPeter Avalos# Number of next available block for appending data
44482c5fa3eSPeter Avalos#>0	lelong			=0		\b, next free block index %u
44582c5fa3eSPeter Avalos>0	lelong			!0		\b, next free block index %u
446970935fdSSascha Wildner# no positive block length
44782c5fa3eSPeter Avalos#>20	uleshort		=0		\b, block length %u
44882c5fa3eSPeter Avalos>20	uleshort		!0		\b, block length %u
44982c5fa3eSPeter Avalos# dBase III memo field terminated by \032\032
450*3b9cdfa3SAntonio Huete Jimenez# like: "WHAT IS XBASE" test.dbt "Borges, Malte" biblio.dbt "First memo\032\032" T2.DBT
45182c5fa3eSPeter Avalos>512	string			>\0		\b, 1st item "%s"
452*3b9cdfa3SAntonio Huete Jimenez# For DEBUGGING
453*3b9cdfa3SAntonio Huete Jimenez#>512	ubelong			x		\b, 1ST item %#8.8x
4546fca56fbSSascha Wildner# https://www.clicketyclick.dk/databases/xbase/format/dbt.html
45582c5fa3eSPeter Avalos#		Print the information of dBase IV DBT memo file
45682c5fa3eSPeter Avalos0	name				dbase4-memo-print
45782c5fa3eSPeter Avalos>0		lelong		x		dBase IV DBT
458c30bd091SSascha Wildner!:mime	application/x-dbt
459c30bd091SSascha Wildner!:ext dbt
460970935fdSSascha Wildner# 8 character shorted main name of corresponding dBASE IV DBF file
46182c5fa3eSPeter Avalos>8		ubelong		>0x20000000
46282c5fa3eSPeter Avalos# skip unusual like for angest.dbt
46382c5fa3eSPeter Avalos>>20		uleshort	>0
46482c5fa3eSPeter Avalos>>>8		string		>\0		\b of %-.8s.DBF
46582c5fa3eSPeter Avalos# value 0 implies 512 as size
46682c5fa3eSPeter Avalos#>4		ulelong		=0		\b, blocks size %u
46782c5fa3eSPeter Avalos# size of blocks not reliable like 0x2020204C in angest.dbt
46882c5fa3eSPeter Avalos>4		ulelong		!0
46982c5fa3eSPeter Avalos>>4		ulelong&0x0000003f	0	\b, blocks size %u
47082c5fa3eSPeter Avalos# dBase IV DBT with positive block length (found 512 , 1024)
47182c5fa3eSPeter Avalos>20		uleshort	>0		\b, block length %u
47282c5fa3eSPeter Avalos# next available block
47382c5fa3eSPeter Avalos#>0		lelong		=0		\b, next free block index %u
47482c5fa3eSPeter Avalos>0		lelong		!0		\b, next free block index %u
47582c5fa3eSPeter Avalos>20		uleshort	>0
47682c5fa3eSPeter Avalos>>(20.s)	ubelong		x
47782c5fa3eSPeter Avalos>>>&-4		use		dbase4-memofield-print
47882c5fa3eSPeter Avalos# unusual dBase IV DBT without block length (implies 512 as length)
47982c5fa3eSPeter Avalos>20		uleshort	=0
480e8af9738SPeter Avalos>>512		ubelong		x
48182c5fa3eSPeter Avalos>>>&-4		use				dbase4-memofield-print
48282c5fa3eSPeter Avalos#		Print the information of dBase IV memo field
48382c5fa3eSPeter Avalos0	name			dbase4-memofield-print
48482c5fa3eSPeter Avalos# free dBase IV memo field
48582c5fa3eSPeter Avalos>0		ubelong		!0xFFFF0800
48682c5fa3eSPeter Avalos>>0		lelong		x		\b, next free block %u
48782c5fa3eSPeter Avalos>>4		lelong		x		\b, next used block %u
48882c5fa3eSPeter Avalos# used dBase IV memo field
48982c5fa3eSPeter Avalos>0		ubelong		=0xFFFF0800
49082c5fa3eSPeter Avalos# length of memo field
49182c5fa3eSPeter Avalos>>4		lelong		x		\b, field length %d
49282c5fa3eSPeter Avalos>>>8		string		>\0		\b, 1st used item "%s"
4936fca56fbSSascha Wildner# http://www.dbfree.org/webdocs/1-documentation/0018-developers_stuff_(advanced)/os_related_stuff/xbase_file_format.htm
49482c5fa3eSPeter Avalos#		Print the information of FoxPro FPT memo file
49582c5fa3eSPeter Avalos0	name				foxpro-memo-print
49682c5fa3eSPeter Avalos>0		belong		x		FoxPro FPT
4976fca56fbSSascha Wildner!:mime	application/x-fpt
4986fca56fbSSascha Wildner!:ext	fpt
499*3b9cdfa3SAntonio Huete Jimenez# Size of blocks for FoxPro ( 64,256 ); probably a multiple of two
50082c5fa3eSPeter Avalos>6		ubeshort	x		\b, blocks size %u
50182c5fa3eSPeter Avalos# next available block
50282c5fa3eSPeter Avalos#>0		belong		=0		\b, next free block index %u
50382c5fa3eSPeter Avalos>0		belong		!0		\b, next free block index %u
50482c5fa3eSPeter Avalos# field type ( 0~picture, 1~memo, 2~object )
50582c5fa3eSPeter Avalos>512		ubelong		<3		\b, field type %u
50682c5fa3eSPeter Avalos# length of memo field
50782c5fa3eSPeter Avalos>512		ubelong		1
50882c5fa3eSPeter Avalos>>516		belong		>0		\b, field length %d
50982c5fa3eSPeter Avalos>>>520		string		>\0		\b, 1st item "%s"
510e8af9738SPeter Avalos
511614728caSSascha Wildner# Summary:	DBASE Compound Index file *.CDX and FoxPro index *.IDX
512614728caSSascha Wildner# From:		Joerg Jenderek
513614728caSSascha Wildner# URL:		https://www.clicketyclick.dk/databases/xbase/format/cdx.html
514614728caSSascha Wildner#		https://www.clicketyclick.dk/databases/xbase/format/idx.html
515614728caSSascha Wildner#		https://www.clicketyclick.dk/databases/xbase/format/idx_comp.html
516614728caSSascha Wildner# Reference:	https://mark0.net/download/triddefs_xml.7z/defs/s/sybase-ianywhere-cdx.trid.xml
517614728caSSascha Wildner#		https://mark0.net/download/triddefs_xml.7z/defs/c/cdx-vfp7.trid.xml
518614728caSSascha Wildner# like: kunde.cdx
519614728caSSascha Wildner0	ulelong		0x1C00
520614728caSSascha Wildner>0	use			xbase-index
521614728caSSascha Wildner# like: SYLLABI2.CDX SYLLABUS.CDX
522614728caSSascha Wildner0	ulelong		0x0800
523614728caSSascha Wildner>0	use			xbase-index
524614728caSSascha Wildner# often in xBase index pointer to root node 400h
525614728caSSascha Wildner0	ulelong		0x0400
526614728caSSascha Wildner# skip most Maple help database *.hdb with version tag handled by ./maple
527614728caSSascha Wildner>1028	string		!version
528614728caSSascha Wildner# skip Maple help database hsum.hdb checking for valid reserved area
529614728caSSascha Wildner>>492	quad		=0
530614728caSSascha Wildner# skip remaining Maple help database *.hdb by checking key length
531614728caSSascha Wildner#>>>12	uleshort	!0x000F			KEY_LENGTHVALID
532614728caSSascha Wildner>>>0	use			xbase-index
533614728caSSascha Wildner#	display information about dBase/FoxPro index
534614728caSSascha Wildner0	name			xbase-index
535614728caSSascha Wildner>0	ulelong		x			xBase
536614728caSSascha Wildner!:mime	application/x-dbase-index
537614728caSSascha Wildner>14	ubyte		&0x40			compound index
538614728caSSascha Wildner# DCX for FoxPro database index like: TESTDATA.DCX
539614728caSSascha Wildner!:ext	cdx/dcx
540614728caSSascha Wildner>14	ubyte		^0x40			index
541614728caSSascha Wildner# only 1 example like: TEST.IDX
542614728caSSascha Wildner!:ext	idx
543614728caSSascha Wildner# pointer to root node like: 1C00h 800h often 400h
544614728caSSascha Wildner>0	ulelong		!0x400			\b, root pointer %#x
545614728caSSascha Wildner# Pointer to free node list: often 0 but -1 if not present
546614728caSSascha Wildner>4	ulelong		!0			\b, free node pointer %#x
547614728caSSascha Wildner# MAYBE number of pages in file (Foxbase, FoxPro 1.x) or
548614728caSSascha Wildner# http://www.foxpert.com/foxpro/knowlbits/files/knowlbits_200708_1.HTM
549614728caSSascha Wildner# Whenever Visual FoxPro updates the index file it increments this reserved field
550614728caSSascha Wildner# Reserved for internal use like: 02000000h 03000000h 460c0000h 780f0000h 89000000h 9fdc0100h often 0
551614728caSSascha Wildner>8	ulelong		!0			\b, reserved counter %#x
552614728caSSascha Wildner# length of key like: mostly 000Ah 0028h (TEST.IDX)
553614728caSSascha Wildner>12	uleshort	!0x000A			\b, key length %#x
554614728caSSascha Wildner# index options like: 24h E0h E8h
555614728caSSascha Wildner# 1~a unique index 8~index has FOR clause 32~compact index format 64~compound index header
556614728caSSascha Wildner# 16~Bit vector (SoftC) 128~Structure index (FoxPro)
557614728caSSascha Wildner>14	ubyte		x			\b, index options (%#x
558614728caSSascha Wildner>14	ubyte		&0x01			\b, unique
559614728caSSascha Wildner>14	ubyte		&0x08			\b, has FOR clause
560614728caSSascha Wildner>14	ubyte		&0x10			\b, bit vector (SoftC)
561614728caSSascha Wildner>14	ubyte		&0x20			\b, compact format
562614728caSSascha Wildner#>14	ubyte		&0x40			\b, compound header
563614728caSSascha Wildner>14	ubyte		&0x80			\b, structure
564614728caSSascha Wildner>14	ubyte		x			\b)
565614728caSSascha Wildner# WHAT EXACTLY IS THAT? index signature like: 0 (sybase-ianywhere-cdx.trid.xml) 1 (cdx-vfp7.trid.xml)
566614728caSSascha Wildner>15	ubyte		!0			\b, index signature %u
567614728caSSascha Wildner# reserved area (0-bytes) til about 500, but not for uncompressed Index files *.idx
568614728caSSascha Wildner>16	quad		!0			\b, at 16 reserved %#llx
569614728caSSascha Wildner>492	quad		!0			\b, at 492 reserved %#llx
570614728caSSascha Wildner# for IDX variant
571614728caSSascha Wildner#>14	ubyte		^0x40			IDX
572614728caSSascha Wildner# for CDX variant
573614728caSSascha Wildner>14	ubyte		&0x40
574614728caSSascha Wildner# Ascending or descending: 0~ascending 1~descending
575614728caSSascha Wildner>>502	uleshort	x			\b, sort order %u
576614728caSSascha Wildner# Total expression length (FoxPro 2) like: 0 1
577614728caSSascha Wildner>>504	uleshort	!0			\b, expression length %u
578614728caSSascha Wildner# FOR expression pool length like: 1
579614728caSSascha Wildner>>506	uleshort	!1			\b, FOR expression pool length %#x
580614728caSSascha Wildner# reserved for internal use like: 0
581614728caSSascha Wildner>>508	uleshort	!0			\b, at 0x508 reserved %#x
582614728caSSascha Wildner# Key expression pool length like: 1
583614728caSSascha Wildner>>510	uleshort	!1			\b, key expression pool length %#x
584614728caSSascha Wildner# 512 - 1023 Key & FOR expression pool (uncompiled)
585614728caSSascha Wildner>>512	quad		!0			\b, key expression pool %#llx
586614728caSSascha Wildner#>>520	quad		!0			\b, key expression pool %#llx
587614728caSSascha Wildner
588614728caSSascha Wildner# Summary:	dBASE IV Printer Form *.PRF
589614728caSSascha Wildner# From:		Joerg Jenderek
590614728caSSascha Wildner# URL:		https://en.wikipedia.org/wiki/.dbf#Other_file_types_found_in_dBASE
591614728caSSascha Wildner# Reference:	https://mark0.net/download/triddefs_xml.7z/defs/p/prf-dbase.trid.xml
592614728caSSascha Wildner0	ubeshort	0x0400
593614728caSSascha Wildner# skip some Xbase Index files *.ndx and Infocom (Z-machine 4) *.z4 handled by ./adventure
594614728caSSascha Wildner# by looking for valid printer driver name extension
595614728caSSascha Wildner>0x58	search/8	.PR2
596614728caSSascha Wildner>>0	use			xbase-prf
597614728caSSascha Wildner#	display information of dbase print form like printer driver *.PR2
598614728caSSascha Wildner0	name			xbase-prf	dBase Printer Form
599614728caSSascha Wildner!:mime	application/x-dbase-prf
600614728caSSascha Wildner!:ext	prf
601614728caSSascha Wildner# MAYBE version? like: 4~DBASE IV
602614728caSSascha Wildner#>0	ubyte		x			\b, version %u
603614728caSSascha Wildner# MAYBE flag like: 1~with output file name 0~not
604614728caSSascha Wildner#>2	ubyte		!0			\b, flag %u
605614728caSSascha Wildner# optional printer text output file name like E:\DBASE\IV\T6.txt
606614728caSSascha Wildner>3	string		>\0			\b, output file %s
607614728caSSascha Wildner# probably padding with nils til 0x53
608614728caSSascha Wildner#>0x48	 uquad		!0			\b, at 0x48 padding %#llx
609614728caSSascha Wildner# dBASE IV printer driver name like: Generic.PR2 ASCII.PR2
610614728caSSascha Wildner>0x56	string		>\0			\b, using printer driver %s
611614728caSSascha Wildner# 2 is probably last character of previous dBASE printer driver name
612614728caSSascha Wildner#>0x60	ubyte		!0x32			\b, at 0x60 %#x
613614728caSSascha Wildner# probably padding with nils til 0xa8
614614728caSSascha Wildner#>0x61	uquad		!0			\b, at 0x61 padding %#llx
615614728caSSascha Wildner# unknown 0x03020300 0x03020100 at 0xa8
616614728caSSascha Wildner>0xa8	ubelong 	x			\b, at 0xa8 unknown %#8.8x
617614728caSSascha Wildner# probably padding with nils til 0x2aa
618614728caSSascha Wildner#>0x2a0	uquad		!0			\b, at 0x2a0 padding %#llx
619614728caSSascha Wildner# unknown 0x100ff7f01000001 at 0x2AB
620614728caSSascha Wildner>0x2ab	ubequad		!0x100ff7f01000001	\b, at 0x2ab unknown %#llx
621614728caSSascha Wildner# unknown 0x0042 at 0x2b3
622614728caSSascha Wildner>0x2b3	ubeshort 	!0x0042			\b, at 0x2b3 unknown %#4.4x
623614728caSSascha Wildner# unknown last 4 bytes at 0x2b6 like: 0 0x23
624614728caSSascha Wildner>0x2b6	ubelong		!0			\b, at 0x2b6 unknown %#8.8x
625614728caSSascha Wildner
626e8af9738SPeter Avalos# TODO:
627e8af9738SPeter Avalos# DBASE index file *.NDX
628614728caSSascha Wildner# dBASE compiled Format *.FMO
629614728caSSascha Wildner# FoxPro Database memo file *.DCT
630614728caSSascha Wildner# FoxPro Forms Memo *.SCT
631614728caSSascha Wildner# FoxPro Generated Menu Program *.MPR
632614728caSSascha Wildner# FoxPro Report *.FRX
633614728caSSascha Wildner# FoxPro Report Memo *.FRT
634614728caSSascha Wildner# Foxpro Generated Screen Program *.SPR
635614728caSSascha Wildner# Foxpro memo *.PJT
636e8af9738SPeter Avalos## End of XBase database stuff
637327e51cbSPeter Avalos
638327e51cbSPeter Avalos# MS Access database
639327e51cbSPeter Avalos4	string	Standard\ Jet\ DB	Microsoft Access Database
64079343712SPeter Avalos!:mime	application/x-msaccess
641e8af9738SPeter Avalos4	string	Standard\ ACE\ DB	Microsoft Access Database
642e8af9738SPeter Avalos!:mime	application/x-msaccess
643327e51cbSPeter Avalos
644c30bd091SSascha Wildner# From: Joerg Jenderek
645c30bd091SSascha Wildner# URL: http://fileformats.archiveteam.org/wiki/Extensible_Storage_Engine
646c30bd091SSascha Wildner# Reference: https://github.com/libyal/libesedb/archive/master.zip
647c30bd091SSascha Wildner#	libesedb-master/documentation/
648c30bd091SSascha Wildner#	Extensible Storage Engine (ESE) Database File (EDB) format.asciidoc
649c30bd091SSascha Wildner# Note: also known as "JET Blue". Used by numerous Windows components such as
650c30bd091SSascha Wildner# Windows Search, Mail, Exchange and Active Directory.
651c30bd091SSascha Wildner4	ubelong		0xefcdab89
652c30bd091SSascha Wildner# unknown1
653c30bd091SSascha Wildner>132	ubelong		0		Extensible storage engine
654c30bd091SSascha Wildner!:mime	application/x-ms-ese
655c30bd091SSascha Wildner# file_type 0~database 1~stream
656c30bd091SSascha Wildner>>12	ulelong		0		DataBase
657c30bd091SSascha Wildner# Security DataBase (sdb)
658c30bd091SSascha Wildner!:ext	edb/sdb
659c30bd091SSascha Wildner>>12	ulelong		1		STreaMing
660c30bd091SSascha Wildner!:ext	stm
661c30bd091SSascha Wildner# format_version 620h
662614728caSSascha Wildner>>8	uleshort	x		\b, version %#x
663614728caSSascha Wildner>>10	uleshort	>0		revision %#4.4x
664614728caSSascha Wildner>>0	ubelong		x	 	\b, checksum %#8.8x
665c30bd091SSascha Wildner# Page size 4096 8192 32768
666c30bd091SSascha Wildner>>236	ulequad		x		\b, page size %lld
667c30bd091SSascha Wildner# database_state
668c30bd091SSascha Wildner>>52	ulelong		1		\b, JustCreated
669c30bd091SSascha Wildner>>52	ulelong		2		\b, DirtyShutdown
670c30bd091SSascha Wildner#>>52	ulelong		3		\b, CleanShutdown
671c30bd091SSascha Wildner>>52	ulelong		4		\b, BeingConverted
672c30bd091SSascha Wildner>>52	ulelong		5		\b, ForceDetach
673c990e5baSDaniel Fojt# Windows NT major version when the databases indexes were updated.
674c30bd091SSascha Wildner>>216	ulelong		x		\b, Windows version %d
675c990e5baSDaniel Fojt# Windows NT minor version
676c30bd091SSascha Wildner>>220	ulelong		x		\b.%d
677c30bd091SSascha Wildner
678c30bd091SSascha Wildner# From: Joerg Jenderek
6796fca56fbSSascha Wildner# URL: https://forensicswiki.org/wiki/Windows_Application_Compatibility
680c30bd091SSascha Wildner# Note: files contain application compatibility fixes, application compatibility modes and application help messages.
681c30bd091SSascha Wildner8	string		sdbf
682c30bd091SSascha Wildner>7	ubyte		0
683c30bd091SSascha Wildner# TAG_TYPE_LIST+TAG_INDEXES
684c30bd091SSascha Wildner>>12	uleshort	0x7802		Windows application compatibility Shim DataBase
685c30bd091SSascha Wildner# version? 2 3
686c30bd091SSascha Wildner#>>>0	ulelong		x		\b, version %d
687c30bd091SSascha Wildner!:mime	application/x-ms-sdb
688c30bd091SSascha Wildner!:ext	sdb
689c30bd091SSascha Wildner
690327e51cbSPeter Avalos# TDB database from Samba et al - Martin Pool <mbp@samba.org>
691327e51cbSPeter Avalos0	string	TDB\ file		TDB database
692327e51cbSPeter Avalos>32	lelong	0x2601196D		version 6, little-endian
693327e51cbSPeter Avalos>>36	lelong	x			hash size %d bytes
694327e51cbSPeter Avalos
695327e51cbSPeter Avalos# SE Linux policy database
696327e51cbSPeter Avalos0       lelong  0xf97cff8c      SE Linux policy
697327e51cbSPeter Avalos>16     lelong  x               v%d
698327e51cbSPeter Avalos>20     lelong  1      MLS
699327e51cbSPeter Avalos>24     lelong  x       %d symbols
700327e51cbSPeter Avalos>28     lelong  x       %d ocons
701327e51cbSPeter Avalos
702327e51cbSPeter Avalos# ICE authority file data (Wolfram Kleff)
703327e51cbSPeter Avalos2	string		ICE		ICE authority data
704327e51cbSPeter Avalos
705327e51cbSPeter Avalos# X11 Xauthority file (Wolfram Kleff)
706327e51cbSPeter Avalos10	string		MIT-MAGIC-COOKIE-1	X11 Xauthority data
707327e51cbSPeter Avalos11	string		MIT-MAGIC-COOKIE-1	X11 Xauthority data
708327e51cbSPeter Avalos12	string		MIT-MAGIC-COOKIE-1	X11 Xauthority data
709327e51cbSPeter Avalos13	string		MIT-MAGIC-COOKIE-1	X11 Xauthority data
710327e51cbSPeter Avalos14	string		MIT-MAGIC-COOKIE-1	X11 Xauthority data
711327e51cbSPeter Avalos15	string		MIT-MAGIC-COOKIE-1	X11 Xauthority data
712327e51cbSPeter Avalos16	string		MIT-MAGIC-COOKIE-1	X11 Xauthority data
713327e51cbSPeter Avalos17	string		MIT-MAGIC-COOKIE-1	X11 Xauthority data
714327e51cbSPeter Avalos18	string		MIT-MAGIC-COOKIE-1	X11 Xauthority data
715327e51cbSPeter Avalos
716327e51cbSPeter Avalos# From: Maxime Henrion <mux@FreeBSD.org>
717327e51cbSPeter Avalos# PostgreSQL's custom dump format, Maxime Henrion <mux@FreeBSD.org>
718327e51cbSPeter Avalos0	string		PGDMP		PostgreSQL custom database dump
719327e51cbSPeter Avalos>5	byte		x		- v%d
720327e51cbSPeter Avalos>6	byte		x		\b.%d
72179343712SPeter Avalos>5	beshort		<0x101		\b-0
722327e51cbSPeter Avalos>5	beshort		>0x100
723327e51cbSPeter Avalos>>7	byte		x		\b-%d
724327e51cbSPeter Avalos
72579343712SPeter Avalos# Type: Advanced Data Format (ADF) database
7266fca56fbSSascha Wildner# URL:  https://www.grc.nasa.gov/WWW/cgns/adf/
72779343712SPeter Avalos# From: Nicolas Chauvat <nicolas.chauvat@logilab.fr>
72879343712SPeter Avalos0	string	@(#)ADF\ Database	CGNS Advanced Data Format
72979343712SPeter Avalos
73079343712SPeter Avalos# Tokyo Cabinet magic data
73179343712SPeter Avalos# http://tokyocabinet.sourceforge.net/index.html
73279343712SPeter Avalos0	string		ToKyO\ CaBiNeT\n	Tokyo Cabinet
73379343712SPeter Avalos>14	string		x			\b (%s)
73479343712SPeter Avalos>32	byte		0			\b, Hash
73579343712SPeter Avalos!:mime	application/x-tokyocabinet-hash
73679343712SPeter Avalos>32	byte		1			\b, B+ tree
73779343712SPeter Avalos!:mime	application/x-tokyocabinet-btree
73879343712SPeter Avalos>32	byte		2			\b, Fixed-length
73979343712SPeter Avalos!:mime	application/x-tokyocabinet-fixed
74079343712SPeter Avalos>32	byte		3			\b, Table
74179343712SPeter Avalos!:mime	application/x-tokyocabinet-table
74279343712SPeter Avalos>33	byte		&1			\b, [open]
74379343712SPeter Avalos>33	byte		&2			\b, [fatal]
74479343712SPeter Avalos>34	byte		x			\b, apow=%d
74579343712SPeter Avalos>35	byte		x			\b, fpow=%d
74679343712SPeter Avalos>36	byte		&0x01			\b, [large]
74779343712SPeter Avalos>36	byte		&0x02			\b, [deflate]
74879343712SPeter Avalos>36	byte		&0x04			\b, [bzip]
74979343712SPeter Avalos>36	byte		&0x08			\b, [tcbs]
75079343712SPeter Avalos>36	byte		&0x10			\b, [excodec]
75179343712SPeter Avalos>40	lequad		x			\b, bnum=%lld
75279343712SPeter Avalos>48	lequad		x			\b, rnum=%lld
75379343712SPeter Avalos>56	lequad		x			\b, fsiz=%lld
754e4d4ce0cSPeter Avalos
755e4d4ce0cSPeter Avalos# Type:	QDBM Quick Database Manager
756e4d4ce0cSPeter Avalos# From:	Benoit Sibaud <bsibaud@april.org>
757e4d4ce0cSPeter Avalos0	string		\\[depot\\]\n\f		Quick Database Manager, little endian
758e4d4ce0cSPeter Avalos0	string		\\[DEPOT\\]\n\f		Quick Database Manager, big endian
759e4d4ce0cSPeter Avalos
760e4d4ce0cSPeter Avalos# Type:	TokyoCabinet database
761e4d4ce0cSPeter Avalos# URL:	http://tokyocabinet.sourceforge.net/
762e4d4ce0cSPeter Avalos# From:	Benoit Sibaud <bsibaud@april.org>
763e4d4ce0cSPeter Avalos0	string		ToKyO\ CaBiNeT\n	TokyoCabinet database
764e4d4ce0cSPeter Avalos>14	string		x			(version %s)
765a96e001bSPeter Avalos
7666fca56fbSSascha Wildner# From:  Stephane Blondon https://www.yaal.fr
767a96e001bSPeter Avalos# Database file for Zope (done by FileStorage)
768c30bd091SSascha Wildner0	string	FS21	Zope Object Database File Storage v3 (data)
769c30bd091SSascha Wildner0	string	FS30	Zope Object Database File Storage v4 (data)
770c30bd091SSascha Wildner
771a96e001bSPeter Avalos# Cache file for the database of Zope (done by ClientStorage)
772a96e001bSPeter Avalos0	string		ZEC3	Zope Object Database Client Cache File (data)
773e8af9738SPeter Avalos
774e8af9738SPeter Avalos# IDA (Interactive Disassembler) database
775e8af9738SPeter Avalos0	string		IDA1	IDA (Interactive Disassembler) database
776c30bd091SSascha Wildner
7776fca56fbSSascha Wildner# Hopper (reverse engineering tool) https://www.hopperapp.com/
778c30bd091SSascha Wildner0	string		hopperdb	Hopper database
779c30bd091SSascha Wildner
780c30bd091SSascha Wildner# URL: https://en.wikipedia.org/wiki/Panorama_(database_engine)
781c30bd091SSascha Wildner# Reference: http://www.provue.com/Panorama/
782c30bd091SSascha Wildner# From: Joerg Jenderek
783c30bd091SSascha Wildner# NOTE: test only versions 4 and 6.0 with Windows
784c30bd091SSascha Wildner# length of Panorama database name
785c30bd091SSascha Wildner5	ubyte				>0
786c30bd091SSascha Wildner# look after database name for "some" null bits
787c30bd091SSascha Wildner>(5.B+7)	ubelong&0xF3ffF000	0
788c30bd091SSascha Wildner# look for first keyword
789c30bd091SSascha Wildner>>&1		search/2		DESIGN		Panorama database
790c30bd091SSascha Wildner#!:mime	application/x-panorama-database
791c30bd091SSascha Wildner!:apple	KASXZEPD
792c30bd091SSascha Wildner!:ext	pan
793c30bd091SSascha Wildner# database name
794c30bd091SSascha Wildner>>>5	pstring				x		\b, "%s"
795c30bd091SSascha Wildner
796c30bd091SSascha Wildner#
797c30bd091SSascha Wildner#
798c30bd091SSascha Wildner# askSam Database by Stefan A. Haubenthal <polluks@web.de>
799c30bd091SSascha Wildner0	string	askw40\0	askSam DB
800c30bd091SSascha Wildner
801c30bd091SSascha Wildner#
802c30bd091SSascha Wildner#
803c30bd091SSascha Wildner# MUIbase Database Tool by Stefan A. Haubenthal <polluks@web.de>
804c30bd091SSascha Wildner0	string	MBSTV\040	MUIbase DB
805c30bd091SSascha Wildner>6	string	x		version %s
806c30bd091SSascha Wildner
807c30bd091SSascha Wildner#
808c30bd091SSascha Wildner# CDB database
809c30bd091SSascha Wildner0	string	NBCDB\012	NetBSD Constant Database
810c30bd091SSascha Wildner>7	byte	x		\b, version %d
811c30bd091SSascha Wildner>8	string	x		\b, for '%s'
812c30bd091SSascha Wildner>24	lelong	x		\b, datasize %d
813c30bd091SSascha Wildner>28	lelong	x		\b, entries %d
814c30bd091SSascha Wildner>32	lelong	x		\b, index %d
815c30bd091SSascha Wildner>36	lelong	x		\b, seed %#x
8166fca56fbSSascha Wildner
8176fca56fbSSascha Wildner#
8186fca56fbSSascha Wildner# Redis RDB - https://redis.io/topics/persistence
8196fca56fbSSascha Wildner0	string	REDIS			Redis RDB file,
8206fca56fbSSascha Wildner>5	regex	[0-9][0-9][0-9][0-9]	version %s
8216fca56fbSSascha Wildner
8226fca56fbSSascha Wildner# Mork database.
8236fca56fbSSascha Wildner# Used by older versions of Mozilla Suite and Firefox,
8246fca56fbSSascha Wildner# and current versions of Thunderbird.
8256fca56fbSSascha Wildner# From: David Korth <gerbilsoft@gerbilsoft.com>
8266fca56fbSSascha Wildner0	string	//\ <!--\ <mdb:mork:z\ v="	Mozilla Mork database
8276fca56fbSSascha Wildner>23	string	x		\b, version %.3s
828c990e5baSDaniel Fojt
829c990e5baSDaniel Fojt# URL:		https://en.wikipedia.org/wiki/Management_Information_Format
830c990e5baSDaniel Fojt# Reference:	https://www.dmtf.org/sites/default/files/standards/documents/DSP0005.pdf
831c990e5baSDaniel Fojt# From:		Joerg Jenderek
832c990e5baSDaniel Fojt# Note:		only tested with monitor asset reports of Dell Display Manager
833c990e5baSDaniel Fojt#		skip start like Language=fr|CA|iso8859-1
834c990e5baSDaniel Fojt0	search/27/C	Start\040Component	DMI Management Information Format
835c990e5baSDaniel Fojt#!:mime	text/plain
836c990e5baSDaniel Fojt!:mime	text/x-dmtf-mif
837c990e5baSDaniel Fojt!:ext	mif
838c990e5baSDaniel Fojt
839