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