1*b6cee71dSXin LI 2*b6cee71dSXin LI#------------------------------------------------------------------------------ 3*b6cee71dSXin LI# $File: database,v 1.41 2014/06/03 19:17:27 christos Exp $ 4*b6cee71dSXin LI# database: file(1) magic for various databases 5*b6cee71dSXin LI# 6*b6cee71dSXin LI# extracted from header/code files by Graeme Wilford (eep2gw@ee.surrey.ac.uk) 7*b6cee71dSXin LI# 8*b6cee71dSXin LI# 9*b6cee71dSXin LI# GDBM magic numbers 10*b6cee71dSXin LI# Will be maintained as part of the GDBM distribution in the future. 11*b6cee71dSXin LI# <downsj@teeny.org> 12*b6cee71dSXin LI0 belong 0x13579ace GNU dbm 1.x or ndbm database, big endian 13*b6cee71dSXin LI!:mime application/x-gdbm 14*b6cee71dSXin LI0 lelong 0x13579ace GNU dbm 1.x or ndbm database, little endian 15*b6cee71dSXin LI!:mime application/x-gdbm 16*b6cee71dSXin LI0 string GDBM GNU dbm 2.x database 17*b6cee71dSXin LI!:mime application/x-gdbm 18*b6cee71dSXin LI# 19*b6cee71dSXin LI# Berkeley DB 20*b6cee71dSXin LI# 21*b6cee71dSXin LI# Ian Darwin's file /etc/magic files: big/little-endian version. 22*b6cee71dSXin LI# 23*b6cee71dSXin LI# Hash 1.85/1.86 databases store metadata in network byte order. 24*b6cee71dSXin LI# Btree 1.85/1.86 databases store the metadata in host byte order. 25*b6cee71dSXin LI# Hash and Btree 2.X and later databases store the metadata in host byte order. 26*b6cee71dSXin LI 27*b6cee71dSXin LI0 long 0x00061561 Berkeley DB 28*b6cee71dSXin LI!:mime application/x-dbm 29*b6cee71dSXin LI>8 belong 4321 30*b6cee71dSXin LI>>4 belong >2 1.86 31*b6cee71dSXin LI>>4 belong <3 1.85 32*b6cee71dSXin LI>>4 belong >0 (Hash, version %d, native byte-order) 33*b6cee71dSXin LI>8 belong 1234 34*b6cee71dSXin LI>>4 belong >2 1.86 35*b6cee71dSXin LI>>4 belong <3 1.85 36*b6cee71dSXin LI>>4 belong >0 (Hash, version %d, little-endian) 37*b6cee71dSXin LI 38*b6cee71dSXin LI0 belong 0x00061561 Berkeley DB 39*b6cee71dSXin LI>8 belong 4321 40*b6cee71dSXin LI>>4 belong >2 1.86 41*b6cee71dSXin LI>>4 belong <3 1.85 42*b6cee71dSXin LI>>4 belong >0 (Hash, version %d, big-endian) 43*b6cee71dSXin LI>8 belong 1234 44*b6cee71dSXin LI>>4 belong >2 1.86 45*b6cee71dSXin LI>>4 belong <3 1.85 46*b6cee71dSXin LI>>4 belong >0 (Hash, version %d, native byte-order) 47*b6cee71dSXin LI 48*b6cee71dSXin LI0 long 0x00053162 Berkeley DB 1.85/1.86 49*b6cee71dSXin LI>4 long >0 (Btree, version %d, native byte-order) 50*b6cee71dSXin LI0 belong 0x00053162 Berkeley DB 1.85/1.86 51*b6cee71dSXin LI>4 belong >0 (Btree, version %d, big-endian) 52*b6cee71dSXin LI0 lelong 0x00053162 Berkeley DB 1.85/1.86 53*b6cee71dSXin LI>4 lelong >0 (Btree, version %d, little-endian) 54*b6cee71dSXin LI 55*b6cee71dSXin LI12 long 0x00061561 Berkeley DB 56*b6cee71dSXin LI>16 long >0 (Hash, version %d, native byte-order) 57*b6cee71dSXin LI12 belong 0x00061561 Berkeley DB 58*b6cee71dSXin LI>16 belong >0 (Hash, version %d, big-endian) 59*b6cee71dSXin LI12 lelong 0x00061561 Berkeley DB 60*b6cee71dSXin LI>16 lelong >0 (Hash, version %d, little-endian) 61*b6cee71dSXin LI 62*b6cee71dSXin LI12 long 0x00053162 Berkeley DB 63*b6cee71dSXin LI>16 long >0 (Btree, version %d, native byte-order) 64*b6cee71dSXin LI12 belong 0x00053162 Berkeley DB 65*b6cee71dSXin LI>16 belong >0 (Btree, version %d, big-endian) 66*b6cee71dSXin LI12 lelong 0x00053162 Berkeley DB 67*b6cee71dSXin LI>16 lelong >0 (Btree, version %d, little-endian) 68*b6cee71dSXin LI 69*b6cee71dSXin LI12 long 0x00042253 Berkeley DB 70*b6cee71dSXin LI>16 long >0 (Queue, version %d, native byte-order) 71*b6cee71dSXin LI12 belong 0x00042253 Berkeley DB 72*b6cee71dSXin LI>16 belong >0 (Queue, version %d, big-endian) 73*b6cee71dSXin LI12 lelong 0x00042253 Berkeley DB 74*b6cee71dSXin LI>16 lelong >0 (Queue, version %d, little-endian) 75*b6cee71dSXin LI 76*b6cee71dSXin LI# From Max Bowsher. 77*b6cee71dSXin LI12 long 0x00040988 Berkeley DB 78*b6cee71dSXin LI>16 long >0 (Log, version %d, native byte-order) 79*b6cee71dSXin LI12 belong 0x00040988 Berkeley DB 80*b6cee71dSXin LI>16 belong >0 (Log, version %d, big-endian) 81*b6cee71dSXin LI12 lelong 0x00040988 Berkeley DB 82*b6cee71dSXin LI>16 lelong >0 (Log, version %d, little-endian) 83*b6cee71dSXin LI 84*b6cee71dSXin LI# 85*b6cee71dSXin LI# 86*b6cee71dSXin LI# Round Robin Database Tool by Tobias Oetiker <oetiker@ee.ethz.ch> 87*b6cee71dSXin LI0 string/b RRD\0 RRDTool DB 88*b6cee71dSXin LI>4 string/b x version %s 89*b6cee71dSXin LI 90*b6cee71dSXin LI>>10 short !0 16bit aligned 91*b6cee71dSXin LI>>>10 bedouble 8.642135e+130 big-endian 92*b6cee71dSXin LI>>>>18 short x 32bit long (m68k) 93*b6cee71dSXin LI 94*b6cee71dSXin LI>>10 short 0 95*b6cee71dSXin LI>>>12 long !0 32bit aligned 96*b6cee71dSXin LI>>>>12 bedouble 8.642135e+130 big-endian 97*b6cee71dSXin LI>>>>>20 long 0 64bit long 98*b6cee71dSXin LI>>>>>20 long !0 32bit long 99*b6cee71dSXin LI>>>>12 ledouble 8.642135e+130 little-endian 100*b6cee71dSXin LI>>>>>24 long 0 64bit long 101*b6cee71dSXin LI>>>>>24 long !0 32bit long (i386) 102*b6cee71dSXin LI>>>>12 string \x43\x2b\x1f\x5b\x2f\x25\xc0\xc7 middle-endian 103*b6cee71dSXin LI>>>>>24 short !0 32bit long (arm) 104*b6cee71dSXin LI 105*b6cee71dSXin LI>>8 quad 0 64bit aligned 106*b6cee71dSXin LI>>>16 bedouble 8.642135e+130 big-endian 107*b6cee71dSXin LI>>>>24 long 0 64bit long (s390x) 108*b6cee71dSXin LI>>>>24 long !0 32bit long (hppa/mips/ppc/s390/SPARC) 109*b6cee71dSXin LI>>>16 ledouble 8.642135e+130 little-endian 110*b6cee71dSXin LI>>>>28 long 0 64bit long (alpha/amd64/ia64) 111*b6cee71dSXin LI>>>>28 long !0 32bit long (armel/mipsel) 112*b6cee71dSXin LI 113*b6cee71dSXin LI#---------------------------------------------------------------------- 114*b6cee71dSXin LI# ROOT: file(1) magic for ROOT databases 115*b6cee71dSXin LI# 116*b6cee71dSXin LI0 string root\0 ROOT file 117*b6cee71dSXin LI>4 belong x Version %d 118*b6cee71dSXin LI>33 belong x (Compression: %d) 119*b6cee71dSXin LI 120*b6cee71dSXin LI# XXX: Weak magic. 121*b6cee71dSXin LI# Alex Ott <ott@jet.msk.su> 122*b6cee71dSXin LI## Paradox file formats 123*b6cee71dSXin LI#2 leshort 0x0800 Paradox 124*b6cee71dSXin LI#>0x39 byte 3 v. 3.0 125*b6cee71dSXin LI#>0x39 byte 4 v. 3.5 126*b6cee71dSXin LI#>0x39 byte 9 v. 4.x 127*b6cee71dSXin LI#>0x39 byte 10 v. 5.x 128*b6cee71dSXin LI#>0x39 byte 11 v. 5.x 129*b6cee71dSXin LI#>0x39 byte 12 v. 7.x 130*b6cee71dSXin LI#>>0x04 byte 0 indexed .DB data file 131*b6cee71dSXin LI#>>0x04 byte 1 primary index .PX file 132*b6cee71dSXin LI#>>0x04 byte 2 non-indexed .DB data file 133*b6cee71dSXin LI#>>0x04 byte 3 non-incrementing secondary index .Xnn file 134*b6cee71dSXin LI#>>0x04 byte 4 secondary index .Ynn file 135*b6cee71dSXin LI#>>0x04 byte 5 incrementing secondary index .Xnn file 136*b6cee71dSXin LI#>>0x04 byte 6 non-incrementing secondary index .XGn file 137*b6cee71dSXin LI#>>0x04 byte 7 secondary index .YGn file 138*b6cee71dSXin LI#>>>0x04 byte 8 incrementing secondary index .XGn file 139*b6cee71dSXin LI 140*b6cee71dSXin LI## XBase database files 141*b6cee71dSXin LI# updated by Joerg Jenderek at Feb 2013 142*b6cee71dSXin LI# http://www.dbase.com/Knowledgebase/INT/db7_file_fmt.htm 143*b6cee71dSXin LI# http://www.clicketyclick.dk/databases/xbase/format/dbf.html 144*b6cee71dSXin LI# http://home.f1.htw-berlin.de/scheibl/db/intern/dBase.htm 145*b6cee71dSXin LI# inspect VVYYMMDD , where 1<= MM <= 12 and 1<= DD <= 31 146*b6cee71dSXin LI0 ubelong&0x0000FFFF <0x00000C20 147*b6cee71dSXin LI# skip Infocom game Z-machine 148*b6cee71dSXin LI>2 ubyte >0 149*b6cee71dSXin LI# skip Androids *.xml 150*b6cee71dSXin LI>>3 ubyte >0 151*b6cee71dSXin LI>>>3 ubyte <32 152*b6cee71dSXin LI# 1 < version VV 153*b6cee71dSXin LI>>>>0 ubyte >1 154*b6cee71dSXin LI# skip HELP.CA3 by test for reserved byte ( NULL ) 155*b6cee71dSXin LI>>>>>27 ubyte 0 156*b6cee71dSXin LI# reserved bytes not always 0 ; also found 0x3901 (T4.DBF) ,0x7101 (T5.DBF,T6.DBF) 157*b6cee71dSXin LI#>>>>>30 ubeshort x 30NULL?%x 158*b6cee71dSXin LI# possible production flag,tag numbers(<=0x30),tag length(<=0x20), reserved (NULL) 159*b6cee71dSXin LI>>>>>>24 ubelong&0xffFFFFff >0x01302000 160*b6cee71dSXin LI# .DBF or .MDX 161*b6cee71dSXin LI>>>>>>24 ubelong&0xffFFFFff <0x01302001 162*b6cee71dSXin LI# for Xbase Database file (*.DBF) reserved (NULL) for multi-user 163*b6cee71dSXin LI>>>>>>>24 ubelong&0xffFFFFff =0 164*b6cee71dSXin LI# test for 2 reserved NULL bytes,transaction and encryption byte flag 165*b6cee71dSXin LI>>>>>>>>12 ubelong&0xFFFFfEfE 0 166*b6cee71dSXin LI# test for MDX flag 167*b6cee71dSXin LI>>>>>>>>>28 ubyte x 168*b6cee71dSXin LI>>>>>>>>>28 ubyte&0xf8 0 169*b6cee71dSXin LI# header size >= 32 170*b6cee71dSXin LI>>>>>>>>>>8 uleshort >31 171*b6cee71dSXin LI# skip PIC15736.PCX by test for language driver name or field name 172*b6cee71dSXin LI>>>>>>>>>>>32 ubyte >0 173*b6cee71dSXin LI#!:mime application/x-dbf; charset=unknown-8bit ?? 174*b6cee71dSXin LI#!:mime application/x-dbase 175*b6cee71dSXin LI>>>>>>>>>>>>0 use xbase-type 176*b6cee71dSXin LI# database file 177*b6cee71dSXin LI>>>>>>>>>>>>0 ubyte x \b DBF 178*b6cee71dSXin LI>>>>>>>>>>>>4 lelong 0 \b, no records 179*b6cee71dSXin LI>>>>>>>>>>>>4 lelong >0 \b, %d record 180*b6cee71dSXin LI# plural s appended 181*b6cee71dSXin LI>>>>>>>>>>>>>4 lelong >1 \bs 182*b6cee71dSXin LI# http://www.clicketyclick.dk/databases/xbase/format/dbf_check.html#CHECK_DBF 183*b6cee71dSXin LI# 1 <= record size <= 4000 (dBase 3,4) or 32 * KB (=0x8000) 184*b6cee71dSXin LI>>>>>>>>>>>>10 uleshort x * %d 185*b6cee71dSXin LI# file size = records * record size + header size 186*b6cee71dSXin LI>>>>>>>>>>>>1 ubyte x \b, update-date 187*b6cee71dSXin LI>>>>>>>>>>>>1 use xbase-date 188*b6cee71dSXin LI# http://msdn.microsoft.com/de-de/library/cc483186(v=vs.71).aspx 189*b6cee71dSXin LI#>>>>>>>>>>>>29 ubyte =0 \b, codepage ID=0x%x 190*b6cee71dSXin LI# 2~cp850 , 3~cp1252 , 0x1b~?? ; what code page is 0x1b ? 191*b6cee71dSXin LI>>>>>>>>>>>>29 ubyte >0 \b, codepage ID=0x%x 192*b6cee71dSXin LI#>>>>>>>>>>>>28 ubyte&0x01 0 \b, no index file 193*b6cee71dSXin LI>>>>>>>>>>>>28 ubyte&0x01 1 \b, with index file .MDX 194*b6cee71dSXin LI>>>>>>>>>>>>28 ubyte&0x02 2 \b, with memo .FPT 195*b6cee71dSXin LI>>>>>>>>>>>>28 ubyte&0x04 4 \b, DataBaseContainer 196*b6cee71dSXin LI# 1st record offset + 1 = header size 197*b6cee71dSXin LI>>>>>>>>>>>>8 uleshort >0 198*b6cee71dSXin LI>>>>>>>>>>>>(8.s+1) ubyte >0 199*b6cee71dSXin LI>>>>>>>>>>>>>8 uleshort >0 \b, at offset %d 200*b6cee71dSXin LI>>>>>>>>>>>>>(8.s+1) ubyte >0 201*b6cee71dSXin LI>>>>>>>>>>>>>>&-1 string >\0 1st record "%s" 202*b6cee71dSXin LI# for multiple index files (*.MDX) Production flag,tag numbers(<=0x30),tag length(<=0x20), reserverd (NULL) 203*b6cee71dSXin LI>>>>>>>24 ubelong&0x0133f7ff >0 204*b6cee71dSXin LI# test for reserved NULL byte 205*b6cee71dSXin LI>>>>>>>>47 ubyte x 206*b6cee71dSXin LI# test for valid TAG key format (0x10 or 0) 207*b6cee71dSXin LI>>>>>>>>>559 ubyte&0xeF 0 208*b6cee71dSXin LI# test MM <= 12 209*b6cee71dSXin LI>>>>>>>>>45 ubeshort <0x0C20 210*b6cee71dSXin LI>>>>>>>>>>45 ubyte >0 211*b6cee71dSXin LI>>>>>>>>>>>46 ubyte <32 212*b6cee71dSXin LI>>>>>>>>>>>>46 ubyte >0 213*b6cee71dSXin LI#!:mime application/x-mdx 214*b6cee71dSXin LI>>>>>>>>>>>>>0 use xbase-type 215*b6cee71dSXin LI>>>>>>>>>>>>>0 ubyte x \b MDX 216*b6cee71dSXin LI>>>>>>>>>>>>>1 ubyte x \b, creation-date 217*b6cee71dSXin LI>>>>>>>>>>>>>1 use xbase-date 218*b6cee71dSXin LI>>>>>>>>>>>>>44 ubyte x \b, update-date 219*b6cee71dSXin LI>>>>>>>>>>>>>44 use xbase-date 220*b6cee71dSXin LI# No.of tags in use (1,2,5,12) 221*b6cee71dSXin LI>>>>>>>>>>>>>28 uleshort x \b, %d 222*b6cee71dSXin LI# No. of entries in tag (0x30) 223*b6cee71dSXin LI>>>>>>>>>>>>>25 ubyte x \b/%d tags 224*b6cee71dSXin LI# Length of tag 225*b6cee71dSXin LI>>>>>>>>>>>>>26 ubyte x * %d 226*b6cee71dSXin LI# 1st tag name_ 227*b6cee71dSXin LI>>>>>>>>>>>>>548 string x \b, 1st tag "%.11s" 228*b6cee71dSXin LI# 2nd tag name 229*b6cee71dSXin LI#>>>>>>>>>>>>(26.b+548) string x \b, 2nd tag "%.11s" 230*b6cee71dSXin LI# 231*b6cee71dSXin LI# Print the xBase names of different version variants 232*b6cee71dSXin LI0 name xbase-type 233*b6cee71dSXin LI>0 ubyte <2 234*b6cee71dSXin LI# 1 < version 235*b6cee71dSXin LI>0 ubyte >1 236*b6cee71dSXin LI>>0 ubyte 0x02 FoxBase 237*b6cee71dSXin LI# FoxBase+/dBaseIII+, no memo 238*b6cee71dSXin LI>>0 ubyte 0x03 FoxBase+/dBase III 239*b6cee71dSXin LI!:mime application/x-dbf 240*b6cee71dSXin LI# dBASE IV no memo file 241*b6cee71dSXin LI>>0 ubyte 0x04 dBase IV 242*b6cee71dSXin LI!:mime application/x-dbf 243*b6cee71dSXin LI# dBASE V no memo file 244*b6cee71dSXin LI>>0 ubyte 0x05 dBase V 245*b6cee71dSXin LI!:mime application/x-dbf 246*b6cee71dSXin LI>>0 ubyte 0x30 Visual FoxPro 247*b6cee71dSXin LI!:mime application/x-dbf 248*b6cee71dSXin LI>>0 ubyte 0x31 Visual FoxPro, autoincrement 249*b6cee71dSXin LI!:mime application/x-dbf 250*b6cee71dSXin LI# Visual FoxPro, with field type Varchar or Varbinary 251*b6cee71dSXin LI>>0 ubyte 0x32 Visual FoxPro, with field type Varchar 252*b6cee71dSXin LI!:mime application/x-dbf 253*b6cee71dSXin LI# dBASE IV SQL, no memo;dbv memo var size (Flagship) 254*b6cee71dSXin LI>>0 ubyte 0x43 dBase IV, with SQL table 255*b6cee71dSXin LI!:mime application/x-dbf 256*b6cee71dSXin LI# http://msdn.microsoft.com/en-US/library/st4a0s68(v=vs.80).aspx 257*b6cee71dSXin LI#>>0 ubyte 0x62 dBase IV, with SQL table 258*b6cee71dSXin LI#!:mime application/x-dbf 259*b6cee71dSXin LI# dBASE IV, with memo!! 260*b6cee71dSXin LI>>0 ubyte 0x7b dBase IV, with memo 261*b6cee71dSXin LI!:mime application/x-dbf 262*b6cee71dSXin LI# http://msdn.microsoft.com/en-US/library/st4a0s68(v=vs.80).aspx 263*b6cee71dSXin LI#>>0 ubyte 0x82 dBase IV, with SQL system 264*b6cee71dSXin LI#!:mime application/x-dbf 265*b6cee71dSXin LI# FoxBase+/dBaseIII+ with memo .DBT! 266*b6cee71dSXin LI>>0 ubyte 0x83 FoxBase+/dBase III, with memo .DBT 267*b6cee71dSXin LI!:mime application/x-dbf 268*b6cee71dSXin LI# VISUAL OBJECTS (first 1.0 versions) for the Dbase III files (NTX clipper driver); memo file 269*b6cee71dSXin LI>>0 ubyte 0x87 VISUAL OBJECTS, with memo file 270*b6cee71dSXin LI!:mime application/x-dbf 271*b6cee71dSXin LI# http://msdn.microsoft.com/en-US/library/st4a0s68(v=vs.80).aspx 272*b6cee71dSXin LI#>>0 ubyte 0x8A FoxBase+/dBase III, with memo .DBT 273*b6cee71dSXin LI#!:mime application/x-dbf 274*b6cee71dSXin LI# dBASE IV with memo! 275*b6cee71dSXin LI>>0 ubyte 0x8B dBase IV, with memo .DBT 276*b6cee71dSXin LI!:mime application/x-dbf 277*b6cee71dSXin LI# dBase IV with SQL Table,no memo? 278*b6cee71dSXin LI>>0 ubyte 0x8E dBase IV, with SQL table 279*b6cee71dSXin LI!:mime application/x-dbf 280*b6cee71dSXin LI# .dbv and .dbt memo (Flagship)? 281*b6cee71dSXin LI>>0 ubyte 0xB3 Flagship 282*b6cee71dSXin LI# http://msdn.microsoft.com/en-US/library/st4a0s68(v=vs.80).aspx 283*b6cee71dSXin LI#>>0 ubyte 0xCA dBase IV with memo .DBT 284*b6cee71dSXin LI#!:mime application/x-dbf 285*b6cee71dSXin LI# dBASE IV with SQL table, with memo .DBT 286*b6cee71dSXin LI>>0 ubyte 0xCB dBase IV with SQL table, with memo .DBT 287*b6cee71dSXin LI!:mime application/x-dbf 288*b6cee71dSXin LI# HiPer-Six format;Clipper SIX, with SMT memo file 289*b6cee71dSXin LI>>0 ubyte 0xE5 Clipper SIX with memo 290*b6cee71dSXin LI!:mime application/x-dbf 291*b6cee71dSXin LI# http://msdn.microsoft.com/en-US/library/st4a0s68(v=vs.80).aspx 292*b6cee71dSXin LI#>>0 ubyte 0xF4 dBase IV, with SQL table, with memo 293*b6cee71dSXin LI#!:mime application/x-dbf 294*b6cee71dSXin LI>>0 ubyte 0xF5 FoxPro with memo 295*b6cee71dSXin LI!:mime application/x-dbf 296*b6cee71dSXin LI# http://msdn.microsoft.com/en-US/library/st4a0s68(v=vs.80).aspx 297*b6cee71dSXin LI#>>0 ubyte 0xFA FoxPro 2.x, with memo 298*b6cee71dSXin LI#!:mime application/x-dbf 299*b6cee71dSXin LI# unknown version (should not happen) 300*b6cee71dSXin LI>>0 default x xBase 301*b6cee71dSXin LI!:mime application/x-dbf 302*b6cee71dSXin LI>>>0 ubyte x (0x%x) 303*b6cee71dSXin LI# flags in version byte 304*b6cee71dSXin LI# DBT flag (with dBASE III memo .DBT)!! 305*b6cee71dSXin LI# >>0 ubyte&0x80 >0 DBT_FLAG=%x 306*b6cee71dSXin LI# memo flag ?? 307*b6cee71dSXin LI# >>0 ubyte&0x08 >0 MEMO_FLAG=%x 308*b6cee71dSXin LI# SQL flag ?? 309*b6cee71dSXin LI# >>0 ubyte&0x70 >0 SQL_FLAG=%x 310*b6cee71dSXin LI# test and print the date of xBase .DBF .MDX 311*b6cee71dSXin LI0 name xbase-date 312*b6cee71dSXin LI# inspect YYMMDD , where 1<= MM <= 12 and 1<= DD <= 31 313*b6cee71dSXin LI>0 ubelong x 314*b6cee71dSXin LI>1 ubyte <13 315*b6cee71dSXin LI>>1 ubyte >0 316*b6cee71dSXin LI>>>2 ubyte >0 317*b6cee71dSXin LI>>>>2 ubyte <32 318*b6cee71dSXin LI>>>>>0 ubyte x 319*b6cee71dSXin LI# YY is interpreted as 20YY or 19YY 320*b6cee71dSXin LI>>>>>>0 ubyte <100 \b %.2d 321*b6cee71dSXin LI# YY is interpreted 1900+YY; TODO: display yy or 20yy instead 1YY 322*b6cee71dSXin LI>>>>>>0 ubyte >99 \b %d 323*b6cee71dSXin LI>>>>>1 ubyte x \b-%d 324*b6cee71dSXin LI>>>>>2 ubyte x \b-%d 325*b6cee71dSXin LI 326*b6cee71dSXin LI# dBase memo files .DBT or .FPT 327*b6cee71dSXin LI# http://msdn.microsoft.com/en-us/library/8599s21w(v=vs.80).aspx 328*b6cee71dSXin LI16 ubyte <4 329*b6cee71dSXin LI>16 ubyte !2 330*b6cee71dSXin LI>>16 ubyte !1 331*b6cee71dSXin LI# next free block index is positive 332*b6cee71dSXin LI>>>0 ulelong >0 333*b6cee71dSXin LI# skip many JPG. ZIP, BZ2 by test for reserved bytes NULL , 0|2 , 0|1 , low byte of block size 334*b6cee71dSXin LI>>>>17 ubelong&0xFFfdFE00 0x00000000 335*b6cee71dSXin LI# skip many RAR by test for low byte 0 ,high byte 0|2|even of block size, 0|a|e|d7 , 0|64h 336*b6cee71dSXin LI>>>>>20 ubelong&0xFF01209B 0x00000000 337*b6cee71dSXin LI# dBASE III 338*b6cee71dSXin LI>>>>>>16 ubyte 3 339*b6cee71dSXin LI# dBASE III DBT 340*b6cee71dSXin LI>>>>>>>0 use xbase-memo-print 341*b6cee71dSXin LI# dBASE IV DBT , FoxPro FPT or many PNG , ZIP , DBF garbage 342*b6cee71dSXin LI>>>>>>16 ubyte 0 343*b6cee71dSXin LI# dBASE IV DBT with DBF name or DBF garbage 344*b6cee71dSXin LI>>>>>>>8 ubelong >0x40000000 345*b6cee71dSXin LI# skip DBF and catch dBASE IV DBT with DBF name and with non big index of next free block 346*b6cee71dSXin LI>>>>>>>>0 ulelong <0x01010002 347*b6cee71dSXin LI>>>>>>>>>0 use xbase-memo-print 348*b6cee71dSXin LI>>>>>>>8 ubelong 0 349*b6cee71dSXin LI# skip MM*DD*.bin by test for for reserved NULL byte 350*b6cee71dSXin LI>>>>>>>>508 ubelong 0 351*b6cee71dSXin LI# real memo files should contain text here 352*b6cee71dSXin LI>>>>>>>>>520 ubelong >0x20202019 353*b6cee71dSXin LI>>>>>>>>>>520 ubelong <0xFEFEFEFF 354*b6cee71dSXin LI>>>>>>>>>>>0 use xbase-memo-print 355*b6cee71dSXin LI# garbage PCX , ZIP , JAR , XPI 356*b6cee71dSXin LI>>>>>>>8 default x 357*b6cee71dSXin LI 358*b6cee71dSXin LI# Print the information of dBase DBT or FoxPro FPT memo files 359*b6cee71dSXin LI0 name xbase-memo-print 360*b6cee71dSXin LI>0 ubyte x 361*b6cee71dSXin LI# test version 362*b6cee71dSXin LI# memo file 363*b6cee71dSXin LI>>16 ubyte 3 dBase III DBT 364*b6cee71dSXin LI>>16 ubyte 0 365*b6cee71dSXin LI>>>512 ubelong <0x00000003 FoxPro FPT 366*b6cee71dSXin LI# Size of blocks for FoxPro 367*b6cee71dSXin LI>>>>6 ubeshort x \b, blocks size %u 368*b6cee71dSXin LI# Number of next available block for appending data for FoxPro 369*b6cee71dSXin LI>>>>0 ubelong =0 \b, next free block index %u 370*b6cee71dSXin LI>>>>0 ubelong !0 \b, next free block index %u 371*b6cee71dSXin LI>>>512 default x dBase IV DBT 372*b6cee71dSXin LI# DBF file name without extension 373*b6cee71dSXin LI>>>>8 string >\0 \b of %-.8s.DBF 374*b6cee71dSXin LI# size of blocks ; not reliable 0x2020204C 375*b6cee71dSXin LI#>>>>4 ulelong =0 \b, blocks size %u 376*b6cee71dSXin LI>>>>4 ulelong !0 \b, blocks size %u 377*b6cee71dSXin LI# Block length found 0 , 512 378*b6cee71dSXin LI#>>>>20 uleshort =0 \b, block length %u 379*b6cee71dSXin LI>>>>20 uleshort !0 \b, block length %u 380*b6cee71dSXin LI# Number of next available block for appending data 381*b6cee71dSXin LI>>>>0 ulelong =0 \b, next free block index %u 382*b6cee71dSXin LI>>>>0 ulelong !0 \b, next free block index %u 383*b6cee71dSXin LI>>512 ubelong x 384*b6cee71dSXin LI>>>512 ubelong =0xFFFF0800 385*b6cee71dSXin LI>>>>520 string >\0 \b, 1st used item "%s" 386*b6cee71dSXin LI# FoxPro 387*b6cee71dSXin LI>>>512 ubelong <3 388*b6cee71dSXin LI# FoxPro memo 389*b6cee71dSXin LI>>>>512 ubelong =1 390*b6cee71dSXin LI>>>>520 string >\0 \b, 1st used item "%s" 391*b6cee71dSXin LI>>>512 default x 392*b6cee71dSXin LI# may be deleted memo field 393*b6cee71dSXin LI>>>>512 string >\0 \b, 1st item "%s" 394*b6cee71dSXin LI 395*b6cee71dSXin LI# TODO: 396*b6cee71dSXin LI# DBASE index file *.NDX 397*b6cee71dSXin LI# DBASE Compound Index file *.CDX 398*b6cee71dSXin LI# dBASE IV Printer Driver *.PRF 399*b6cee71dSXin LI## End of XBase database stuff 400*b6cee71dSXin LI 401*b6cee71dSXin LI# MS Access database 402*b6cee71dSXin LI4 string Standard\ Jet\ DB Microsoft Access Database 403*b6cee71dSXin LI!:mime application/x-msaccess 404*b6cee71dSXin LI4 string Standard\ ACE\ DB Microsoft Access Database 405*b6cee71dSXin LI!:mime application/x-msaccess 406*b6cee71dSXin LI 407*b6cee71dSXin LI# TDB database from Samba et al - Martin Pool <mbp@samba.org> 408*b6cee71dSXin LI0 string TDB\ file TDB database 409*b6cee71dSXin LI>32 lelong 0x2601196D version 6, little-endian 410*b6cee71dSXin LI>>36 lelong x hash size %d bytes 411*b6cee71dSXin LI 412*b6cee71dSXin LI# SE Linux policy database 413*b6cee71dSXin LI0 lelong 0xf97cff8c SE Linux policy 414*b6cee71dSXin LI>16 lelong x v%d 415*b6cee71dSXin LI>20 lelong 1 MLS 416*b6cee71dSXin LI>24 lelong x %d symbols 417*b6cee71dSXin LI>28 lelong x %d ocons 418*b6cee71dSXin LI 419*b6cee71dSXin LI# ICE authority file data (Wolfram Kleff) 420*b6cee71dSXin LI2 string ICE ICE authority data 421*b6cee71dSXin LI 422*b6cee71dSXin LI# X11 Xauthority file (Wolfram Kleff) 423*b6cee71dSXin LI10 string MIT-MAGIC-COOKIE-1 X11 Xauthority data 424*b6cee71dSXin LI11 string MIT-MAGIC-COOKIE-1 X11 Xauthority data 425*b6cee71dSXin LI12 string MIT-MAGIC-COOKIE-1 X11 Xauthority data 426*b6cee71dSXin LI13 string MIT-MAGIC-COOKIE-1 X11 Xauthority data 427*b6cee71dSXin LI14 string MIT-MAGIC-COOKIE-1 X11 Xauthority data 428*b6cee71dSXin LI15 string MIT-MAGIC-COOKIE-1 X11 Xauthority data 429*b6cee71dSXin LI16 string MIT-MAGIC-COOKIE-1 X11 Xauthority data 430*b6cee71dSXin LI17 string MIT-MAGIC-COOKIE-1 X11 Xauthority data 431*b6cee71dSXin LI18 string MIT-MAGIC-COOKIE-1 X11 Xauthority data 432*b6cee71dSXin LI 433*b6cee71dSXin LI# From: Maxime Henrion <mux@FreeBSD.org> 434*b6cee71dSXin LI# PostgreSQL's custom dump format, Maxime Henrion <mux@FreeBSD.org> 435*b6cee71dSXin LI0 string PGDMP PostgreSQL custom database dump 436*b6cee71dSXin LI>5 byte x - v%d 437*b6cee71dSXin LI>6 byte x \b.%d 438*b6cee71dSXin LI>5 beshort <0x101 \b-0 439*b6cee71dSXin LI>5 beshort >0x100 440*b6cee71dSXin LI>>7 byte x \b-%d 441*b6cee71dSXin LI 442*b6cee71dSXin LI# Type: Advanced Data Format (ADF) database 443*b6cee71dSXin LI# URL: http://www.grc.nasa.gov/WWW/cgns/adf/ 444*b6cee71dSXin LI# From: Nicolas Chauvat <nicolas.chauvat@logilab.fr> 445*b6cee71dSXin LI0 string @(#)ADF\ Database CGNS Advanced Data Format 446*b6cee71dSXin LI 447*b6cee71dSXin LI# Tokyo Cabinet magic data 448*b6cee71dSXin LI# http://tokyocabinet.sourceforge.net/index.html 449*b6cee71dSXin LI0 string ToKyO\ CaBiNeT\n Tokyo Cabinet 450*b6cee71dSXin LI>14 string x \b (%s) 451*b6cee71dSXin LI>32 byte 0 \b, Hash 452*b6cee71dSXin LI!:mime application/x-tokyocabinet-hash 453*b6cee71dSXin LI>32 byte 1 \b, B+ tree 454*b6cee71dSXin LI!:mime application/x-tokyocabinet-btree 455*b6cee71dSXin LI>32 byte 2 \b, Fixed-length 456*b6cee71dSXin LI!:mime application/x-tokyocabinet-fixed 457*b6cee71dSXin LI>32 byte 3 \b, Table 458*b6cee71dSXin LI!:mime application/x-tokyocabinet-table 459*b6cee71dSXin LI>33 byte &1 \b, [open] 460*b6cee71dSXin LI>33 byte &2 \b, [fatal] 461*b6cee71dSXin LI>34 byte x \b, apow=%d 462*b6cee71dSXin LI>35 byte x \b, fpow=%d 463*b6cee71dSXin LI>36 byte &0x01 \b, [large] 464*b6cee71dSXin LI>36 byte &0x02 \b, [deflate] 465*b6cee71dSXin LI>36 byte &0x04 \b, [bzip] 466*b6cee71dSXin LI>36 byte &0x08 \b, [tcbs] 467*b6cee71dSXin LI>36 byte &0x10 \b, [excodec] 468*b6cee71dSXin LI>40 lequad x \b, bnum=%lld 469*b6cee71dSXin LI>48 lequad x \b, rnum=%lld 470*b6cee71dSXin LI>56 lequad x \b, fsiz=%lld 471*b6cee71dSXin LI 472*b6cee71dSXin LI# Type: QDBM Quick Database Manager 473*b6cee71dSXin LI# From: Benoit Sibaud <bsibaud@april.org> 474*b6cee71dSXin LI0 string \\[depot\\]\n\f Quick Database Manager, little endian 475*b6cee71dSXin LI0 string \\[DEPOT\\]\n\f Quick Database Manager, big endian 476*b6cee71dSXin LI 477*b6cee71dSXin LI# Type: TokyoCabinet database 478*b6cee71dSXin LI# URL: http://tokyocabinet.sourceforge.net/ 479*b6cee71dSXin LI# From: Benoit Sibaud <bsibaud@april.org> 480*b6cee71dSXin LI0 string ToKyO\ CaBiNeT\n TokyoCabinet database 481*b6cee71dSXin LI>14 string x (version %s) 482*b6cee71dSXin LI 483*b6cee71dSXin LI# From: Stephane Blondon http://www.yaal.fr 484*b6cee71dSXin LI# Database file for Zope (done by FileStorage) 485*b6cee71dSXin LI0 string FS21 Zope Object Database File Storage (data) 486*b6cee71dSXin LI# Cache file for the database of Zope (done by ClientStorage) 487*b6cee71dSXin LI0 string ZEC3 Zope Object Database Client Cache File (data) 488*b6cee71dSXin LI 489*b6cee71dSXin LI# IDA (Interactive Disassembler) database 490*b6cee71dSXin LI0 string IDA1 IDA (Interactive Disassembler) database 491