database 15 KB

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