xref: /freebsd/contrib/file/magic/Magdir/database (revision 2726a7014867ad7224d09b66836c5d385f0350f4)
1b6cee71dSXin LI
2b6cee71dSXin LI#------------------------------------------------------------------------------
3*2726a701SXin LI# $File: database,v 1.59 2020/03/25 01:49:58 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
184b6cee71dSXin LI>>>>>>>>>>>>0	ubyte			x		\b DBF
185b6cee71dSXin LI>>>>>>>>>>>>4	lelong			0		\b, no records
186b6cee71dSXin LI>>>>>>>>>>>>4	lelong			>0		\b, %d record
187b6cee71dSXin LI# plural s appended
188b6cee71dSXin LI>>>>>>>>>>>>>4	lelong			>1		\bs
18948c779cdSXin LI# https://www.clicketyclick.dk/databases/xbase/format/dbf_check.html#CHECK_DBF
190b6cee71dSXin LI# 1 <= record size <= 4000 (dBase 3,4) or 32 * KB (=0x8000)
191b6cee71dSXin LI>>>>>>>>>>>>10	uleshort		x		* %d
192b6cee71dSXin LI# file size = records * record size + header size
193b6cee71dSXin LI>>>>>>>>>>>>1	ubyte			x		\b, update-date
194b6cee71dSXin LI>>>>>>>>>>>>1	use			xbase-date
19548c779cdSXin LI# https://msdn.microsoft.com/de-de/library/cc483186(v=vs.71).aspx
196b6cee71dSXin LI#>>>>>>>>>>>>29	ubyte			=0		\b, codepage ID=0x%x
197b6cee71dSXin LI# 2~cp850 , 3~cp1252 , 0x1b~?? ; what code page is 0x1b ?
198b6cee71dSXin LI>>>>>>>>>>>>29	ubyte			>0		\b, codepage ID=0x%x
199b6cee71dSXin LI#>>>>>>>>>>>>28	ubyte&0x01		0		\b, no index file
200b6cee71dSXin LI>>>>>>>>>>>>28	ubyte&0x01		1		\b, with index file .MDX
201b6cee71dSXin LI>>>>>>>>>>>>28	ubyte&0x02		2		\b, with memo .FPT
202b6cee71dSXin LI>>>>>>>>>>>>28	ubyte&0x04		4		\b, DataBaseContainer
203b6cee71dSXin LI# 1st record offset + 1 = header size
204b6cee71dSXin LI>>>>>>>>>>>>8	uleshort		>0
205b6cee71dSXin LI>>>>>>>>>>>>(8.s+1)	ubyte		>0
206b6cee71dSXin LI>>>>>>>>>>>>>8		uleshort	>0		\b, at offset %d
207b6cee71dSXin LI>>>>>>>>>>>>>(8.s+1)	ubyte		>0
208b6cee71dSXin LI>>>>>>>>>>>>>>&-1	string		>\0		1st record "%s"
20940427ccaSGordon Tetlow# for multiple index files (*.MDX) Production flag,tag numbers(<=0x30),tag length(<=0x20), reserved (NULL)
210b6cee71dSXin LI>>>>>>>24	ubelong&0x0133f7ff	>0
211b6cee71dSXin LI# test for reserved NULL byte
212c2931133SXin LI>>>>>>>>47	ubyte			0
213b6cee71dSXin LI# test for valid TAG key format (0x10 or 0)
214b6cee71dSXin LI>>>>>>>>>559	ubyte&0xeF		0
215b6cee71dSXin LI# test MM <= 12
216c2931133SXin LI>>>>>>>>>>45	ubeshort		<0x0C20
217c2931133SXin LI>>>>>>>>>>>45	ubyte			>0
218c2931133SXin LI>>>>>>>>>>>>46	ubyte			<32
219c2931133SXin LI>>>>>>>>>>>>>46	ubyte			>0
220b6cee71dSXin LI#!:mime	application/x-mdx
221c2931133SXin LI>>>>>>>>>>>>>>0		use		xbase-type
222c2931133SXin LI>>>>>>>>>>>>>>0		ubyte		x		\b MDX
223c2931133SXin LI>>>>>>>>>>>>>>1		ubyte		x		\b, creation-date
224c2931133SXin LI>>>>>>>>>>>>>>1		use		xbase-date
225c2931133SXin LI>>>>>>>>>>>>>>44	ubyte		x		\b, update-date
226c2931133SXin LI>>>>>>>>>>>>>>44	use		xbase-date
227b6cee71dSXin LI# No.of tags in use (1,2,5,12)
228c2931133SXin LI>>>>>>>>>>>>>>28	uleshort	x		\b, %d
229b6cee71dSXin LI# No. of entries in tag (0x30)
230c2931133SXin LI>>>>>>>>>>>>>>25	ubyte		x		\b/%d tags
231b6cee71dSXin LI#  Length of tag
232c2931133SXin LI>>>>>>>>>>>>>>26	ubyte		x		* %d
233b6cee71dSXin LI# 1st tag name_
234b6cee71dSXin LI>>>>>>>>>>>>>548	string		x		\b, 1st tag "%.11s"
235b6cee71dSXin LI# 2nd tag name
236b6cee71dSXin LI#>>>>>>>>>>>>(26.b+548)	string		x		\b, 2nd tag "%.11s"
237b6cee71dSXin LI#
238b6cee71dSXin LI#		Print the xBase names of different version variants
239b6cee71dSXin LI0	name				xbase-type
240b6cee71dSXin LI>0	ubyte		<2
241b6cee71dSXin LI# 1 < version
242b6cee71dSXin LI>0	ubyte		>1
243b6cee71dSXin LI>>0	ubyte		0x02		FoxBase
244b6cee71dSXin LI# FoxBase+/dBaseIII+, no memo
245b6cee71dSXin LI>>0	ubyte		0x03		FoxBase+/dBase III
246b6cee71dSXin LI!:mime	application/x-dbf
247b6cee71dSXin LI# dBASE IV no memo file
248b6cee71dSXin LI>>0	ubyte		0x04		dBase IV
249b6cee71dSXin LI!:mime	application/x-dbf
250b6cee71dSXin LI# dBASE V no memo file
251b6cee71dSXin LI>>0	ubyte		0x05		dBase V
252b6cee71dSXin LI!:mime	application/x-dbf
253b6cee71dSXin LI>>0	ubyte		0x30		Visual FoxPro
254b6cee71dSXin LI!:mime	application/x-dbf
255b6cee71dSXin LI>>0	ubyte		0x31		Visual FoxPro, autoincrement
256b6cee71dSXin LI!:mime	application/x-dbf
257b6cee71dSXin LI# Visual FoxPro, with field type Varchar or Varbinary
258b6cee71dSXin LI>>0	ubyte		0x32		Visual FoxPro, with field type Varchar
259b6cee71dSXin LI!:mime	application/x-dbf
260b6cee71dSXin LI# dBASE IV SQL, no memo;dbv memo var size (Flagship)
261b6cee71dSXin LI>>0	ubyte		0x43		dBase IV, with SQL table
262b6cee71dSXin LI!:mime	application/x-dbf
26348c779cdSXin LI# https://msdn.microsoft.com/en-US/library/st4a0s68(v=vs.80).aspx
264b6cee71dSXin LI#>>0	ubyte		0x62		dBase IV, with SQL table
265b6cee71dSXin LI#!:mime	application/x-dbf
266b6cee71dSXin LI# dBASE IV, with memo!!
267b6cee71dSXin LI>>0	ubyte		0x7b		dBase IV, with memo
268b6cee71dSXin LI!:mime	application/x-dbf
26948c779cdSXin LI# https://msdn.microsoft.com/en-US/library/st4a0s68(v=vs.80).aspx
270b6cee71dSXin LI#>>0	ubyte		0x82		dBase IV, with SQL system
271b6cee71dSXin LI#!:mime	application/x-dbf
272b6cee71dSXin LI# FoxBase+/dBaseIII+ with memo .DBT!
273b6cee71dSXin LI>>0	ubyte		0x83		FoxBase+/dBase III, with memo .DBT
274b6cee71dSXin LI!:mime	application/x-dbf
275b6cee71dSXin LI# VISUAL OBJECTS (first 1.0 versions) for the Dbase III files (NTX clipper driver); memo file
276b6cee71dSXin LI>>0	ubyte		0x87		VISUAL OBJECTS, with memo file
277b6cee71dSXin LI!:mime	application/x-dbf
27848c779cdSXin LI# https://msdn.microsoft.com/en-US/library/st4a0s68(v=vs.80).aspx
279b6cee71dSXin LI#>>0	ubyte		0x8A		FoxBase+/dBase III, with memo .DBT
280b6cee71dSXin LI#!:mime	application/x-dbf
281b6cee71dSXin LI# dBASE IV with memo!
282b6cee71dSXin LI>>0	ubyte		0x8B		dBase IV, with memo .DBT
283b6cee71dSXin LI!:mime	application/x-dbf
284b6cee71dSXin LI# dBase IV with SQL Table,no memo?
285b6cee71dSXin LI>>0	ubyte		0x8E		dBase IV, with SQL table
286b6cee71dSXin LI!:mime	application/x-dbf
287b6cee71dSXin LI# .dbv and .dbt memo (Flagship)?
288b6cee71dSXin LI>>0	ubyte		0xB3		Flagship
28948c779cdSXin LI# https://msdn.microsoft.com/en-US/library/st4a0s68(v=vs.80).aspx
290b6cee71dSXin LI#>>0	ubyte		0xCA		dBase IV with memo .DBT
291b6cee71dSXin LI#!:mime	application/x-dbf
292b6cee71dSXin LI# dBASE IV with SQL table, with memo .DBT
293b6cee71dSXin LI>>0	ubyte		0xCB		dBase IV with SQL table, with memo .DBT
294b6cee71dSXin LI!:mime	application/x-dbf
295b6cee71dSXin LI# HiPer-Six format;Clipper SIX, with SMT memo file
296b6cee71dSXin LI>>0	ubyte		0xE5		Clipper SIX with memo
297b6cee71dSXin LI!:mime	application/x-dbf
29848c779cdSXin LI# https://msdn.microsoft.com/en-US/library/st4a0s68(v=vs.80).aspx
299b6cee71dSXin LI#>>0	ubyte		0xF4		dBase IV, with SQL table, with memo
300b6cee71dSXin LI#!:mime	application/x-dbf
301b6cee71dSXin LI>>0	ubyte		0xF5		FoxPro with memo
302b6cee71dSXin LI!:mime	application/x-dbf
30348c779cdSXin LI# https://msdn.microsoft.com/en-US/library/st4a0s68(v=vs.80).aspx
304b6cee71dSXin LI#>>0	ubyte		0xFA		FoxPro 2.x, with memo
305b6cee71dSXin LI#!:mime	application/x-dbf
306b6cee71dSXin LI# unknown version (should not happen)
307b6cee71dSXin LI>>0	default		x		xBase
308b6cee71dSXin LI!:mime	application/x-dbf
309b6cee71dSXin LI>>>0	ubyte		x		(0x%x)
310b6cee71dSXin LI# flags in version byte
311b6cee71dSXin LI# DBT flag (with dBASE III memo .DBT)!!
312b6cee71dSXin LI# >>0	ubyte&0x80	>0		DBT_FLAG=%x
313b6cee71dSXin LI# memo flag ??
314b6cee71dSXin LI# >>0	ubyte&0x08	>0		MEMO_FLAG=%x
315b6cee71dSXin LI# SQL flag ??
316b6cee71dSXin LI# >>0	ubyte&0x70	>0		SQL_FLAG=%x
317b6cee71dSXin LI#		test and print the date of xBase .DBF .MDX
318b6cee71dSXin LI0	name				xbase-date
319b6cee71dSXin LI# inspect YYMMDD , where 1<= MM <= 12 and 1<= DD <= 31
320b6cee71dSXin LI>0	ubelong		x
321b6cee71dSXin LI>1	ubyte		<13
322b6cee71dSXin LI>>1	ubyte		>0
323b6cee71dSXin LI>>>2	ubyte		>0
324b6cee71dSXin LI>>>>2	ubyte		<32
325b6cee71dSXin LI>>>>>0	ubyte		x
326b6cee71dSXin LI# YY is interpreted as 20YY or 19YY
327b6cee71dSXin LI>>>>>>0	ubyte		<100		\b %.2d
328b6cee71dSXin LI# YY is interpreted 1900+YY; TODO: display yy or 20yy instead 1YY
329b6cee71dSXin LI>>>>>>0	ubyte		>99		\b %d
330b6cee71dSXin LI>>>>>1	ubyte		x		\b-%d
331b6cee71dSXin LI>>>>>2	ubyte		x		\b-%d
332b6cee71dSXin LI
333b6cee71dSXin LI#	dBase memo files .DBT or .FPT
33448c779cdSXin LI# https://msdn.microsoft.com/en-us/library/8599s21w(v=vs.80).aspx
335b6cee71dSXin LI16		ubyte		<4
336b6cee71dSXin LI>16		ubyte		!2
337b6cee71dSXin LI>>16		ubyte		!1
338b6cee71dSXin LI# next free block index is positive
339b6cee71dSXin LI>>>0		ulelong		>0
340b6cee71dSXin LI# skip many JPG. ZIP, BZ2 by test for reserved bytes NULL , 0|2 , 0|1 , low byte of block size
341d38c30c0SXin LI>>>>17		ubelong&0xFFfdFEff	0x00000000
342b6cee71dSXin LI# skip many RAR by test for low byte 0 ,high byte 0|2|even of block size, 0|a|e|d7 , 0|64h
343b6cee71dSXin LI>>>>>20		ubelong&0xFF01209B	0x00000000
344b6cee71dSXin LI# dBASE III
345b6cee71dSXin LI>>>>>>16	ubyte		3
346b6cee71dSXin LI# dBASE III DBT
347c2931133SXin LI>>>>>>>0	use		dbase3-memo-print
348c2931133SXin LI# dBASE III DBT without version, dBASE IV DBT , FoxPro FPT , or many ZIP , DBF garbage
349b6cee71dSXin LI>>>>>>16	ubyte		0
350c2931133SXin LI# unusual dBASE III DBT like angest.dbt, dBASE IV DBT with block size 0 , FoxPro FPT ,  or garbage PCX DBF
351c2931133SXin LI>>>>>>>20	uleshort	0
352c2931133SXin LI# FoxPro FPT , unusual dBASE III DBT like biblio.dbt or garbage
353c2931133SXin LI>>>>>>>>8	ulong		=0
354c2931133SXin LI>>>>>>>>>6	ubeshort	>0
355c2931133SXin LI# skip emacs.PIF
356c2931133SXin LI>>>>>>>>>>4	ushort		0
357d38c30c0SXin LI# check for valid FoxPro field type
358d38c30c0SXin LI>>>>>>>>>>>512	ubelong		<3
359d38c30c0SXin LI>>>>>>>>>>>>0	use		foxpro-memo-print
360c2931133SXin LI# dBASE III DBT , garbage
361d38c30c0SXin LI# skip WORD1XW.DOC with improbably high free block index
362*2726a701SXin LI>>>>>>>>>0	ulelong		<0x400000
363*2726a701SXin LI# skip WinStore.App.exe by looking for printable 2nd character of 1st memo item
364*2726a701SXin LI>>>>>>>>>>513	ubyte		>037
365c2931133SXin LI# unusual dBASE III DBT like adressen.dbt
366*2726a701SXin LI>>>>>>>>>>>0	use		dbase3-memo-print
367c2931133SXin LI# dBASE III DBT like angest.dbt, or garbage PCX DBF
368c2931133SXin LI>>>>>>>>8	ubelong		!0
369c2931133SXin LI# skip PCX and some DBF by test for for reserved NULL bytes
370c2931133SXin LI>>>>>>>>>510	ubeshort	0
371*2726a701SXin LI# skip bad symples with improbably high free block index above 2 GiB file limit
372*2726a701SXin LI>>>>>>>>>>0	ulelong		<0x400000
373*2726a701SXin LI# skip AI070GEP.EPS by printable 1st character of 1st memo item
374*2726a701SXin LI>>>>>>>>>>>512	ubyte		>037
375*2726a701SXin LI# skip gluon-ffhat-1.0-tp-link-tl-wr1043n-nd-v2-sysupgrade.bin by printable 2nd character
376*2726a701SXin LI>>>>>>>>>>>>513	ubyte		>037
377*2726a701SXin LI>>>>>>>>>>>>>0	use		dbase3-memo-print
378c2931133SXin LI# dBASE IV DBT with positive block size
379c2931133SXin LI>>>>>>>20	uleshort	>0
3803e41d09dSXin LI# dBASE IV DBT with valid block length like 512, 1024
3813e41d09dSXin LI# multiple of 2 in between 16 and 16 K ,implies upper and lower bits are zero
382d38c30c0SXin LI# skip also 3600h 3E00h size
383d38c30c0SXin LI>>>>>>>>20	uleshort&0xE00f	0
3843e41d09dSXin LI>>>>>>>>>0	use		dbase4-memo-print
385b6cee71dSXin LI
386c2931133SXin LI#		Print the information of dBase III DBT memo file
387c2931133SXin LI0	name				dbase3-memo-print
388c2931133SXin LI>0	ubyte			x		dBase III DBT
389d38c30c0SXin LI!:mime	application/x-dbt
390d38c30c0SXin LI!:ext	dbt
391c2931133SXin LI# instead 3 as version number 0 for unusual examples like biblio.dbt
392c2931133SXin LI>16	ubyte			!3		\b, version number %u
393b6cee71dSXin LI# Number of next available block for appending data
394c2931133SXin LI#>0	lelong			=0		\b, next free block index %u
395c2931133SXin LI>0	lelong			!0		\b, next free block index %u
396c2931133SXin LI# no positiv block length
397c2931133SXin LI#>20	uleshort		=0		\b, block length %u
398c2931133SXin LI>20	uleshort		!0		\b, block length %u
399c2931133SXin LI# dBase III memo field terminated by \032\032
400c2931133SXin LI>512	string			>\0		\b, 1st item "%s"
401d38c30c0SXin LI# https://www.clicketyclick.dk/databases/xbase/format/dbt.html
402c2931133SXin LI#		Print the information of dBase IV DBT memo file
403c2931133SXin LI0	name				dbase4-memo-print
404c2931133SXin LI>0		lelong		x		dBase IV DBT
4053e41d09dSXin LI!:mime	application/x-dbt
4063e41d09dSXin LI!:ext dbt
407c2931133SXin LI# 8 character shorted main name of coresponding dBASE IV DBF file
408c2931133SXin LI>8		ubelong		>0x20000000
409c2931133SXin LI# skip unusual like for angest.dbt
410c2931133SXin LI>>20		uleshort	>0
411c2931133SXin LI>>>8		string		>\0		\b of %-.8s.DBF
412c2931133SXin LI# value 0 implies 512 as size
413c2931133SXin LI#>4		ulelong		=0		\b, blocks size %u
414c2931133SXin LI# size of blocks not reliable like 0x2020204C in angest.dbt
415c2931133SXin LI>4		ulelong		!0
416c2931133SXin LI>>4		ulelong&0x0000003f	0	\b, blocks size %u
417c2931133SXin LI# dBase IV DBT with positive block length (found 512 , 1024)
418c2931133SXin LI>20		uleshort	>0		\b, block length %u
419c2931133SXin LI# next available block
420c2931133SXin LI#>0		lelong		=0		\b, next free block index %u
421c2931133SXin LI>0		lelong		!0		\b, next free block index %u
422c2931133SXin LI>20		uleshort	>0
423c2931133SXin LI>>(20.s)	ubelong		x
424c2931133SXin LI>>>&-4		use		dbase4-memofield-print
425c2931133SXin LI# unusual dBase IV DBT without block length (implies 512 as length)
426c2931133SXin LI>20		uleshort	=0
427b6cee71dSXin LI>>512		ubelong		x
428c2931133SXin LI>>>&-4		use				dbase4-memofield-print
429c2931133SXin LI#		Print the information of dBase IV memo field
430c2931133SXin LI0	name			dbase4-memofield-print
431c2931133SXin LI# free dBase IV memo field
432c2931133SXin LI>0		ubelong		!0xFFFF0800
433c2931133SXin LI>>0		lelong		x		\b, next free block %u
434c2931133SXin LI>>4		lelong		x		\b, next used block %u
435c2931133SXin LI# used dBase IV memo field
436c2931133SXin LI>0		ubelong		=0xFFFF0800
437c2931133SXin LI# length of memo field
438c2931133SXin LI>>4		lelong		x		\b, field length %d
439c2931133SXin LI>>>8		string		>\0		\b, 1st used item "%s"
440d38c30c0SXin LI# http://www.dbfree.org/webdocs/1-documentation/0018-developers_stuff_(advanced)/os_related_stuff/xbase_file_format.htm
441c2931133SXin LI#		Print the information of FoxPro FPT memo file
442c2931133SXin LI0	name				foxpro-memo-print
443c2931133SXin LI>0		belong		x		FoxPro FPT
444d38c30c0SXin LI!:mime	application/x-fpt
445d38c30c0SXin LI!:ext	fpt
446c2931133SXin LI# Size of blocks for FoxPro ( 64,256 )
447c2931133SXin LI>6		ubeshort	x		\b, blocks size %u
448c2931133SXin LI# next available block
449c2931133SXin LI#>0		belong		=0		\b, next free block index %u
450c2931133SXin LI>0		belong		!0		\b, next free block index %u
451c2931133SXin LI# field type ( 0~picture, 1~memo, 2~object )
452c2931133SXin LI>512		ubelong		<3		\b, field type %u
453c2931133SXin LI# length of memo field
454c2931133SXin LI>512		ubelong		1
455c2931133SXin LI>>516		belong		>0		\b, field length %d
456c2931133SXin LI>>>520		string		>\0		\b, 1st item "%s"
457b6cee71dSXin LI
458b6cee71dSXin LI# TODO:
459b6cee71dSXin LI# DBASE index file *.NDX
460b6cee71dSXin LI# DBASE Compound Index file *.CDX
461b6cee71dSXin LI# dBASE IV Printer Driver *.PRF
462b6cee71dSXin LI## End of XBase database stuff
463b6cee71dSXin LI
464b6cee71dSXin LI# MS Access database
465b6cee71dSXin LI4	string	Standard\ Jet\ DB	Microsoft Access Database
466b6cee71dSXin LI!:mime	application/x-msaccess
467b6cee71dSXin LI4	string	Standard\ ACE\ DB	Microsoft Access Database
468b6cee71dSXin LI!:mime	application/x-msaccess
469b6cee71dSXin LI
4703e41d09dSXin LI# From: Joerg Jenderek
4713e41d09dSXin LI# URL: http://fileformats.archiveteam.org/wiki/Extensible_Storage_Engine
4723e41d09dSXin LI# Reference: https://github.com/libyal/libesedb/archive/master.zip
4733e41d09dSXin LI#	libesedb-master/documentation/
4743e41d09dSXin LI#	Extensible Storage Engine (ESE) Database File (EDB) format.asciidoc
4753e41d09dSXin LI# Note: also known as "JET Blue". Used by numerous Windows components such as
4763e41d09dSXin LI# Windows Search, Mail, Exchange and Active Directory.
4773e41d09dSXin LI4	ubelong		0xefcdab89
4783e41d09dSXin LI# unknown1
4793e41d09dSXin LI>132	ubelong		0		Extensible storage engine
4803e41d09dSXin LI!:mime	application/x-ms-ese
4813e41d09dSXin LI# file_type 0~database 1~stream
4823e41d09dSXin LI>>12	ulelong		0		DataBase
4833e41d09dSXin LI# Security DataBase (sdb)
4843e41d09dSXin LI!:ext	edb/sdb
4853e41d09dSXin LI>>12	ulelong		1		STreaMing
4863e41d09dSXin LI!:ext	stm
4873e41d09dSXin LI# format_version 620h
4883e41d09dSXin LI>>8	uleshort	x		\b, version 0x%x
4893e41d09dSXin LI>>10	uleshort	>0		revision 0x%4.4x
4903e41d09dSXin LI>>0	ubelong		x	 	\b, checksum 0x%8.8x
4913e41d09dSXin LI# Page size 4096 8192 32768
4923e41d09dSXin LI>>236	ulequad		x		\b, page size %lld
4933e41d09dSXin LI# database_state
4943e41d09dSXin LI>>52	ulelong		1		\b, JustCreated
4953e41d09dSXin LI>>52	ulelong		2		\b, DirtyShutdown
4963e41d09dSXin LI#>>52	ulelong		3		\b, CleanShutdown
4973e41d09dSXin LI>>52	ulelong		4		\b, BeingConverted
4983e41d09dSXin LI>>52	ulelong		5		\b, ForceDetach
499*2726a701SXin LI# Windows NT major version when the databases indexes were updated.
5003e41d09dSXin LI>>216	ulelong		x		\b, Windows version %d
501*2726a701SXin LI# Windows NT minor version
5023e41d09dSXin LI>>220	ulelong		x		\b.%d
5033e41d09dSXin LI
5043e41d09dSXin LI# From: Joerg Jenderek
50548c779cdSXin LI# URL: https://forensicswiki.org/wiki/Windows_Application_Compatibility
5063e41d09dSXin LI# Note: files contain application compatibility fixes, application compatibility modes and application help messages.
5073e41d09dSXin LI8	string		sdbf
5083e41d09dSXin LI>7	ubyte		0
5093e41d09dSXin LI# TAG_TYPE_LIST+TAG_INDEXES
5103e41d09dSXin LI>>12	uleshort	0x7802		Windows application compatibility Shim DataBase
5113e41d09dSXin LI# version? 2 3
5123e41d09dSXin LI#>>>0	ulelong		x		\b, version %d
5133e41d09dSXin LI!:mime	application/x-ms-sdb
5143e41d09dSXin LI!:ext	sdb
5153e41d09dSXin LI
516b6cee71dSXin LI# TDB database from Samba et al - Martin Pool <mbp@samba.org>
517b6cee71dSXin LI0	string	TDB\ file		TDB database
518b6cee71dSXin LI>32	lelong	0x2601196D		version 6, little-endian
519b6cee71dSXin LI>>36	lelong	x			hash size %d bytes
520b6cee71dSXin LI
521b6cee71dSXin LI# SE Linux policy database
522b6cee71dSXin LI0       lelong  0xf97cff8c      SE Linux policy
523b6cee71dSXin LI>16     lelong  x               v%d
524b6cee71dSXin LI>20     lelong  1      MLS
525b6cee71dSXin LI>24     lelong  x       %d symbols
526b6cee71dSXin LI>28     lelong  x       %d ocons
527b6cee71dSXin LI
528b6cee71dSXin LI# ICE authority file data (Wolfram Kleff)
529b6cee71dSXin LI2	string		ICE		ICE authority data
530b6cee71dSXin LI
531b6cee71dSXin LI# X11 Xauthority file (Wolfram Kleff)
532b6cee71dSXin LI10	string		MIT-MAGIC-COOKIE-1	X11 Xauthority data
533b6cee71dSXin LI11	string		MIT-MAGIC-COOKIE-1	X11 Xauthority data
534b6cee71dSXin LI12	string		MIT-MAGIC-COOKIE-1	X11 Xauthority data
535b6cee71dSXin LI13	string		MIT-MAGIC-COOKIE-1	X11 Xauthority data
536b6cee71dSXin LI14	string		MIT-MAGIC-COOKIE-1	X11 Xauthority data
537b6cee71dSXin LI15	string		MIT-MAGIC-COOKIE-1	X11 Xauthority data
538b6cee71dSXin LI16	string		MIT-MAGIC-COOKIE-1	X11 Xauthority data
539b6cee71dSXin LI17	string		MIT-MAGIC-COOKIE-1	X11 Xauthority data
540b6cee71dSXin LI18	string		MIT-MAGIC-COOKIE-1	X11 Xauthority data
541b6cee71dSXin LI
542b6cee71dSXin LI# From: Maxime Henrion <mux@FreeBSD.org>
543b6cee71dSXin LI# PostgreSQL's custom dump format, Maxime Henrion <mux@FreeBSD.org>
544b6cee71dSXin LI0	string		PGDMP		PostgreSQL custom database dump
545b6cee71dSXin LI>5	byte		x		- v%d
546b6cee71dSXin LI>6	byte		x		\b.%d
547b6cee71dSXin LI>5	beshort		<0x101		\b-0
548b6cee71dSXin LI>5	beshort		>0x100
549b6cee71dSXin LI>>7	byte		x		\b-%d
550b6cee71dSXin LI
551b6cee71dSXin LI# Type: Advanced Data Format (ADF) database
55248c779cdSXin LI# URL:  https://www.grc.nasa.gov/WWW/cgns/adf/
553b6cee71dSXin LI# From: Nicolas Chauvat <nicolas.chauvat@logilab.fr>
554b6cee71dSXin LI0	string	@(#)ADF\ Database	CGNS Advanced Data Format
555b6cee71dSXin LI
556b6cee71dSXin LI# Tokyo Cabinet magic data
557b6cee71dSXin LI# http://tokyocabinet.sourceforge.net/index.html
558b6cee71dSXin LI0	string		ToKyO\ CaBiNeT\n	Tokyo Cabinet
559b6cee71dSXin LI>14	string		x			\b (%s)
560b6cee71dSXin LI>32	byte		0			\b, Hash
561b6cee71dSXin LI!:mime	application/x-tokyocabinet-hash
562b6cee71dSXin LI>32	byte		1			\b, B+ tree
563b6cee71dSXin LI!:mime	application/x-tokyocabinet-btree
564b6cee71dSXin LI>32	byte		2			\b, Fixed-length
565b6cee71dSXin LI!:mime	application/x-tokyocabinet-fixed
566b6cee71dSXin LI>32	byte		3			\b, Table
567b6cee71dSXin LI!:mime	application/x-tokyocabinet-table
568b6cee71dSXin LI>33	byte		&1			\b, [open]
569b6cee71dSXin LI>33	byte		&2			\b, [fatal]
570b6cee71dSXin LI>34	byte		x			\b, apow=%d
571b6cee71dSXin LI>35	byte		x			\b, fpow=%d
572b6cee71dSXin LI>36	byte		&0x01			\b, [large]
573b6cee71dSXin LI>36	byte		&0x02			\b, [deflate]
574b6cee71dSXin LI>36	byte		&0x04			\b, [bzip]
575b6cee71dSXin LI>36	byte		&0x08			\b, [tcbs]
576b6cee71dSXin LI>36	byte		&0x10			\b, [excodec]
577b6cee71dSXin LI>40	lequad		x			\b, bnum=%lld
578b6cee71dSXin LI>48	lequad		x			\b, rnum=%lld
579b6cee71dSXin LI>56	lequad		x			\b, fsiz=%lld
580b6cee71dSXin LI
581b6cee71dSXin LI# Type:	QDBM Quick Database Manager
582b6cee71dSXin LI# From:	Benoit Sibaud <bsibaud@april.org>
583b6cee71dSXin LI0	string		\\[depot\\]\n\f		Quick Database Manager, little endian
584b6cee71dSXin LI0	string		\\[DEPOT\\]\n\f		Quick Database Manager, big endian
585b6cee71dSXin LI
586b6cee71dSXin LI# Type:	TokyoCabinet database
587b6cee71dSXin LI# URL:	http://tokyocabinet.sourceforge.net/
588b6cee71dSXin LI# From:	Benoit Sibaud <bsibaud@april.org>
589b6cee71dSXin LI0	string		ToKyO\ CaBiNeT\n	TokyoCabinet database
590b6cee71dSXin LI>14	string		x			(version %s)
591b6cee71dSXin LI
59248c779cdSXin LI# From:  Stephane Blondon https://www.yaal.fr
593b6cee71dSXin LI# Database file for Zope (done by FileStorage)
5949fc5c47fSXin LI0	string	FS21	Zope Object Database File Storage v3 (data)
5959fc5c47fSXin LI0	string	FS30	Zope Object Database File Storage v4 (data)
5969fc5c47fSXin LI
597b6cee71dSXin LI# Cache file for the database of Zope (done by ClientStorage)
598b6cee71dSXin LI0	string		ZEC3	Zope Object Database Client Cache File (data)
599b6cee71dSXin LI
600b6cee71dSXin LI# IDA (Interactive Disassembler) database
601b6cee71dSXin LI0	string		IDA1	IDA (Interactive Disassembler) database
6029ce06829SXin LI
60348c779cdSXin LI# Hopper (reverse engineering tool) https://www.hopperapp.com/
6049ce06829SXin LI0	string		hopperdb	Hopper database
6059ce06829SXin LI
6063e41d09dSXin LI# URL: https://en.wikipedia.org/wiki/Panorama_(database_engine)
6073e41d09dSXin LI# Reference: http://www.provue.com/Panorama/
6083e41d09dSXin LI# From: Joerg Jenderek
6093e41d09dSXin LI# NOTE: test only versions 4 and 6.0 with Windows
6103e41d09dSXin LI# length of Panorama database name
6113e41d09dSXin LI5	ubyte				>0
6123e41d09dSXin LI# look after database name for "some" null bits
6133e41d09dSXin LI>(5.B+7)	ubelong&0xF3ffF000	0
6143e41d09dSXin LI# look for first keyword
6153e41d09dSXin LI>>&1		search/2		DESIGN		Panorama database
6163e41d09dSXin LI#!:mime	application/x-panorama-database
6173e41d09dSXin LI!:apple	KASXZEPD
6183e41d09dSXin LI!:ext	pan
6193e41d09dSXin LI# database name
6203e41d09dSXin LI>>>5	pstring				x		\b, "%s"
621282e23f0SXin LI
622282e23f0SXin LI#
623282e23f0SXin LI#
624282e23f0SXin LI# askSam Database by Stefan A. Haubenthal <polluks@web.de>
625282e23f0SXin LI0	string	askw40\0	askSam DB
626282e23f0SXin LI
627282e23f0SXin LI#
628282e23f0SXin LI#
629282e23f0SXin LI# MUIbase Database Tool by Stefan A. Haubenthal <polluks@web.de>
630282e23f0SXin LI0	string	MBSTV\040	MUIbase DB
631282e23f0SXin LI>6	string	x		version %s
63240427ccaSGordon Tetlow
63340427ccaSGordon Tetlow#
63440427ccaSGordon Tetlow# CDB database
63540427ccaSGordon Tetlow0	string	NBCDB\012	NetBSD Constant Database
63640427ccaSGordon Tetlow>7	byte	x		\b, version %d
63740427ccaSGordon Tetlow>8	string	x		\b, for '%s'
63840427ccaSGordon Tetlow>24	lelong	x		\b, datasize %d
63940427ccaSGordon Tetlow>28	lelong	x		\b, entries %d
64040427ccaSGordon Tetlow>32	lelong	x		\b, index %d
64140427ccaSGordon Tetlow>36	lelong	x		\b, seed %#x
6422dc4dbb9SEitan Adler
6432dc4dbb9SEitan Adler#
6442dc4dbb9SEitan Adler# Redis RDB - https://redis.io/topics/persistence
6452dc4dbb9SEitan Adler0	string	REDIS			Redis RDB file,
6462dc4dbb9SEitan Adler>5	regex	[0-9][0-9][0-9][0-9]	version %s
6472dc4dbb9SEitan Adler
6482dc4dbb9SEitan Adler# Mork database.
6492dc4dbb9SEitan Adler# Used by older versions of Mozilla Suite and Firefox,
6502dc4dbb9SEitan Adler# and current versions of Thunderbird.
6512dc4dbb9SEitan Adler# From: David Korth <gerbilsoft@gerbilsoft.com>
6522dc4dbb9SEitan Adler0	string	//\ <!--\ <mdb:mork:z\ v="	Mozilla Mork database
6532dc4dbb9SEitan Adler>23	string	x		\b, version %.3s
654*2726a701SXin LI
655*2726a701SXin LI# URL:		https://en.wikipedia.org/wiki/Management_Information_Format
656*2726a701SXin LI# Reference:	https://www.dmtf.org/sites/default/files/standards/documents/DSP0005.pdf
657*2726a701SXin LI# From:		Joerg Jenderek
658*2726a701SXin LI# Note:		only tested with monitor asset reports of Dell Display Manager
659*2726a701SXin LI#		skip start like Language=fr|CA|iso8859-1
660*2726a701SXin LI0	search/27/C	Start\040Component	DMI Management Information Format
661*2726a701SXin LI#!:mime	text/plain
662*2726a701SXin LI!:mime	text/x-dmtf-mif
663*2726a701SXin LI!:ext	mif
664*2726a701SXin LI
665