123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469 |
- #------------------------------------------------------------------------------
- # $File: database,v 1.36 2013/12/09 20:31:53 christos Exp $
- # database: file(1) magic for various databases
- #
- # extracted from header/code files by Graeme Wilford (eep2gw@ee.surrey.ac.uk)
- #
- #
- # GDBM magic numbers
- # Will be maintained as part of the GDBM distribution in the future.
- # <downsj@teeny.org>
- 0 belong 0x13579ace GNU dbm 1.x or ndbm database, big endian
- !:mime application/x-gdbm
- 0 lelong 0x13579ace GNU dbm 1.x or ndbm database, little endian
- !:mime application/x-gdbm
- 0 string GDBM GNU dbm 2.x database
- !:mime application/x-gdbm
- #
- # Berkeley DB
- #
- # Ian Darwin's file /etc/magic files: big/little-endian version.
- #
- # Hash 1.85/1.86 databases store metadata in network byte order.
- # Btree 1.85/1.86 databases store the metadata in host byte order.
- # Hash and Btree 2.X and later databases store the metadata in host byte order.
- 0 long 0x00061561 Berkeley DB
- !:mime application/x-dbm
- >8 belong 4321
- >>4 belong >2 1.86
- >>4 belong <3 1.85
- >>4 belong >0 (Hash, version %d, native byte-order)
- >8 belong 1234
- >>4 belong >2 1.86
- >>4 belong <3 1.85
- >>4 belong >0 (Hash, version %d, little-endian)
- 0 belong 0x00061561 Berkeley DB
- >8 belong 4321
- >>4 belong >2 1.86
- >>4 belong <3 1.85
- >>4 belong >0 (Hash, version %d, big-endian)
- >8 belong 1234
- >>4 belong >2 1.86
- >>4 belong <3 1.85
- >>4 belong >0 (Hash, version %d, native byte-order)
- 0 long 0x00053162 Berkeley DB 1.85/1.86
- >4 long >0 (Btree, version %d, native byte-order)
- 0 belong 0x00053162 Berkeley DB 1.85/1.86
- >4 belong >0 (Btree, version %d, big-endian)
- 0 lelong 0x00053162 Berkeley DB 1.85/1.86
- >4 lelong >0 (Btree, version %d, little-endian)
- 12 long 0x00061561 Berkeley DB
- >16 long >0 (Hash, version %d, native byte-order)
- 12 belong 0x00061561 Berkeley DB
- >16 belong >0 (Hash, version %d, big-endian)
- 12 lelong 0x00061561 Berkeley DB
- >16 lelong >0 (Hash, version %d, little-endian)
- 12 long 0x00053162 Berkeley DB
- >16 long >0 (Btree, version %d, native byte-order)
- 12 belong 0x00053162 Berkeley DB
- >16 belong >0 (Btree, version %d, big-endian)
- 12 lelong 0x00053162 Berkeley DB
- >16 lelong >0 (Btree, version %d, little-endian)
- 12 long 0x00042253 Berkeley DB
- >16 long >0 (Queue, version %d, native byte-order)
- 12 belong 0x00042253 Berkeley DB
- >16 belong >0 (Queue, version %d, big-endian)
- 12 lelong 0x00042253 Berkeley DB
- >16 lelong >0 (Queue, version %d, little-endian)
- # From Max Bowsher.
- 12 long 0x00040988 Berkeley DB
- >16 long >0 (Log, version %d, native byte-order)
- 12 belong 0x00040988 Berkeley DB
- >16 belong >0 (Log, version %d, big-endian)
- 12 lelong 0x00040988 Berkeley DB
- >16 lelong >0 (Log, version %d, little-endian)
- #
- #
- # Round Robin Database Tool by Tobias Oetiker <oetiker@ee.ethz.ch>
- 0 string/b RRD\0 RRDTool DB
- >4 string/b x version %s
- >>10 short !0 16bit aligned
- >>>10 bedouble 8.642135e+130 big-endian
- >>>>18 short x 32bit long (m68k)
- >>10 short 0
- >>>12 long !0 32bit aligned
- >>>>12 bedouble 8.642135e+130 big-endian
- >>>>>20 long 0 64bit long
- >>>>>20 long !0 32bit long
- >>>>12 ledouble 8.642135e+130 little-endian
- >>>>>24 long 0 64bit long
- >>>>>24 long !0 32bit long (i386)
- >>>>12 string \x43\x2b\x1f\x5b\x2f\x25\xc0\xc7 middle-endian
- >>>>>24 short !0 32bit long (arm)
- >>8 quad 0 64bit aligned
- >>>16 bedouble 8.642135e+130 big-endian
- >>>>24 long 0 64bit long (s390x)
- >>>>24 long !0 32bit long (hppa/mips/ppc/s390/sparc)
- >>>16 ledouble 8.642135e+130 little-endian
- >>>>28 long 0 64bit long (alpha/amd64/ia64)
- >>>>28 long !0 32bit long (armel/mipsel)
- #----------------------------------------------------------------------
- # ROOT: file(1) magic for ROOT databases
- #
- 0 string root\0 ROOT file
- >4 belong x Version %d
- >33 belong x (Compression: %d)
- # XXX: Weak magic.
- # Alex Ott <ott@jet.msk.su>
- ## Paradox file formats
- #2 leshort 0x0800 Paradox
- #>0x39 byte 3 v. 3.0
- #>0x39 byte 4 v. 3.5
- #>0x39 byte 9 v. 4.x
- #>0x39 byte 10 v. 5.x
- #>0x39 byte 11 v. 5.x
- #>0x39 byte 12 v. 7.x
- #>>0x04 byte 0 indexed .DB data file
- #>>0x04 byte 1 primary index .PX file
- #>>0x04 byte 2 non-indexed .DB data file
- #>>0x04 byte 3 non-incrementing secondary index .Xnn file
- #>>0x04 byte 4 secondary index .Ynn file
- #>>0x04 byte 5 incrementing secondary index .Xnn file
- #>>0x04 byte 6 non-incrementing secondary index .XGn file
- #>>0x04 byte 7 secondary index .YGn file
- #>>>0x04 byte 8 incrementing secondary index .XGn file
- ## XBase database files
- # updated by Joerg Jenderek at Feb 2013
- # http://www.dbase.com/Knowledgebase/INT/db7_file_fmt.htm
- # http://www.clicketyclick.dk/databases/xbase/format/dbf.html
- # http://home.f1.htw-berlin.de/scheibl/db/intern/dBase.htm
- # inspect VVYYMMDD , where 1<= MM <= 12 and 1<= DD <= 31
- 0 ubelong&0x0000FFFF <0x00000C20
- # skip Infocom game Z-machine
- >2 ubyte >0
- # skip Androids *.xml
- >>3 ubyte >0
- >>>3 ubyte <32
- # 1 < version VV
- >>>>0 ubyte >1
- # skip HELP.CA3 by test for reserved byte ( NULL )
- >>>>>27 ubyte 0
- # reserved bytes not always 0 ; also found 0x3901 (T4.DBF) ,0x7101 (T5.DBF,T6.DBF)
- #>>>>>30 ubeshort x 30NULL?%x
- # possible production flag,tag numbers(<=0x30),tag length(<=0x20), reserved (NULL)
- >>>>>>24 ubelong&0xffFFFFff >0x01302000
- # .DBF or .MDX
- >>>>>>24 ubelong&0xffFFFFff <0x01302001
- # for Xbase Database file (*.DBF) reserved (NULL) for multi-user
- >>>>>>>24 ubelong&0xffFFFFff =0
- # test for 2 reserved NULL bytes,transaction and encryption byte flag
- >>>>>>>>12 ubelong&0xFFFFfEfE 0
- # test for MDX flag
- >>>>>>>>>28 ubyte x
- >>>>>>>>>28 ubyte&0xf8 0
- # header size >= 32
- >>>>>>>>>>8 uleshort >31
- # skip PIC15736.PCX by test for language driver name or field name
- >>>>>>>>>>>32 ubyte >0
- !:mime application/x-dbf
- #!:mime application/x-dbf; charset=unknown-8bit ??
- #!:mime application/x-dbase
- >>>>>>>>>>>>0 use xbase-type
- # database file
- >>>>>>>>>>>>0 ubyte x \b DBF
- >>>>>>>>>>>>4 lelong 0 \b, no records
- >>>>>>>>>>>>4 lelong >0 \b, %ld record
- # plural s appended
- >>>>>>>>>>>>>4 lelong >1 \bs
- # http://www.clicketyclick.dk/databases/xbase/format/dbf_check.html#CHECK_DBF
- # 1 <= record size <= 4000 (dBase 3,4) or 32 * KB (=0x8000)
- >>>>>>>>>>>>10 uleshort x * %d
- # file size = records * record size + header size
- >>>>>>>>>>>>1 ubyte x \b, update-date
- >>>>>>>>>>>>1 use xbase-date
- # http://msdn.microsoft.com/de-de/library/cc483186(v=vs.71).aspx
- #>>>>>>>>>>>>29 ubyte =0 \b, codepage ID=0x%x
- # 2~cp850 , 3~cp1252 , 0x1b~?? ; what code page is 0x1b ?
- >>>>>>>>>>>>29 ubyte >0 \b, codepage ID=0x%x
- #>>>>>>>>>>>>28 ubyte&0x01 0 \b, no index file
- >>>>>>>>>>>>28 ubyte&0x01 1 \b, with index file .MDX
- >>>>>>>>>>>>28 ubyte&0x02 2 \b, with memo .FPT
- >>>>>>>>>>>>28 ubyte&0x04 4 \b, DataBaseContainer
- # 1st record offset + 1 = header size
- >>>>>>>>>>>>8 uleshort >0
- >>>>>>>>>>>>(8.s+1) ubyte >0
- >>>>>>>>>>>>>8 uleshort >0 \b, at offset %d
- >>>>>>>>>>>>>(8.s+1) ubyte >0
- >>>>>>>>>>>>>>&-1 string >\0 1st record "%s"
- # for multiple index files (*.MDX) Production flag,tag numbers(<=0x30),tag length(<=0x20), reserverd (NULL)
- >>>>>>>24 ubelong&0x0133f7ff >0
- # test for reserved NULL byte
- >>>>>>>>47 ubyte x
- # test for valid TAG key format (0x10 or 0)
- >>>>>>>>>559 ubyte&0xeF 0
- # test MM <= 12
- >>>>>>>>>45 ubeshort <0x0C20
- >>>>>>>>>>45 ubyte >0
- >>>>>>>>>>>46 ubyte <32
- >>>>>>>>>>>>46 ubyte >0
- #!:mime application/x-mdx
- >>>>>>>>>>>>>0 use xbase-type
- >>>>>>>>>>>>>0 ubyte x \b MDX
- >>>>>>>>>>>>>1 ubyte x \b, creation-date
- >>>>>>>>>>>>>1 use xbase-date
- >>>>>>>>>>>>>44 ubyte x \b, update-date
- >>>>>>>>>>>>>44 use xbase-date
- # No.of tags in use (1,2,5,12)
- >>>>>>>>>>>>>28 uleshort x \b, %d
- # No. of entries in tag (0x30)
- >>>>>>>>>>>>>25 ubyte x \b/%d tags
- # Length of tag
- >>>>>>>>>>>>>26 ubyte x * %d
- # 1st tag name_
- >>>>>>>>>>>>>548 string x \b, 1st tag "%.11s"
- # 2nd tag name
- #>>>>>>>>>>>>(26.b+548) string x \b, 2nd tag "%.11s"
- #
- # Print the xBase names of different version variants
- 0 name xbase-type
- >0 ubyte <2
- # 1 < version
- >0 ubyte >1
- >>0 ubyte 0x02 FoxBase
- # FoxBase+/dBaseIII+, no memo
- >>0 ubyte 0x03 FoxBase+/dBase III
- # dBASE IV no memo file
- >>0 ubyte 0x04 dBase IV
- # dBASE V no memo file
- >>0 ubyte 0x05 dBase V
- >>0 ubyte 0x30 Visual FoxPro
- >>0 ubyte 0x31 Visual FoxPro, autoincrement
- # Visual FoxPro, with field type Varchar or Varbinary
- >>0 ubyte 0x32 Visual FoxPro, with field type Varchar
- # dBASE IV SQL, no memo;dbv memo var size (Flagship)
- >>0 ubyte 0x43 dBase IV, with SQL table
- # http://msdn.microsoft.com/en-US/library/st4a0s68(v=vs.80).aspx
- #>>0 ubyte 0x62 dBase IV, with SQL table
- # dBASE IV, with memo!!
- >>0 ubyte 0x7b dBase IV, with memo
- # http://msdn.microsoft.com/en-US/library/st4a0s68(v=vs.80).aspx
- #>>0 ubyte 0x82 dBase IV, with SQL system
- # FoxBase+/dBaseIII+ with memo .DBT!
- >>0 ubyte 0x83 FoxBase+/dBase III, with memo .DBT
- # VISUAL OBJECTS (first 1.0 versions) for the Dbase III files (NTX clipper driver); memo file
- >>0 ubyte 0x87 VISUAL OBJECTS, with memo file
- # http://msdn.microsoft.com/en-US/library/st4a0s68(v=vs.80).aspx
- #>>0 ubyte 0x8A FoxBase+/dBase III, with memo .DBT
- # dBASE IV with memo!
- >>0 ubyte 0x8B dBase IV, with memo .DBT
- # dBase IV with SQL Table,no memo?
- >>0 ubyte 0x8E dBase IV, with SQL table
- # .dbv and .dbt memo (Flagship)?
- >>0 ubyte 0xB3 Flagship
- # http://msdn.microsoft.com/en-US/library/st4a0s68(v=vs.80).aspx
- #>>0 ubyte 0xCA dBase IV with memo .DBT
- # dBASE IV with SQL table, with memo .DBT
- >>0 ubyte 0xCB dBase IV with SQL table, with memo .DBT
- # HiPer-Six format;Clipper SIX, with SMT memo file
- >>0 ubyte 0xE5 Clipper SIX with memo
- # http://msdn.microsoft.com/en-US/library/st4a0s68(v=vs.80).aspx
- #>>0 ubyte 0xF4 dBase IV, with SQL table, with memo
- >>0 ubyte 0xF5 FoxPro with memo
- # http://msdn.microsoft.com/en-US/library/st4a0s68(v=vs.80).aspx
- #>>0 ubyte 0xFA FoxPro 2.x, with memo
- # unkown version (should not happen)
- >>0 default x xBase
- >>>0 ubyte x (0x%x)
- # flags in version byte
- # DBT flag (with dBASE III memo .DBT)!!
- # >>0 ubyte&0x80 >0 DBT_FLAG=%x
- # memo flag ??
- # >>0 ubyte&0x08 >0 MEMO_FLAG=%x
- # SQL flag ??
- # >>0 ubyte&0x70 >0 SQL_FLAG=%x
- # test and print the date of xBase .DBF .MDX
- 0 name xbase-date
- # inspect YYMMDD , where 1<= MM <= 12 and 1<= DD <= 31
- >0 ubelong x
- >1 ubyte <13
- >>1 ubyte >0
- >>>2 ubyte >0
- >>>>2 ubyte <32
- >>>>>0 ubyte x
- # YY is interpreted as 20YY or 19YY
- >>>>>>0 ubyte <100 \b %.2d
- # YY is interpreted 1900+YY; TODO: display yy or 20yy instead 1YY
- >>>>>>0 ubyte >99 \b %d
- >>>>>1 ubyte x \b-%d
- >>>>>2 ubyte x \b-%d
- # dBase memo files .DBT or .FPT
- # http://msdn.microsoft.com/en-us/library/8599s21w(v=vs.80).aspx
- 16 ubyte <4
- >16 ubyte !2
- >>16 ubyte !1
- # next free block index is positive
- >>>0 ulelong >0
- # skip many JPG. ZIP, BZ2 by test for reserved bytes NULL , 0|2 , 0|1 , low byte of block size
- >>>>17 ubelong&0xFFfdFE00 0x00000000
- # skip many RAR by test for low byte 0 ,high byte 0|2|even of block size, 0|a|e|d7 , 0|64h
- >>>>>20 ubelong&0xFF01209B 0x00000000
- # dBASE III
- >>>>>>16 ubyte 3
- # dBASE III DBT
- >>>>>>>0 use xbase-memo-print
- # dBASE IV DBT , FoxPro FPT or many PNG , ZIP , DBF garbage
- >>>>>>16 ubyte 0
- # dBASE IV DBT with DBF name or DBF garbage
- >>>>>>>8 ubelong >0x40000000
- # skip DBF and catch dBASE IV DBT with DBF name and with non big index of next free block
- >>>>>>>>0 ulelong <0x01010002
- >>>>>>>>>0 use xbase-memo-print
- >>>>>>>8 ubelong 0
- # skip MM*DD*.bin by test for for reserved NULL byte
- >>>>>>>>508 ubelong 0
- # real memo files should contain text here
- >>>>>>>>>520 ubelong >0x20202019
- >>>>>>>>>>520 ubelong <0xFEFEFEFF
- >>>>>>>>>>>0 use xbase-memo-print
- # garbage PCX , ZIP , JAR , XPI
- >>>>>>>8 default x
- # Print the information of dBase DBT or FoxPro FPT memo files
- 0 name xbase-memo-print
- >0 ubyte x
- # test version
- # memo file
- >>16 ubyte 3 dBase III DBT
- >>16 ubyte 0
- >>>512 ubelong <0x00000003 FoxPro FPT
- # Size of blocks for FoxPro
- >>>>6 ubeshort x \b, blocks size %lu
- # Number of next available block for appending data for FoxPro
- >>>>0 ubelong =0 \b, next free block index %lu
- >>>>0 ubelong !0 \b, next free block index %lu
- >>>512 default x dBase IV DBT
- # DBF file name without extention
- >>>>8 string >\0 \b of %-.8s.DBF
- # size of blocks ; not reliable 0x2020204C
- #>>>>4 ulelong =0 \b, blocks size %lu
- >>>>4 ulelong !0 \b, blocks size %lu
- # Block length found 0 , 512
- #>>>>20 uleshort =0 \b, block length %u
- >>>>20 uleshort !0 \b, block length %u
- # Number of next available block for appending data
- >>>>0 ulelong =0 \b, next free block index %lu
- >>>>0 ulelong !0 \b, next free block index %lu
- >>512 ubelong x
- >>>512 ubelong =0xFFFF0800
- >>>>520 string >\0 \b, 1st used item "%s"
- # FoxPro
- >>>512 ubelong <3
- # FoxPro memo
- >>>>512 ubelong =1
- >>>>520 string >\0 \b, 1st used item "%s"
- >>>512 default x
- # may be deleted memo field
- >>>>512 string >\0 \b, 1st item "%s"
- # TODO:
- # DBASE index file *.NDX
- # DBASE Compound Index file *.CDX
- # dBASE IV Printer Driver *.PRF
- ## End of XBase database stuff
- # MS Access database
- 4 string Standard\ Jet\ DB Microsoft Access Database
- !:mime application/x-msaccess
- 4 string Standard\ ACE\ DB Microsoft Access Database
- !:mime application/x-msaccess
- # TDB database from Samba et al - Martin Pool <mbp@samba.org>
- 0 string TDB\ file TDB database
- >32 lelong 0x2601196D version 6, little-endian
- >>36 lelong x hash size %d bytes
- # SE Linux policy database
- 0 lelong 0xf97cff8c SE Linux policy
- >16 lelong x v%d
- >20 lelong 1 MLS
- >24 lelong x %d symbols
- >28 lelong x %d ocons
- # ICE authority file data (Wolfram Kleff)
- 2 string ICE ICE authority data
- # X11 Xauthority file (Wolfram Kleff)
- 10 string MIT-MAGIC-COOKIE-1 X11 Xauthority data
- 11 string MIT-MAGIC-COOKIE-1 X11 Xauthority data
- 12 string MIT-MAGIC-COOKIE-1 X11 Xauthority data
- 13 string MIT-MAGIC-COOKIE-1 X11 Xauthority data
- 14 string MIT-MAGIC-COOKIE-1 X11 Xauthority data
- 15 string MIT-MAGIC-COOKIE-1 X11 Xauthority data
- 16 string MIT-MAGIC-COOKIE-1 X11 Xauthority data
- 17 string MIT-MAGIC-COOKIE-1 X11 Xauthority data
- 18 string MIT-MAGIC-COOKIE-1 X11 Xauthority data
- # From: Maxime Henrion <mux@FreeBSD.org>
- # PostgreSQL's custom dump format, Maxime Henrion <mux@FreeBSD.org>
- 0 string PGDMP PostgreSQL custom database dump
- >5 byte x - v%d
- >6 byte x \b.%d
- >5 beshort <0x101 \b-0
- >5 beshort >0x100
- >>7 byte x \b-%d
- # Type: Advanced Data Format (ADF) database
- # URL: http://www.grc.nasa.gov/WWW/cgns/adf/
- # From: Nicolas Chauvat <nicolas.chauvat@logilab.fr>
- 0 string @(#)ADF\ Database CGNS Advanced Data Format
- # Tokyo Cabinet magic data
- # http://tokyocabinet.sourceforge.net/index.html
- 0 string ToKyO\ CaBiNeT\n Tokyo Cabinet
- >14 string x \b (%s)
- >32 byte 0 \b, Hash
- !:mime application/x-tokyocabinet-hash
- >32 byte 1 \b, B+ tree
- !:mime application/x-tokyocabinet-btree
- >32 byte 2 \b, Fixed-length
- !:mime application/x-tokyocabinet-fixed
- >32 byte 3 \b, Table
- !:mime application/x-tokyocabinet-table
- >33 byte &1 \b, [open]
- >33 byte &2 \b, [fatal]
- >34 byte x \b, apow=%d
- >35 byte x \b, fpow=%d
- >36 byte &0x01 \b, [large]
- >36 byte &0x02 \b, [deflate]
- >36 byte &0x04 \b, [bzip]
- >36 byte &0x08 \b, [tcbs]
- >36 byte &0x10 \b, [excodec]
- >40 lequad x \b, bnum=%lld
- >48 lequad x \b, rnum=%lld
- >56 lequad x \b, fsiz=%lld
- # Type: QDBM Quick Database Manager
- # From: Benoit Sibaud <bsibaud@april.org>
- 0 string \\[depot\\]\n\f Quick Database Manager, little endian
- 0 string \\[DEPOT\\]\n\f Quick Database Manager, big endian
- # Type: TokyoCabinet database
- # URL: http://tokyocabinet.sourceforge.net/
- # From: Benoit Sibaud <bsibaud@april.org>
- 0 string ToKyO\ CaBiNeT\n TokyoCabinet database
- >14 string x (version %s)
- # From: Stephane Blondon http://www.yaal.fr
- # Database file for Zope (done by FileStorage)
- 0 string FS21 Zope Object Database File Storage (data)
- # Cache file for the database of Zope (done by ClientStorage)
- 0 string ZEC3 Zope Object Database Client Cache File (data)
- # IDA (Interactive Disassembler) database
- 0 string IDA1 IDA (Interactive Disassembler) database
|