1b6cee71dSXin LI 2b6cee71dSXin LI#------------------------------------------------------------------------------ 3*ae316d1dSXin LI# $File: database,v 1.73 2024/11/09 19:54:36 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 154a4d6d3b8SXin LI!:strength +10 155b6cee71dSXin LI# skip Infocom game Z-machine 156b6cee71dSXin LI>2 ubyte >0 157b6cee71dSXin LI# skip Androids *.xml 158b6cee71dSXin LI>>3 ubyte >0 159b6cee71dSXin LI>>>3 ubyte <32 160b6cee71dSXin LI# 1 < version VV 161b6cee71dSXin LI>>>>0 ubyte >1 162b6cee71dSXin LI# skip HELP.CA3 by test for reserved byte ( NULL ) 163b6cee71dSXin LI>>>>>27 ubyte 0 164b6cee71dSXin LI# reserved bytes not always 0 ; also found 0x3901 (T4.DBF) ,0x7101 (T5.DBF,T6.DBF) 165b6cee71dSXin LI#>>>>>30 ubeshort x 30NULL?%x 166b6cee71dSXin LI# possible production flag,tag numbers(<=0x30),tag length(<=0x20), reserved (NULL) 167b6cee71dSXin LI>>>>>>24 ubelong&0xffFFFFff >0x01302000 168b6cee71dSXin LI# .DBF or .MDX 169b6cee71dSXin LI>>>>>>24 ubelong&0xffFFFFff <0x01302001 170b6cee71dSXin LI# for Xbase Database file (*.DBF) reserved (NULL) for multi-user 171b6cee71dSXin LI>>>>>>>24 ubelong&0xffFFFFff =0 172b6cee71dSXin LI# test for 2 reserved NULL bytes,transaction and encryption byte flag 173b6cee71dSXin LI>>>>>>>>12 ubelong&0xFFFFfEfE 0 174b6cee71dSXin LI# test for MDX flag 175b6cee71dSXin LI>>>>>>>>>28 ubyte x 176b6cee71dSXin LI>>>>>>>>>28 ubyte&0xf8 0 177b6cee71dSXin LI# header size >= 32 178b6cee71dSXin LI>>>>>>>>>>8 uleshort >31 179b6cee71dSXin LI# skip PIC15736.PCX by test for language driver name or field name 180b6cee71dSXin LI>>>>>>>>>>>32 ubyte >0 181b6cee71dSXin LI#!:mime application/x-dbf; charset=unknown-8bit ?? 182b6cee71dSXin LI#!:mime application/x-dbase 183b6cee71dSXin LI>>>>>>>>>>>>0 use xbase-type 184b6cee71dSXin LI# database file 18543a5ec4eSXin LI>>>>>>>>>>>>28 ubyte&0x04 =0 \b DBF 18643a5ec4eSXin LI!:ext dbf 18743a5ec4eSXin LI>>>>>>>>>>>>28 ubyte&0x04 =4 \b DataBaseContainer 18843a5ec4eSXin LI!:ext dbc 189b6cee71dSXin LI>>>>>>>>>>>>4 lelong 0 \b, no records 190b6cee71dSXin LI>>>>>>>>>>>>4 lelong >0 \b, %d record 191b6cee71dSXin LI# plural s appended 192b6cee71dSXin LI>>>>>>>>>>>>>4 lelong >1 \bs 19348c779cdSXin LI# https://www.clicketyclick.dk/databases/xbase/format/dbf_check.html#CHECK_DBF 194b6cee71dSXin LI# 1 <= record size <= 4000 (dBase 3,4) or 32 * KB (=0x8000) 195b6cee71dSXin LI>>>>>>>>>>>>10 uleshort x * %d 196b6cee71dSXin LI# file size = records * record size + header size 197b6cee71dSXin LI>>>>>>>>>>>>1 ubyte x \b, update-date 198b6cee71dSXin LI>>>>>>>>>>>>1 use xbase-date 19948c779cdSXin LI# https://msdn.microsoft.com/de-de/library/cc483186(v=vs.71).aspx 20043a5ec4eSXin LI#>>>>>>>>>>>>29 ubyte =0 \b, codepage ID=%#x 201b6cee71dSXin LI# 2~cp850 , 3~cp1252 , 0x1b~?? ; what code page is 0x1b ? 20243a5ec4eSXin LI>>>>>>>>>>>>29 ubyte >0 \b, codepage ID=%#x 203b6cee71dSXin LI#>>>>>>>>>>>>28 ubyte&0x01 0 \b, no index file 20443a5ec4eSXin LI# MDX or CDX index 205b6cee71dSXin LI>>>>>>>>>>>>28 ubyte&0x01 1 \b, with index file .MDX 206b6cee71dSXin LI>>>>>>>>>>>>28 ubyte&0x02 2 \b, with memo .FPT 20743a5ec4eSXin LI#>>>>>>>>>>>>28 ubyte&0x04 4 \b, DataBaseContainer 208b6cee71dSXin LI# 1st record offset + 1 = header size 209b6cee71dSXin LI>>>>>>>>>>>>8 uleshort >0 210b6cee71dSXin LI>>>>>>>>>>>>(8.s+1) ubyte >0 211b6cee71dSXin LI>>>>>>>>>>>>>8 uleshort >0 \b, at offset %d 212b6cee71dSXin LI>>>>>>>>>>>>>(8.s+1) ubyte >0 213b6cee71dSXin LI>>>>>>>>>>>>>>&-1 string >\0 1st record "%s" 21440427ccaSGordon Tetlow# for multiple index files (*.MDX) Production flag,tag numbers(<=0x30),tag length(<=0x20), reserved (NULL) 215b6cee71dSXin LI>>>>>>>24 ubelong&0x0133f7ff >0 216b6cee71dSXin LI# test for reserved NULL byte 217c2931133SXin LI>>>>>>>>47 ubyte 0 218b6cee71dSXin LI# test for valid TAG key format (0x10 or 0) 219b6cee71dSXin LI>>>>>>>>>559 ubyte&0xeF 0 220b6cee71dSXin LI# test MM <= 12 221c2931133SXin LI>>>>>>>>>>45 ubeshort <0x0C20 222c2931133SXin LI>>>>>>>>>>>45 ubyte >0 223c2931133SXin LI>>>>>>>>>>>>46 ubyte <32 224c2931133SXin LI>>>>>>>>>>>>>46 ubyte >0 225b6cee71dSXin LI#!:mime application/x-mdx 226c2931133SXin LI>>>>>>>>>>>>>>0 use xbase-type 227c2931133SXin LI>>>>>>>>>>>>>>0 ubyte x \b MDX 228c2931133SXin LI>>>>>>>>>>>>>>1 ubyte x \b, creation-date 229c2931133SXin LI>>>>>>>>>>>>>>1 use xbase-date 230c2931133SXin LI>>>>>>>>>>>>>>44 ubyte x \b, update-date 231c2931133SXin LI>>>>>>>>>>>>>>44 use xbase-date 232b6cee71dSXin LI# No.of tags in use (1,2,5,12) 233c2931133SXin LI>>>>>>>>>>>>>>28 uleshort x \b, %d 234b6cee71dSXin LI# No. of entries in tag (0x30) 235c2931133SXin LI>>>>>>>>>>>>>>25 ubyte x \b/%d tags 236b6cee71dSXin LI# Length of tag 237c2931133SXin LI>>>>>>>>>>>>>>26 ubyte x * %d 238b6cee71dSXin LI# 1st tag name_ 239b6cee71dSXin LI>>>>>>>>>>>>>548 string x \b, 1st tag "%.11s" 240b6cee71dSXin LI# 2nd tag name 241b6cee71dSXin LI#>>>>>>>>>>>>(26.b+548) string x \b, 2nd tag "%.11s" 242b6cee71dSXin LI# 243b6cee71dSXin LI# Print the xBase names of different version variants 244b6cee71dSXin LI0 name xbase-type 245b6cee71dSXin LI>0 ubyte <2 246b6cee71dSXin LI# 1 < version 247b6cee71dSXin LI>0 ubyte >1 248b6cee71dSXin LI>>0 ubyte 0x02 FoxBase 24943a5ec4eSXin LI!:mime application/x-dbf 25043a5ec4eSXin LI# like: ACCESS.DBF USER.DBF dbase3date.dbf mitarbei.dbf produkte.dbf umlaut-test-v2.dbf 251b6cee71dSXin LI# FoxBase+/dBaseIII+, no memo 252b6cee71dSXin LI>>0 ubyte 0x03 FoxBase+/dBase III 253b6cee71dSXin LI!:mime application/x-dbf 25443a5ec4eSXin LI# like: 92DATA.DBF MSCATLOG.DBF SYLLABI2.DBF SYLLABUS.DBF T4.DBF Teleadr.dbf us_city.dbf 255b6cee71dSXin LI# dBASE IV no memo file 256b6cee71dSXin LI>>0 ubyte 0x04 dBase IV 257b6cee71dSXin LI!:mime application/x-dbf 25843a5ec4eSXin LI# like: Quattro-test11.dbf umlaut-test-v4.dbf 259b6cee71dSXin LI# dBASE V no memo file 260b6cee71dSXin LI>>0 ubyte 0x05 dBase V 261b6cee71dSXin LI!:mime application/x-dbf 26243a5ec4eSXin LI# like: dbase4double.dbf Quattro-test2.dbf umlaut-test7.dbf 26343a5ec4eSXin LI!:ext dbf 26443a5ec4eSXin LI# probably Apollo Database Server 9.7? xBase (0x6) 26543a5ec4eSXin LI>>0 ubyte 0x06 Apollo 26643a5ec4eSXin LI!:mime application/x-dbf 26743a5ec4eSXin LI# like: ALIAS.DBF CRYPT.DBF PROCS.DBF USERS.DBF 26843a5ec4eSXin LI# https://docs.microsoft.com/en-us/previous-versions/visualstudio/foxpro/st4a0s68(v=vs.80) 26943a5ec4eSXin LI>>0 ubyte 0x2F FoxBase+/Dbase III plus, no memo 27043a5ec4eSXin LI!:mime application/x-dbf 27143a5ec4eSXin LI# no example 272b6cee71dSXin LI>>0 ubyte 0x30 Visual FoxPro 273b6cee71dSXin LI!:mime application/x-dbf 27443a5ec4eSXin LI# like: 26FRX.DBF 30DBC.DBF 30DBCPRO.DBF BEHINDSC.DBF USER_LEV.DBF 27543a5ec4eSXin LI# Microsoft Visual FoxPro Database Container File like: FOXPRO-DB-TEST.DBC TESTDATA.DBC TASTRADE.DBC 276b6cee71dSXin LI>>0 ubyte 0x31 Visual FoxPro, autoincrement 277b6cee71dSXin LI!:mime application/x-dbf 27843a5ec4eSXin LI# like: AI_Table.DBF dbase_31.dbf w_cityFoxpro.dbf 279b6cee71dSXin LI# Visual FoxPro, with field type Varchar or Varbinary 280b6cee71dSXin LI>>0 ubyte 0x32 Visual FoxPro, with field type Varchar 281b6cee71dSXin LI!:mime application/x-dbf 28243a5ec4eSXin LI# like: dbase_32.dbf 283b6cee71dSXin LI# dBASE IV SQL, no memo;dbv memo var size (Flagship) 284b6cee71dSXin LI>>0 ubyte 0x43 dBase IV, with SQL table 285b6cee71dSXin LI!:mime application/x-dbf 28643a5ec4eSXin LI# like: ASSEMBLY.DBF INVENTRY.DBF STAFF.DBF 28743a5ec4eSXin LI# https://docs.microsoft.com/en-us/previous-versions/visualstudio/foxpro/st4a0s68(v=vs.80) 28843a5ec4eSXin LI>>0 ubyte 0x62 dBase IV, with SQL table 289b6cee71dSXin LI#!:mime application/x-dbf 29043a5ec4eSXin LI# no example 291b6cee71dSXin LI# dBASE IV, with memo!! 292b6cee71dSXin LI>>0 ubyte 0x7b dBase IV, with memo 293b6cee71dSXin LI!:mime application/x-dbf 29443a5ec4eSXin LI# like: test3memo.DBF dbase5.DBF 29543a5ec4eSXin LI# https://docs.microsoft.com/en-us/previous-versions/visualstudio/foxpro/st4a0s68(v=vs.80) 29643a5ec4eSXin LI>>0 ubyte 0x82 dBase IV, with SQL system 297b6cee71dSXin LI#!:mime application/x-dbf 29843a5ec4eSXin LI# no example 299b6cee71dSXin LI# FoxBase+/dBaseIII+ with memo .DBT! 300b6cee71dSXin LI>>0 ubyte 0x83 FoxBase+/dBase III, with memo .DBT 301b6cee71dSXin LI!:mime application/x-dbf 30243a5ec4eSXin LI# like: T2.DBF t3.DBF biblio.dbf dbase_83.dbf dbase3dbt0_4.dbf fsadress.dbf stop.dbf 303b6cee71dSXin LI# VISUAL OBJECTS (first 1.0 versions) for the Dbase III files (NTX clipper driver); memo file 304b6cee71dSXin LI>>0 ubyte 0x87 VISUAL OBJECTS, with memo file 305b6cee71dSXin LI!:mime application/x-dbf 30643a5ec4eSXin LI# like: ACCESS.DBF dbase3date.dbf dbase3float.dbf holdings.dbf mitarbei.dbf 30743a5ec4eSXin LI# https://docs.microsoft.com/en-us/previous-versions/visualstudio/foxpro/st4a0s68(v=vs.80) 30843a5ec4eSXin LI>>0 ubyte 0x8A FoxBase+/dBase III, with memo .DBT 309b6cee71dSXin LI#!:mime application/x-dbf 31043a5ec4eSXin LI# no example 311b6cee71dSXin LI# dBASE IV with memo! 312b6cee71dSXin LI>>0 ubyte 0x8B dBase IV, with memo .DBT 313b6cee71dSXin LI!:mime application/x-dbf 31443a5ec4eSXin LI# like: animals.dbf archive.dbf callin.dbf dbase_8b.dbf phnebook.dbf t6.dbf 315b6cee71dSXin LI# dBase IV with SQL Table,no memo? 316b6cee71dSXin LI>>0 ubyte 0x8E dBase IV, with SQL table 317b6cee71dSXin LI!:mime application/x-dbf 31843a5ec4eSXin LI# like: dbase5.DBF test3memo.DBF test-memo.DBF 319b6cee71dSXin LI# .dbv and .dbt memo (Flagship)? 320b6cee71dSXin LI>>0 ubyte 0xB3 Flagship 32143a5ec4eSXin LI!:mime application/x-dbf 32243a5ec4eSXin LI# no example 32343a5ec4eSXin LI# https://docs.microsoft.com/en-us/previous-versions/visualstudio/foxpro/st4a0s68(v=vs.80) 32443a5ec4eSXin LI>>0 ubyte 0xCA dBase IV with memo .DBT 325b6cee71dSXin LI#!:mime application/x-dbf 32643a5ec4eSXin LI# no example 327b6cee71dSXin LI# dBASE IV with SQL table, with memo .DBT 328b6cee71dSXin LI>>0 ubyte 0xCB dBase IV with SQL table, with memo .DBT 329b6cee71dSXin LI!:mime application/x-dbf 33043a5ec4eSXin LI# like: dbase5.DBF test3memo.DBF test-memo.DBF 331b6cee71dSXin LI# HiPer-Six format;Clipper SIX, with SMT memo file 332b6cee71dSXin LI>>0 ubyte 0xE5 Clipper SIX with memo 333b6cee71dSXin LI!:mime application/x-dbf 33443a5ec4eSXin LI# like: dbase5.DBF test3memo.DBF test-memo.DBF testClipper.dbf DATA.DBF 33543a5ec4eSXin LI# https://docs.microsoft.com/en-us/previous-versions/visualstudio/foxpro/st4a0s68(v=vs.80) 33643a5ec4eSXin LI>>0 ubyte 0xF4 dBase IV, with SQL table, with memo 337b6cee71dSXin LI#!:mime application/x-dbf 33843a5ec4eSXin LI# no example 339b6cee71dSXin LI>>0 ubyte 0xF5 FoxPro with memo 340b6cee71dSXin LI!:mime application/x-dbf 34143a5ec4eSXin LI# like: CUSTOMER.DBF FOXUSER1.DBF Invoice.DBF NG.DBF OBJSAMP.DBF dbase_f5.dbf kunde.dbf 34243a5ec4eSXin LI# probably Apollo Database Server 9.7 with SQL and memo mask? xBase (0xF6) 34343a5ec4eSXin LI>>0 ubyte 0xF6 Apollo, with SQL table with memo 34443a5ec4eSXin LI!:mime application/x-dbf 34543a5ec4eSXin LI# like: SCRIPTS.DBF 34643a5ec4eSXin LI# https://docs.microsoft.com/en-us/previous-versions/visualstudio/foxpro/st4a0s68(v=vs.80) 347b6cee71dSXin LI#>>0 ubyte 0xFA FoxPro 2.x, with memo 348b6cee71dSXin LI#!:mime application/x-dbf 34943a5ec4eSXin LI# no example 350b6cee71dSXin LI# unknown version (should not happen) 351b6cee71dSXin LI>>0 default x xBase 352b6cee71dSXin LI!:mime application/x-dbf 35343a5ec4eSXin LI>>>0 ubyte x (%#x) 354b6cee71dSXin LI# flags in version byte 355b6cee71dSXin LI# DBT flag (with dBASE III memo .DBT)!! 356b6cee71dSXin LI# >>0 ubyte&0x80 >0 DBT_FLAG=%x 357b6cee71dSXin LI# memo flag ?? 358b6cee71dSXin LI# >>0 ubyte&0x08 >0 MEMO_FLAG=%x 359b6cee71dSXin LI# SQL flag ?? 360b6cee71dSXin LI# >>0 ubyte&0x70 >0 SQL_FLAG=%x 361b6cee71dSXin LI# test and print the date of xBase .DBF .MDX 362b6cee71dSXin LI0 name xbase-date 363b6cee71dSXin LI# inspect YYMMDD , where 1<= MM <= 12 and 1<= DD <= 31 364b6cee71dSXin LI>0 ubelong x 365b6cee71dSXin LI>1 ubyte <13 366b6cee71dSXin LI>>1 ubyte >0 367b6cee71dSXin LI>>>2 ubyte >0 368b6cee71dSXin LI>>>>2 ubyte <32 369b6cee71dSXin LI>>>>>0 ubyte x 370b6cee71dSXin LI# YY is interpreted as 20YY or 19YY 371b6cee71dSXin LI>>>>>>0 ubyte <100 \b %.2d 372b6cee71dSXin LI# YY is interpreted 1900+YY; TODO: display yy or 20yy instead 1YY 373b6cee71dSXin LI>>>>>>0 ubyte >99 \b %d 374b6cee71dSXin LI>>>>>1 ubyte x \b-%d 375b6cee71dSXin LI>>>>>2 ubyte x \b-%d 376b6cee71dSXin LI 377b6cee71dSXin LI# dBase memo files .DBT or .FPT 37848c779cdSXin LI# https://msdn.microsoft.com/en-us/library/8599s21w(v=vs.80).aspx 379b6cee71dSXin LI16 ubyte <4 380b6cee71dSXin LI>16 ubyte !2 381b6cee71dSXin LI>>16 ubyte !1 382b6cee71dSXin LI# next free block index is positive 383b6cee71dSXin LI>>>0 ulelong >0 384b6cee71dSXin LI# skip many JPG. ZIP, BZ2 by test for reserved bytes NULL , 0|2 , 0|1 , low byte of block size 385d38c30c0SXin LI>>>>17 ubelong&0xFFfdFEff 0x00000000 386b6cee71dSXin LI# skip many RAR by test for low byte 0 ,high byte 0|2|even of block size, 0|a|e|d7 , 0|64h 387b6cee71dSXin LI>>>>>20 ubelong&0xFF01209B 0x00000000 388b6cee71dSXin LI# dBASE III 389b6cee71dSXin LI>>>>>>16 ubyte 3 390898496eeSXin LI# skip with invalid "low" 1st item "\0\0\0\0" StateRepository-Deployment.srd-shm "\001\010\0\0" gcry_cast5.mod 391898496eeSXin LI>>>>>>>512 ubyte >040 392898496eeSXin LI# skip with valid 1st item "rintf" keylayouts.mod 393898496eeSXin LI# by looking for valid terminating character Ctrl-Z like in test.dbt 394898496eeSXin LI>>>>>>>>513 search/3308 \032 395898496eeSXin LI# skip GRUB plan9.mod with invalid second terminating character 007 396898496eeSXin LI# by checking second terminating character Ctrl-Z like in test.dbt 397898496eeSXin LI>>>>>>>>>&0 ubyte 032 398898496eeSXin LI# dBASE III DBT with two Ctr-Z terminating characters 399898496eeSXin LI>>>>>>>>>>0 use dbase3-memo-print 400898496eeSXin LI# second terminating character \0 like in dbase-memo.dbt or GRUB nativedisk.mod 401898496eeSXin LI>>>>>>>>>&0 ubyte 0 402898496eeSXin LI# skip GRUB nativedisk.mod with grub_mod_init\0grub_mod_fini\0grub_fs_autoload_hook\0 403898496eeSXin LI>>>>>>>>>>0x1ad string !grub_mod_init 404898496eeSXin LI# like dbase-memo.dbt 405898496eeSXin LI>>>>>>>>>>>0 use dbase3-memo-print 406c2931133SXin LI# dBASE III DBT without version, dBASE IV DBT , FoxPro FPT , or many ZIP , DBF garbage 407b6cee71dSXin LI>>>>>>16 ubyte 0 408c2931133SXin LI# unusual dBASE III DBT like angest.dbt, dBASE IV DBT with block size 0 , FoxPro FPT , or garbage PCX DBF 409c2931133SXin LI>>>>>>>20 uleshort 0 410c2931133SXin LI# FoxPro FPT , unusual dBASE III DBT like biblio.dbt or garbage 411c2931133SXin LI>>>>>>>>8 ulong =0 412c2931133SXin LI>>>>>>>>>6 ubeshort >0 413c2931133SXin LI# skip emacs.PIF 414c2931133SXin LI>>>>>>>>>>4 ushort 0 415d38c30c0SXin LI# check for valid FoxPro field type 416d38c30c0SXin LI>>>>>>>>>>>512 ubelong <3 417a4d6d3b8SXin LI# skip LXMDCLN4.OUT LXMDCLN6.OUT LXMDALG6.OUT with invalid blocksize 170=AAh 418a4d6d3b8SXin LI>>>>>>>>>>>>6 ubeshort&0x002f 0 419a4d6d3b8SXin LI>>>>>>>>>>>>>0 use foxpro-memo-print 420c2931133SXin LI# dBASE III DBT , garbage 421d38c30c0SXin LI# skip WORD1XW.DOC with improbably high free block index 4222726a701SXin LI>>>>>>>>>0 ulelong <0x400000 4232726a701SXin LI# skip WinStore.App.exe by looking for printable 2nd character of 1st memo item 4242726a701SXin LI>>>>>>>>>>513 ubyte >037 425a2dfb722SXin LI# skip DOS executables CPQ0TD.DRV E30ODI.COM IBM0MONO.DRV by looking for printable 1st character of 1st memo item 426a2dfb722SXin LI>>>>>>>>>>>512 ubyte >037 427898496eeSXin LI# skip few (14/758) Microsoft Event Trace Logs (boot_BASE+CSWITCH_1.etl DlTel-Merge.etl UpdateUx.006.etl) with invalid "high" 1st item \377\377 428898496eeSXin LI>>>>>>>>>>>>512 ubyte <0377 429898496eeSXin LI# skip some Commodore 64 Art Studio (Deep_Strike.aas dragon's_lair_ii.aas), some Atari DEGAS Elite bitmap (ELEPHANT.PC3 ST.PC2) 430898496eeSXin LI# some probably old GRUB modules (part_sun.mod) and virtual-boy-wario-land.vb. 431898496eeSXin LI# by looking for valid terminating character Ctrl-Z 432898496eeSXin LI>>>>>>>>>>>>>513 search/523 \032 433898496eeSXin LI# Atari DEGAS bitmap ST.PC2 with 0370 as second terminating character 434898496eeSXin LI#>>>>>>>>>>>>>>&0 ubyte x 2ND_CHAR_IS=%o 435898496eeSXin LI# dBASE III DBT with two Ctr-Z terminating characters like dbase3dbt0_1.dbt dbase_83.dbt 436898496eeSXin LI>>>>>>>>>>>>>>&0 ubyte 032 437898496eeSXin LI>>>>>>>>>>>>>>>0 use dbase3-memo-print 438898496eeSXin LI# second terminating character \0 like in pcidump.mod or fsadress.dbt umlaut-dbf-cmd.dbt 439898496eeSXin LI>>>>>>>>>>>>>>&0 ubyte 0 440898496eeSXin LI# look for old GRUB module pcidump.mod with specific content "pcidump\0Show raw dump of the PCI configuration space" 441898496eeSXin LI>>>>>>>>>>>>>>>514 search/0x11E pcidump\0Show 442898496eeSXin LI# dBASE III DBT with Ctr-Z + \0 terminating characters like fsadress.dbt 443898496eeSXin LI>>>>>>>>>>>>>>>514 default x 444898496eeSXin LI# unusual dBASE III DBT like fsadress.dbt umlaut-dbf-cmd.dbt 445898496eeSXin LI>>>>>>>>>>>>>>>>0 use dbase3-memo-print 446c2931133SXin LI# dBASE III DBT like angest.dbt, or garbage PCX DBF 447c2931133SXin LI>>>>>>>>8 ubelong !0 448c2931133SXin LI# skip PCX and some DBF by test for for reserved NULL bytes 449c2931133SXin LI>>>>>>>>>510 ubeshort 0 4502726a701SXin LI# skip bad symples with improbably high free block index above 2 GiB file limit 4512726a701SXin LI>>>>>>>>>>0 ulelong <0x400000 4522726a701SXin LI# skip AI070GEP.EPS by printable 1st character of 1st memo item 4532726a701SXin LI>>>>>>>>>>>512 ubyte >037 454a4d6d3b8SXin LI# skip some Microsoft Visual C, OMF library like: BZ2.LIB WATTCPWL.LIB ZLIB.LIB 455a4d6d3b8SXin LI>>>>>>>>>>>>512 ubyte <0200 4562726a701SXin LI# skip gluon-ffhat-1.0-tp-link-tl-wr1043n-nd-v2-sysupgrade.bin by printable 2nd character 457a4d6d3b8SXin LI>>>>>>>>>>>>>513 ubyte >037 458898496eeSXin LI# skip few (8/758) Microsoft Event Trace Logs (WBEngine.3.etl Wifi.etl) with valid 1st item like 459898496eeSXin LI# "9600.20369.amd64fre.winblue_ltsb_escrow.220427-1727" 460898496eeSXin LI# "9600.19846.amd64fre.winblue_ltsb_escrow.200923-1735" 461898496eeSXin LI# "10586.494.amd64fre.th2_release_sec.160630-1736" 462898496eeSXin LI# by looking for valid terminating character Ctrl-Z 463898496eeSXin LI>>>>>>>>>>>>>>513 search/0x11E \032 464898496eeSXin LI# followed by second character Ctrl-Z implies typical DBT 465898496eeSXin LI>>>>>>>>>>>>>>>&0 ubyte 032 466898496eeSXin LI# examples like: angest.dbt 467898496eeSXin LI>>>>>>>>>>>>>>>>0 use dbase3-memo-print 468898496eeSXin LI>>>>>>>>>>>>>>>&0 ubyte 0 469898496eeSXin LI# no example found here with terminating sequence CTRL-Z + \0 470898496eeSXin LI>>>>>>>>>>>>>>>>0 use dbase3-memo-print 471c2931133SXin LI# dBASE IV DBT with positive block size 472c2931133SXin LI>>>>>>>20 uleshort >0 4733e41d09dSXin LI# dBASE IV DBT with valid block length like 512, 1024 4743e41d09dSXin LI# multiple of 2 in between 16 and 16 K ,implies upper and lower bits are zero 475d38c30c0SXin LI# skip also 3600h 3E00h size 476d38c30c0SXin LI>>>>>>>>20 uleshort&0xE00f 0 4773e41d09dSXin LI>>>>>>>>>0 use dbase4-memo-print 478b6cee71dSXin LI 479c2931133SXin LI# Print the information of dBase III DBT memo file 480c2931133SXin LI0 name dbase3-memo-print 481c2931133SXin LI>0 ubyte x dBase III DBT 482d38c30c0SXin LI!:mime application/x-dbt 483d38c30c0SXin LI!:ext dbt 484c2931133SXin LI# instead 3 as version number 0 for unusual examples like biblio.dbt 485c2931133SXin LI>16 ubyte !3 \b, version number %u 486b6cee71dSXin LI# Number of next available block for appending data 487c2931133SXin LI#>0 lelong =0 \b, next free block index %u 488c2931133SXin LI>0 lelong !0 \b, next free block index %u 48943a5ec4eSXin LI# no positive block length 490c2931133SXin LI#>20 uleshort =0 \b, block length %u 491c2931133SXin LI>20 uleshort !0 \b, block length %u 492898496eeSXin LI# dBase III memo field terminated often by \032\032 493a4d6d3b8SXin LI# like: "WHAT IS XBASE" test.dbt "Borges, Malte" biblio.dbt "First memo\032\032" T2.DBT 494c2931133SXin LI>512 string >\0 \b, 1st item "%s" 495a4d6d3b8SXin LI# For DEBUGGING 496a4d6d3b8SXin LI#>512 ubelong x \b, 1ST item %#8.8x 497898496eeSXin LI#>513 search/0x225 \032 FOUND_TERMINATOR 498898496eeSXin LI#>>&0 ubyte 032 2xCTRL_Z 499898496eeSXin LI# fsadress.dbt has 1 Ctrl-Z terminator followed by nil byte 500898496eeSXin LI#>>&0 ubyte 0 1xCTRL_Z 501898496eeSXin LI 502d38c30c0SXin LI# https://www.clicketyclick.dk/databases/xbase/format/dbt.html 503c2931133SXin LI# Print the information of dBase IV DBT memo file 504c2931133SXin LI0 name dbase4-memo-print 505c2931133SXin LI>0 lelong x dBase IV DBT 5063e41d09dSXin LI!:mime application/x-dbt 5073e41d09dSXin LI!:ext dbt 50843a5ec4eSXin LI# 8 character shorted main name of corresponding dBASE IV DBF file 509c2931133SXin LI>8 ubelong >0x20000000 510c2931133SXin LI# skip unusual like for angest.dbt 511c2931133SXin LI>>20 uleshort >0 512c2931133SXin LI>>>8 string >\0 \b of %-.8s.DBF 513c2931133SXin LI# value 0 implies 512 as size 514c2931133SXin LI#>4 ulelong =0 \b, blocks size %u 515c2931133SXin LI# size of blocks not reliable like 0x2020204C in angest.dbt 516c2931133SXin LI>4 ulelong !0 517c2931133SXin LI>>4 ulelong&0x0000003f 0 \b, blocks size %u 518c2931133SXin LI# dBase IV DBT with positive block length (found 512 , 1024) 519c2931133SXin LI>20 uleshort >0 \b, block length %u 520c2931133SXin LI# next available block 521c2931133SXin LI#>0 lelong =0 \b, next free block index %u 522c2931133SXin LI>0 lelong !0 \b, next free block index %u 523c2931133SXin LI>20 uleshort >0 524c2931133SXin LI>>(20.s) ubelong x 525c2931133SXin LI>>>&-4 use dbase4-memofield-print 526c2931133SXin LI# unusual dBase IV DBT without block length (implies 512 as length) 527c2931133SXin LI>20 uleshort =0 528b6cee71dSXin LI>>512 ubelong x 529c2931133SXin LI>>>&-4 use dbase4-memofield-print 530c2931133SXin LI# Print the information of dBase IV memo field 531c2931133SXin LI0 name dbase4-memofield-print 532c2931133SXin LI# free dBase IV memo field 533c2931133SXin LI>0 ubelong !0xFFFF0800 534c2931133SXin LI>>0 lelong x \b, next free block %u 535c2931133SXin LI>>4 lelong x \b, next used block %u 536c2931133SXin LI# used dBase IV memo field 537c2931133SXin LI>0 ubelong =0xFFFF0800 538c2931133SXin LI# length of memo field 539c2931133SXin LI>>4 lelong x \b, field length %d 540c2931133SXin LI>>>8 string >\0 \b, 1st used item "%s" 541d38c30c0SXin LI# http://www.dbfree.org/webdocs/1-documentation/0018-developers_stuff_(advanced)/os_related_stuff/xbase_file_format.htm 542c2931133SXin LI# Print the information of FoxPro FPT memo file 543c2931133SXin LI0 name foxpro-memo-print 544c2931133SXin LI>0 belong x FoxPro FPT 545d38c30c0SXin LI!:mime application/x-fpt 546d38c30c0SXin LI!:ext fpt 547a4d6d3b8SXin LI# Size of blocks for FoxPro ( 64,256 ); probably a multiple of two 548c2931133SXin LI>6 ubeshort x \b, blocks size %u 549c2931133SXin LI# next available block 550c2931133SXin LI#>0 belong =0 \b, next free block index %u 551c2931133SXin LI>0 belong !0 \b, next free block index %u 552c2931133SXin LI# field type ( 0~picture, 1~memo, 2~object ) 553c2931133SXin LI>512 ubelong <3 \b, field type %u 554c2931133SXin LI# length of memo field 555c2931133SXin LI>512 ubelong 1 556c2931133SXin LI>>516 belong >0 \b, field length %d 557c2931133SXin LI>>>520 string >\0 \b, 1st item "%s" 558b6cee71dSXin LI 55943a5ec4eSXin LI# Summary: DBASE Compound Index file *.CDX and FoxPro index *.IDX 56043a5ec4eSXin LI# From: Joerg Jenderek 56143a5ec4eSXin LI# URL: https://www.clicketyclick.dk/databases/xbase/format/cdx.html 56243a5ec4eSXin LI# https://www.clicketyclick.dk/databases/xbase/format/idx.html 56343a5ec4eSXin LI# https://www.clicketyclick.dk/databases/xbase/format/idx_comp.html 56443a5ec4eSXin LI# Reference: https://mark0.net/download/triddefs_xml.7z/defs/s/sybase-ianywhere-cdx.trid.xml 56543a5ec4eSXin LI# https://mark0.net/download/triddefs_xml.7z/defs/c/cdx-vfp7.trid.xml 56643a5ec4eSXin LI# like: kunde.cdx 56743a5ec4eSXin LI0 ulelong 0x1C00 56843a5ec4eSXin LI>0 use xbase-index 56943a5ec4eSXin LI# like: SYLLABI2.CDX SYLLABUS.CDX 57043a5ec4eSXin LI0 ulelong 0x0800 57143a5ec4eSXin LI>0 use xbase-index 57243a5ec4eSXin LI# often in xBase index pointer to root node 400h 57343a5ec4eSXin LI0 ulelong 0x0400 57443a5ec4eSXin LI# skip most Maple help database *.hdb with version tag handled by ./maple 57543a5ec4eSXin LI>1028 string !version 57643a5ec4eSXin LI# skip Maple help database hsum.hdb checking for valid reserved area 57743a5ec4eSXin LI>>492 quad =0 57843a5ec4eSXin LI# skip remaining Maple help database *.hdb by checking key length 57943a5ec4eSXin LI#>>>12 uleshort !0x000F KEY_LENGTHVALID 58043a5ec4eSXin LI>>>0 use xbase-index 58143a5ec4eSXin LI# display information about dBase/FoxPro index 58243a5ec4eSXin LI0 name xbase-index 58343a5ec4eSXin LI>0 ulelong x xBase 58443a5ec4eSXin LI!:mime application/x-dbase-index 58543a5ec4eSXin LI>14 ubyte &0x40 compound index 58643a5ec4eSXin LI# DCX for FoxPro database index like: TESTDATA.DCX 58743a5ec4eSXin LI!:ext cdx/dcx 58843a5ec4eSXin LI>14 ubyte ^0x40 index 58943a5ec4eSXin LI# only 1 example like: TEST.IDX 59043a5ec4eSXin LI!:ext idx 59143a5ec4eSXin LI# pointer to root node like: 1C00h 800h often 400h 59243a5ec4eSXin LI>0 ulelong !0x400 \b, root pointer %#x 59343a5ec4eSXin LI# Pointer to free node list: often 0 but -1 if not present 59443a5ec4eSXin LI>4 ulelong !0 \b, free node pointer %#x 59543a5ec4eSXin LI# MAYBE number of pages in file (Foxbase, FoxPro 1.x) or 59643a5ec4eSXin LI# http://www.foxpert.com/foxpro/knowlbits/files/knowlbits_200708_1.HTM 59743a5ec4eSXin LI# Whenever Visual FoxPro updates the index file it increments this reserved field 59843a5ec4eSXin LI# Reserved for internal use like: 02000000h 03000000h 460c0000h 780f0000h 89000000h 9fdc0100h often 0 59943a5ec4eSXin LI>8 ulelong !0 \b, reserved counter %#x 60043a5ec4eSXin LI# length of key like: mostly 000Ah 0028h (TEST.IDX) 60143a5ec4eSXin LI>12 uleshort !0x000A \b, key length %#x 60243a5ec4eSXin LI# index options like: 24h E0h E8h 60343a5ec4eSXin LI# 1~a unique index 8~index has FOR clause 32~compact index format 64~compound index header 60443a5ec4eSXin LI# 16~Bit vector (SoftC) 128~Structure index (FoxPro) 60543a5ec4eSXin LI>14 ubyte x \b, index options (%#x 60643a5ec4eSXin LI>14 ubyte &0x01 \b, unique 60743a5ec4eSXin LI>14 ubyte &0x08 \b, has FOR clause 60843a5ec4eSXin LI>14 ubyte &0x10 \b, bit vector (SoftC) 60943a5ec4eSXin LI>14 ubyte &0x20 \b, compact format 61043a5ec4eSXin LI#>14 ubyte &0x40 \b, compound header 61143a5ec4eSXin LI>14 ubyte &0x80 \b, structure 61243a5ec4eSXin LI>14 ubyte x \b) 61343a5ec4eSXin LI# WHAT EXACTLY IS THAT? index signature like: 0 (sybase-ianywhere-cdx.trid.xml) 1 (cdx-vfp7.trid.xml) 61443a5ec4eSXin LI>15 ubyte !0 \b, index signature %u 61543a5ec4eSXin LI# reserved area (0-bytes) til about 500, but not for uncompressed Index files *.idx 61643a5ec4eSXin LI>16 quad !0 \b, at 16 reserved %#llx 61743a5ec4eSXin LI>492 quad !0 \b, at 492 reserved %#llx 61843a5ec4eSXin LI# for IDX variant 61943a5ec4eSXin LI#>14 ubyte ^0x40 IDX 62043a5ec4eSXin LI# for CDX variant 62143a5ec4eSXin LI>14 ubyte &0x40 62243a5ec4eSXin LI# Ascending or descending: 0~ascending 1~descending 62343a5ec4eSXin LI>>502 uleshort x \b, sort order %u 62443a5ec4eSXin LI# Total expression length (FoxPro 2) like: 0 1 62543a5ec4eSXin LI>>504 uleshort !0 \b, expression length %u 62643a5ec4eSXin LI# FOR expression pool length like: 1 62743a5ec4eSXin LI>>506 uleshort !1 \b, FOR expression pool length %#x 62843a5ec4eSXin LI# reserved for internal use like: 0 62943a5ec4eSXin LI>>508 uleshort !0 \b, at 0x508 reserved %#x 63043a5ec4eSXin LI# Key expression pool length like: 1 63143a5ec4eSXin LI>>510 uleshort !1 \b, key expression pool length %#x 63243a5ec4eSXin LI# 512 - 1023 Key & FOR expression pool (uncompiled) 63343a5ec4eSXin LI>>512 quad !0 \b, key expression pool %#llx 63443a5ec4eSXin LI#>>520 quad !0 \b, key expression pool %#llx 63543a5ec4eSXin LI 63643a5ec4eSXin LI# Summary: dBASE IV Printer Form *.PRF 63743a5ec4eSXin LI# From: Joerg Jenderek 63843a5ec4eSXin LI# URL: https://en.wikipedia.org/wiki/.dbf#Other_file_types_found_in_dBASE 63943a5ec4eSXin LI# Reference: https://mark0.net/download/triddefs_xml.7z/defs/p/prf-dbase.trid.xml 64043a5ec4eSXin LI0 ubeshort 0x0400 64143a5ec4eSXin LI# skip some Xbase Index files *.ndx and Infocom (Z-machine 4) *.z4 handled by ./adventure 64243a5ec4eSXin LI# by looking for valid printer driver name extension 64343a5ec4eSXin LI>0x58 search/8 .PR2 64443a5ec4eSXin LI>>0 use xbase-prf 64543a5ec4eSXin LI# display information of dbase print form like printer driver *.PR2 64643a5ec4eSXin LI0 name xbase-prf dBase Printer Form 64743a5ec4eSXin LI!:mime application/x-dbase-prf 64843a5ec4eSXin LI!:ext prf 64943a5ec4eSXin LI# MAYBE version? like: 4~DBASE IV 65043a5ec4eSXin LI#>0 ubyte x \b, version %u 65143a5ec4eSXin LI# MAYBE flag like: 1~with output file name 0~not 65243a5ec4eSXin LI#>2 ubyte !0 \b, flag %u 65343a5ec4eSXin LI# optional printer text output file name like E:\DBASE\IV\T6.txt 65443a5ec4eSXin LI>3 string >\0 \b, output file %s 65543a5ec4eSXin LI# probably padding with nils til 0x53 65643a5ec4eSXin LI#>0x48 uquad !0 \b, at 0x48 padding %#llx 65743a5ec4eSXin LI# dBASE IV printer driver name like: Generic.PR2 ASCII.PR2 65843a5ec4eSXin LI>0x56 string >\0 \b, using printer driver %s 65943a5ec4eSXin LI# 2 is probably last character of previous dBASE printer driver name 66043a5ec4eSXin LI#>0x60 ubyte !0x32 \b, at 0x60 %#x 66143a5ec4eSXin LI# probably padding with nils til 0xa8 66243a5ec4eSXin LI#>0x61 uquad !0 \b, at 0x61 padding %#llx 66343a5ec4eSXin LI# unknown 0x03020300 0x03020100 at 0xa8 66443a5ec4eSXin LI>0xa8 ubelong x \b, at 0xa8 unknown %#8.8x 66543a5ec4eSXin LI# probably padding with nils til 0x2aa 66643a5ec4eSXin LI#>0x2a0 uquad !0 \b, at 0x2a0 padding %#llx 66743a5ec4eSXin LI# unknown 0x100ff7f01000001 at 0x2AB 66843a5ec4eSXin LI>0x2ab ubequad !0x100ff7f01000001 \b, at 0x2ab unknown %#llx 66943a5ec4eSXin LI# unknown 0x0042 at 0x2b3 67043a5ec4eSXin LI>0x2b3 ubeshort !0x0042 \b, at 0x2b3 unknown %#4.4x 67143a5ec4eSXin LI# unknown last 4 bytes at 0x2b6 like: 0 0x23 67243a5ec4eSXin LI>0x2b6 ubelong !0 \b, at 0x2b6 unknown %#8.8x 67343a5ec4eSXin LI 674b6cee71dSXin LI# TODO: 675b6cee71dSXin LI# DBASE index file *.NDX 67643a5ec4eSXin LI# dBASE compiled Format *.FMO 67743a5ec4eSXin LI# FoxPro Database memo file *.DCT 67843a5ec4eSXin LI# FoxPro Forms Memo *.SCT 67943a5ec4eSXin LI# FoxPro Generated Menu Program *.MPR 68043a5ec4eSXin LI# FoxPro Report *.FRX 68143a5ec4eSXin LI# FoxPro Report Memo *.FRT 68243a5ec4eSXin LI# Foxpro Generated Screen Program *.SPR 68343a5ec4eSXin LI# Foxpro memo *.PJT 684b6cee71dSXin LI## End of XBase database stuff 685b6cee71dSXin LI 686b6cee71dSXin LI# MS Access database 687b6cee71dSXin LI4 string Standard\ Jet\ DB Microsoft Access Database 688b6cee71dSXin LI!:mime application/x-msaccess 689b6cee71dSXin LI4 string Standard\ ACE\ DB Microsoft Access Database 690b6cee71dSXin LI!:mime application/x-msaccess 691b6cee71dSXin LI 6923e41d09dSXin LI# From: Joerg Jenderek 6933e41d09dSXin LI# URL: http://fileformats.archiveteam.org/wiki/Extensible_Storage_Engine 6943e41d09dSXin LI# Reference: https://github.com/libyal/libesedb/archive/master.zip 6953e41d09dSXin LI# libesedb-master/documentation/ 6963e41d09dSXin LI# Extensible Storage Engine (ESE) Database File (EDB) format.asciidoc 6973e41d09dSXin LI# Note: also known as "JET Blue". Used by numerous Windows components such as 6983e41d09dSXin LI# Windows Search, Mail, Exchange and Active Directory. 6993e41d09dSXin LI4 ubelong 0xefcdab89 7003e41d09dSXin LI# unknown1 7013e41d09dSXin LI>132 ubelong 0 Extensible storage engine 7023e41d09dSXin LI!:mime application/x-ms-ese 7033e41d09dSXin LI# file_type 0~database 1~stream 7043e41d09dSXin LI>>12 ulelong 0 DataBase 7053e41d09dSXin LI# Security DataBase (sdb) 7063e41d09dSXin LI!:ext edb/sdb 7073e41d09dSXin LI>>12 ulelong 1 STreaMing 7083e41d09dSXin LI!:ext stm 7093e41d09dSXin LI# format_version 620h 71043a5ec4eSXin LI>>8 uleshort x \b, version %#x 71143a5ec4eSXin LI>>10 uleshort >0 revision %#4.4x 71243a5ec4eSXin LI>>0 ubelong x \b, checksum %#8.8x 7133e41d09dSXin LI# Page size 4096 8192 32768 7143e41d09dSXin LI>>236 ulequad x \b, page size %lld 7153e41d09dSXin LI# database_state 7163e41d09dSXin LI>>52 ulelong 1 \b, JustCreated 7173e41d09dSXin LI>>52 ulelong 2 \b, DirtyShutdown 7183e41d09dSXin LI#>>52 ulelong 3 \b, CleanShutdown 7193e41d09dSXin LI>>52 ulelong 4 \b, BeingConverted 7203e41d09dSXin LI>>52 ulelong 5 \b, ForceDetach 7212726a701SXin LI# Windows NT major version when the databases indexes were updated. 7223e41d09dSXin LI>>216 ulelong x \b, Windows version %d 7232726a701SXin LI# Windows NT minor version 7243e41d09dSXin LI>>220 ulelong x \b.%d 7253e41d09dSXin LI 7263e41d09dSXin LI# From: Joerg Jenderek 72748c779cdSXin LI# URL: https://forensicswiki.org/wiki/Windows_Application_Compatibility 7283e41d09dSXin LI# Note: files contain application compatibility fixes, application compatibility modes and application help messages. 7293e41d09dSXin LI8 string sdbf 7303e41d09dSXin LI>7 ubyte 0 7313e41d09dSXin LI# TAG_TYPE_LIST+TAG_INDEXES 7323e41d09dSXin LI>>12 uleshort 0x7802 Windows application compatibility Shim DataBase 7333e41d09dSXin LI# version? 2 3 7343e41d09dSXin LI#>>>0 ulelong x \b, version %d 7353e41d09dSXin LI!:mime application/x-ms-sdb 7363e41d09dSXin LI!:ext sdb 7373e41d09dSXin LI 738b6cee71dSXin LI# TDB database from Samba et al - Martin Pool <mbp@samba.org> 739b6cee71dSXin LI0 string TDB\ file TDB database 740b6cee71dSXin LI>32 lelong 0x2601196D version 6, little-endian 741b6cee71dSXin LI>>36 lelong x hash size %d bytes 742b6cee71dSXin LI 743b6cee71dSXin LI# ICE authority file data (Wolfram Kleff) 744b6cee71dSXin LI2 string ICE ICE authority data 745b6cee71dSXin LI 746b6cee71dSXin LI# X11 Xauthority file (Wolfram Kleff) 747b6cee71dSXin LI10 string MIT-MAGIC-COOKIE-1 X11 Xauthority data 748b6cee71dSXin LI11 string MIT-MAGIC-COOKIE-1 X11 Xauthority data 749b6cee71dSXin LI12 string MIT-MAGIC-COOKIE-1 X11 Xauthority data 750b6cee71dSXin LI13 string MIT-MAGIC-COOKIE-1 X11 Xauthority data 751b6cee71dSXin LI14 string MIT-MAGIC-COOKIE-1 X11 Xauthority data 752b6cee71dSXin LI15 string MIT-MAGIC-COOKIE-1 X11 Xauthority data 753b6cee71dSXin LI16 string MIT-MAGIC-COOKIE-1 X11 Xauthority data 754b6cee71dSXin LI17 string MIT-MAGIC-COOKIE-1 X11 Xauthority data 755b6cee71dSXin LI18 string MIT-MAGIC-COOKIE-1 X11 Xauthority data 756b6cee71dSXin LI 757b6cee71dSXin LI# From: Maxime Henrion <mux@FreeBSD.org> 758b6cee71dSXin LI# PostgreSQL's custom dump format, Maxime Henrion <mux@FreeBSD.org> 759b6cee71dSXin LI0 string PGDMP PostgreSQL custom database dump 760b6cee71dSXin LI>5 byte x - v%d 761b6cee71dSXin LI>6 byte x \b.%d 762b6cee71dSXin LI>5 beshort <0x101 \b-0 763b6cee71dSXin LI>5 beshort >0x100 764b6cee71dSXin LI>>7 byte x \b-%d 765b6cee71dSXin LI 766b6cee71dSXin LI# Type: Advanced Data Format (ADF) database 76748c779cdSXin LI# URL: https://www.grc.nasa.gov/WWW/cgns/adf/ 768b6cee71dSXin LI# From: Nicolas Chauvat <nicolas.chauvat@logilab.fr> 769b6cee71dSXin LI0 string @(#)ADF\ Database CGNS Advanced Data Format 770b6cee71dSXin LI 771b6cee71dSXin LI# Tokyo Cabinet magic data 772b6cee71dSXin LI# http://tokyocabinet.sourceforge.net/index.html 773b6cee71dSXin LI0 string ToKyO\ CaBiNeT\n Tokyo Cabinet 774b6cee71dSXin LI>14 string x \b (%s) 775b6cee71dSXin LI>32 byte 0 \b, Hash 776b6cee71dSXin LI!:mime application/x-tokyocabinet-hash 777b6cee71dSXin LI>32 byte 1 \b, B+ tree 778b6cee71dSXin LI!:mime application/x-tokyocabinet-btree 779b6cee71dSXin LI>32 byte 2 \b, Fixed-length 780b6cee71dSXin LI!:mime application/x-tokyocabinet-fixed 781b6cee71dSXin LI>32 byte 3 \b, Table 782b6cee71dSXin LI!:mime application/x-tokyocabinet-table 783b6cee71dSXin LI>33 byte &1 \b, [open] 784b6cee71dSXin LI>33 byte &2 \b, [fatal] 785b6cee71dSXin LI>34 byte x \b, apow=%d 786b6cee71dSXin LI>35 byte x \b, fpow=%d 787b6cee71dSXin LI>36 byte &0x01 \b, [large] 788b6cee71dSXin LI>36 byte &0x02 \b, [deflate] 789b6cee71dSXin LI>36 byte &0x04 \b, [bzip] 790b6cee71dSXin LI>36 byte &0x08 \b, [tcbs] 791b6cee71dSXin LI>36 byte &0x10 \b, [excodec] 792b6cee71dSXin LI>40 lequad x \b, bnum=%lld 793b6cee71dSXin LI>48 lequad x \b, rnum=%lld 794b6cee71dSXin LI>56 lequad x \b, fsiz=%lld 795b6cee71dSXin LI 796b6cee71dSXin LI# Type: QDBM Quick Database Manager 797b6cee71dSXin LI# From: Benoit Sibaud <bsibaud@april.org> 798b6cee71dSXin LI0 string \\[depot\\]\n\f Quick Database Manager, little endian 799b6cee71dSXin LI0 string \\[DEPOT\\]\n\f Quick Database Manager, big endian 800b6cee71dSXin LI 801b6cee71dSXin LI# Type: TokyoCabinet database 802b6cee71dSXin LI# URL: http://tokyocabinet.sourceforge.net/ 803b6cee71dSXin LI# From: Benoit Sibaud <bsibaud@april.org> 804b6cee71dSXin LI0 string ToKyO\ CaBiNeT\n TokyoCabinet database 805b6cee71dSXin LI>14 string x (version %s) 806b6cee71dSXin LI 80748c779cdSXin LI# From: Stephane Blondon https://www.yaal.fr 808b6cee71dSXin LI# Database file for Zope (done by FileStorage) 8099fc5c47fSXin LI0 string FS21 Zope Object Database File Storage v3 (data) 8109fc5c47fSXin LI0 string FS30 Zope Object Database File Storage v4 (data) 8119fc5c47fSXin LI 812b6cee71dSXin LI# Cache file for the database of Zope (done by ClientStorage) 813b6cee71dSXin LI0 string ZEC3 Zope Object Database Client Cache File (data) 814b6cee71dSXin LI 815b6cee71dSXin LI# IDA (Interactive Disassembler) database 816*ae316d1dSXin LI0 string IDA0 IDA (Interactive Disassembler) database 817b6cee71dSXin LI0 string IDA1 IDA (Interactive Disassembler) database 818*ae316d1dSXin LI0 string IDA2 IDA (Interactive Disassembler) database 8199ce06829SXin LI 82048c779cdSXin LI# Hopper (reverse engineering tool) https://www.hopperapp.com/ 8219ce06829SXin LI0 string hopperdb Hopper database 8229ce06829SXin LI 8233e41d09dSXin LI# URL: https://en.wikipedia.org/wiki/Panorama_(database_engine) 8243e41d09dSXin LI# Reference: http://www.provue.com/Panorama/ 8253e41d09dSXin LI# From: Joerg Jenderek 8263e41d09dSXin LI# NOTE: test only versions 4 and 6.0 with Windows 8273e41d09dSXin LI# length of Panorama database name 8283e41d09dSXin LI5 ubyte >0 8293e41d09dSXin LI# look after database name for "some" null bits 8303e41d09dSXin LI>(5.B+7) ubelong&0xF3ffF000 0 8313e41d09dSXin LI# look for first keyword 8323e41d09dSXin LI>>&1 search/2 DESIGN Panorama database 8333e41d09dSXin LI#!:mime application/x-panorama-database 8343e41d09dSXin LI!:apple KASXZEPD 8353e41d09dSXin LI!:ext pan 8363e41d09dSXin LI# database name 8373e41d09dSXin LI>>>5 pstring x \b, "%s" 838282e23f0SXin LI 839282e23f0SXin LI# 840282e23f0SXin LI# 841282e23f0SXin LI# askSam Database by Stefan A. Haubenthal <polluks@web.de> 842282e23f0SXin LI0 string askw40\0 askSam DB 843282e23f0SXin LI 844282e23f0SXin LI# 845282e23f0SXin LI# 846282e23f0SXin LI# MUIbase Database Tool by Stefan A. Haubenthal <polluks@web.de> 847282e23f0SXin LI0 string MBSTV\040 MUIbase DB 848282e23f0SXin LI>6 string x version %s 84940427ccaSGordon Tetlow 85040427ccaSGordon Tetlow# 85140427ccaSGordon Tetlow# CDB database 85240427ccaSGordon Tetlow0 string NBCDB\012 NetBSD Constant Database 85340427ccaSGordon Tetlow>7 byte x \b, version %d 85440427ccaSGordon Tetlow>8 string x \b, for '%s' 85540427ccaSGordon Tetlow>24 lelong x \b, datasize %d 85640427ccaSGordon Tetlow>28 lelong x \b, entries %d 85740427ccaSGordon Tetlow>32 lelong x \b, index %d 85840427ccaSGordon Tetlow>36 lelong x \b, seed %#x 8592dc4dbb9SEitan Adler 8602dc4dbb9SEitan Adler# 8612dc4dbb9SEitan Adler# Redis RDB - https://redis.io/topics/persistence 8622dc4dbb9SEitan Adler0 string REDIS Redis RDB file, 8632dc4dbb9SEitan Adler>5 regex [0-9][0-9][0-9][0-9] version %s 8642dc4dbb9SEitan Adler 8652dc4dbb9SEitan Adler# Mork database. 8662dc4dbb9SEitan Adler# Used by older versions of Mozilla Suite and Firefox, 8672dc4dbb9SEitan Adler# and current versions of Thunderbird. 8682dc4dbb9SEitan Adler# From: David Korth <gerbilsoft@gerbilsoft.com> 869*ae316d1dSXin LI# Update: Joerg Jenderek 870*ae316d1dSXin LI# URL: http://fileformats.archiveteam.org/wiki/Mork 871*ae316d1dSXin LI# https://en.wikipedia.org/wiki/Mork_(file_format) 872*ae316d1dSXin LI# Note: called "Mork" by DROID via fmt/612 8732dc4dbb9SEitan Adler0 string //\ <!--\ <mdb:mork:z\ v=" Mozilla Mork database 874*ae316d1dSXin LI# display Mozilla Mork database (strength=260=260+0) before "exported SGML document" (strength=28=38-10) via ./sgml 875*ae316d1dSXin LI#!:strength +0 876*ae316d1dSXin LI#!:mime text/plain 877*ae316d1dSXin LI!:mime text/x-mozilla-mork 878*ae316d1dSXin LI# version like 1.4 8792dc4dbb9SEitan Adler>23 string x \b, version %.3s 880*ae316d1dSXin LI# Reference: http://mark0.net/download/triddefs_xml.7z/defs/d/msf.trid.xml 881*ae316d1dSXin LI# Note: called "Mozilla Mail Summary file" by TrID 882*ae316d1dSXin LI>26 search/7516 mailboxName \b, Mail Summary file 883*ae316d1dSXin LI# like: Archives.msf Drafts.msf INBOX.msf Junk.msf Sent.msf Templates.msf Trash.msf 884*ae316d1dSXin LI!:ext msf 885*ae316d1dSXin LI# Reference: http://mark0.net/download/triddefs_xml.7z/defs/m/mab.trid.xml 886*ae316d1dSXin LI# Note: called "Mozilla Address Book" by TrID 887*ae316d1dSXin LI>26 search/192 addrbk \b, Address Book 888*ae316d1dSXin LI!:ext mab 889*ae316d1dSXin LI# Reference: http://mark0.net/download/triddefs_xml.7z/defs/d/dat-mork.trid.xml 890*ae316d1dSXin LI# Note: called "Mozilla Mail folder cache" by TrID 891*ae316d1dSXin LI>26 search/210 indexingPriority \b, Mail folder cache 892*ae316d1dSXin LI# panacea.dat 893*ae316d1dSXin LI!:ext dat 8942726a701SXin LI 8952726a701SXin LI# URL: https://en.wikipedia.org/wiki/Management_Information_Format 8962726a701SXin LI# Reference: https://www.dmtf.org/sites/default/files/standards/documents/DSP0005.pdf 8972726a701SXin LI# From: Joerg Jenderek 8982726a701SXin LI# Note: only tested with monitor asset reports of Dell Display Manager 8992726a701SXin LI# skip start like Language=fr|CA|iso8859-1 9002726a701SXin LI0 search/27/C Start\040Component DMI Management Information Format 9012726a701SXin LI#!:mime text/plain 9022726a701SXin LI!:mime text/x-dmtf-mif 9032726a701SXin LI!:ext mif 9042726a701SXin LI 905*ae316d1dSXin LI# https://github.com/boltdb/bolt 906*ae316d1dSXin LI# https://github.com/etcd-io/bbolt 907*ae316d1dSXin LI# See magic value here: https://github.com/boltdb/bolt/blob/fd01fc79c553a8e99d512a07e8e0c63d4a3ccfc5/db.go#L24 908*ae316d1dSXin LI# The magic value is written according to endianess of the host, 909*ae316d1dSXin LI# so we check both to detect them also on hosts with differnet endianess 910*ae316d1dSXin LI16 lelong 0xED0CDAED BoltDB database 911*ae316d1dSXin LI16 belong 0xED0CDAED BoltDB database, big-endian 912