1327e51cbSPeter Avalos 2327e51cbSPeter Avalos#------------------------------------------------------------------------------ 3*3b9cdfa3SAntonio Huete Jimenez# $File: sql,v 1.24 2022/07/17 15:32:48 christos Exp $ 4327e51cbSPeter Avalos# sql: file(1) magic for SQL files 5327e51cbSPeter Avalos# 6327e51cbSPeter Avalos# From: "Marty Leisner" <mleisner@eng.mc.xerox.com> 7327e51cbSPeter Avalos# Recognize some MySQL files. 8e8af9738SPeter Avalos# Elan Ruusamae <glen@delfi.ee>, added MariaDB signatures 9e8af9738SPeter Avalos# from https://bazaar.launchpad.net/~maria-captains/maria/5.5/view/head:/support-files/magic 10327e51cbSPeter Avalos# 11327e51cbSPeter Avalos0 beshort 0xfe01 MySQL table definition file 12327e51cbSPeter Avalos>2 byte x Version %d 13c30bd091SSascha Wildner>3 byte 0 \b, type UNKNOWN 14c30bd091SSascha Wildner>3 byte 1 \b, type DIAM_ISAM 15c30bd091SSascha Wildner>3 byte 2 \b, type HASH 16c30bd091SSascha Wildner>3 byte 3 \b, type MISAM 17c30bd091SSascha Wildner>3 byte 4 \b, type PISAM 18c30bd091SSascha Wildner>3 byte 5 \b, type RMS_ISAM 19c30bd091SSascha Wildner>3 byte 6 \b, type HEAP 20c30bd091SSascha Wildner>3 byte 7 \b, type ISAM 21c30bd091SSascha Wildner>3 byte 8 \b, type MRG_ISAM 22c30bd091SSascha Wildner>3 byte 9 \b, type MYISAM 23c30bd091SSascha Wildner>3 byte 10 \b, type MRG_MYISAM 24c30bd091SSascha Wildner>3 byte 11 \b, type BERKELEY_DB 25c30bd091SSascha Wildner>3 byte 12 \b, type INNODB 26c30bd091SSascha Wildner>3 byte 13 \b, type GEMINI 27c30bd091SSascha Wildner>3 byte 14 \b, type NDBCLUSTER 28c30bd091SSascha Wildner>3 byte 15 \b, type EXAMPLE_DB 29c30bd091SSascha Wildner>3 byte 16 \b, type CSV_DB 30c30bd091SSascha Wildner>3 byte 17 \b, type FEDERATED_DB 31c30bd091SSascha Wildner>3 byte 18 \b, type BLACKHOLE_DB 32c30bd091SSascha Wildner>3 byte 19 \b, type PARTITION_DB 33c30bd091SSascha Wildner>3 byte 20 \b, type BINLOG 34c30bd091SSascha Wildner>3 byte 21 \b, type SOLID 35c30bd091SSascha Wildner>3 byte 22 \b, type PBXT 36c30bd091SSascha Wildner>3 byte 23 \b, type TABLE_FUNCTION 37c30bd091SSascha Wildner>3 byte 24 \b, type MEMCACHE 38c30bd091SSascha Wildner>3 byte 25 \b, type FALCON 39c30bd091SSascha Wildner>3 byte 26 \b, type MARIA 40c30bd091SSascha Wildner>3 byte 27 \b, type PERFORMANCE_SCHEMA 41c30bd091SSascha Wildner>3 byte 127 \b, type DEFAULT 42c30bd091SSascha Wildner>0x0033 ulong x \b, MySQL version %d 43327e51cbSPeter Avalos0 belong&0xffffff00 0xfefe0500 MySQL ISAM index file 44327e51cbSPeter Avalos>3 byte x Version %d 45327e51cbSPeter Avalos0 belong&0xffffff00 0xfefe0600 MySQL ISAM compressed data file 46327e51cbSPeter Avalos>3 byte x Version %d 47c30bd091SSascha Wildner0 belong&0xffffff00 0xfefe0700 MySQL MyISAM index file 48c30bd091SSascha Wildner>3 byte x Version %d 49c30bd091SSascha Wildner>14 beshort x \b, %d key parts 50c30bd091SSascha Wildner>16 beshort x \b, %d unique key parts 51c30bd091SSascha Wildner>18 byte x \b, %d keys 52c30bd091SSascha Wildner>28 bequad x \b, %lld records 53c30bd091SSascha Wildner>36 bequad x \b, %lld deleted records 54c30bd091SSascha Wildner0 belong&0xffffff00 0xfefe0800 MySQL MyISAM compressed data file 55c30bd091SSascha Wildner>3 byte x Version %d 56c30bd091SSascha Wildner0 belong&0xffffff00 0xfefe0900 MySQL Maria index file 57c30bd091SSascha Wildner>3 byte x Version %d 58c30bd091SSascha Wildner0 belong&0xffffff00 0xfefe0a00 MySQL Maria compressed data file 59c30bd091SSascha Wildner>3 byte x Version %d 60e8af9738SPeter Avalos0 belong&0xffffff00 0xfefe0c00 61e8af9738SPeter Avalos>4 string MACF MySQL Maria control file 62e8af9738SPeter Avalos>>3 byte x Version %d 63c30bd091SSascha Wildner0 string \376bin MySQL replication log, 64c30bd091SSascha Wildner>9 long x server id %d 65c30bd091SSascha Wildner>8 byte 1 66c30bd091SSascha Wildner>>13 long 69 \b, MySQL V3.2.3 67c30bd091SSascha Wildner>>>19 string x \b, server version %s 68c30bd091SSascha Wildner>>13 long 75 \b, MySQL V4.0.2-V4.1 69c30bd091SSascha Wildner>>>25 string x \b, server version %s 70c30bd091SSascha Wildner>8 byte 15 MySQL V5+, 71c30bd091SSascha Wildner>>25 string x server version %s 72c30bd091SSascha Wildner>4 string MARIALOG MySQL Maria transaction log file 73c30bd091SSascha Wildner>>3 byte x Version %d 74327e51cbSPeter Avalos 75327e51cbSPeter Avalos#------------------------------------------------------------------------------ 76327e51cbSPeter Avalos# iRiver H Series database file 77327e51cbSPeter Avalos# From Ken Guest <ken@linux.ie> 78327e51cbSPeter Avalos# As observed from iRivNavi.iDB and unencoded firmware 79327e51cbSPeter Avalos# 80327e51cbSPeter Avalos0 string iRivDB iRiver Database file 81327e51cbSPeter Avalos>11 string >\0 Version %s 82327e51cbSPeter Avalos>39 string iHP-100 [H Series] 83327e51cbSPeter Avalos 84327e51cbSPeter Avalos#------------------------------------------------------------------------------ 85327e51cbSPeter Avalos# SQLite database files 86327e51cbSPeter Avalos# Ken Guest <ken@linux.ie>, Ty Sarna, Zack Weinberg 87327e51cbSPeter Avalos# 88327e51cbSPeter Avalos# Version 1 used GDBM internally; its files cannot be distinguished 89327e51cbSPeter Avalos# from other GDBM files. 90327e51cbSPeter Avalos# 91327e51cbSPeter Avalos# Version 2 used this format: 92327e51cbSPeter Avalos0 string **\ This\ file\ contains\ an\ SQLite SQLite 2.x database 93327e51cbSPeter Avalos 94614728caSSascha Wildner# URL: https://en.wikipedia.org/wiki/SQLite 95614728caSSascha Wildner# Reference: https://www.sqlite.org/fileformat.html 96614728caSSascha Wildner# Update: Joerg Jenderek 97327e51cbSPeter Avalos# Version 3 of SQLite allows applications to embed their own "user version" 98e8af9738SPeter Avalos# number in the database at offset 60. Later, SQLite added an "application id" 99e8af9738SPeter Avalos# at offset 68 that is preferred over "user version" for indicating the 100e8af9738SPeter Avalos# associated application. 101e8af9738SPeter Avalos# 102614728caSSascha Wildner0 string SQLite\ format\ 3 103614728caSSascha Wildner# skip DROID fmt-729-signature-id-1053.sqlite by checking for valid page size 104614728caSSascha Wildner>16 ubeshort >0 SQLite 3.x 105614728caSSascha Wildner# deprecated 106614728caSSascha Wildner#!:mime application/x-sqlite3 107614728caSSascha Wildner!:mime application/vnd.sqlite3 108c30bd091SSascha Wildner# seldom found extension sqlite3 like in SyncData.sqlite3 109c30bd091SSascha Wildner# db 110614728caSSascha Wildner# db3 like: AddrBook.db3 cgipcrvp.db3 111614728caSSascha Wildner# https://www.maplesoft.com/support/help/Maple/view.aspx?path=worksheet%2freference%2fhelpdatabase 112614728caSSascha Wildner# help is used for newer Maple help database 113614728caSSascha Wildner# SQLite database weewx.sdb used by weather software weewx 114614728caSSascha Wildner# https://www.weewx.com/docs/usersguide.htm 115c30bd091SSascha Wildner# Avira Antivir use extension "dbe" like in avevtdb.dbe, avguard_tchk.dbe 116c30bd091SSascha Wildner# Unfortunately extension sqlite also used for other databases starting with string 117c30bd091SSascha Wildner# "TTCONTAINER" like in tracks.sqlite contentconsumer.sqlite contentproducerrepository.sqlite 118c30bd091SSascha Wildner# and with string "ZV-zlib" in like extra.sqlite 119614728caSSascha Wildner>>68 belong !0x5CDE09EF database 120614728caSSascha Wildner!:ext sqlite/sqlite3/db/db3/dbe/sdb/help 121614728caSSascha Wildner>>68 belong =0x5CDE09EF database 122614728caSSascha Wildner# maple is used for Maple Workbook 123614728caSSascha Wildner!:ext maple 124614728caSSascha Wildner>>60 belong =0x5f4d544e (Monotone source repository) 125614728caSSascha Wildner# if no known user version then check for Application IDs with default clause 126614728caSSascha Wildner>>60 belong !0x5f4d544e 127614728caSSascha Wildner# The "Application ID" set by PRAGMA application_id 128614728caSSascha Wildner>>>68 belong =0x0f055112 (Fossil checkout) 129614728caSSascha Wildner>>>68 belong =0x0f055113 (Fossil global configuration) 130614728caSSascha Wildner>>>68 belong =0x0f055111 (Fossil repository) 131614728caSSascha Wildner>>>68 belong =0x42654462 (Bentley Systems BeSQLite Database) 132614728caSSascha Wildner>>>68 belong =0x42654c6e (Bentley Systems Localization File) 133614728caSSascha Wildner>>>68 belong =0x47504b47 (OGC GeoPackage file) 134614728caSSascha Wildner# https://www.sqlite.org/src/artifact?ci=trunk&filename=magic.txt 135614728caSSascha Wildner>>>68 belong =0x47503130 (OGC GeoPackage version 1.0 file) 136614728caSSascha Wildner>>>68 belong =0x45737269 (Esri Spatially-Enabled Database) 137614728caSSascha Wildner>>>68 belong =0x4d504258 (MBTiles tileset) 138614728caSSascha Wildner# https://www.maplesoft.com/support/help/errors/view.aspx?path=Formats/Maple 139614728caSSascha Wildner>>>68 belong =0x5CDE09EF (Maple Workbook) 140614728caSSascha Wildner# unknown application ID 141614728caSSascha Wildner>>>68 default x 142614728caSSascha Wildner>>>>68 belong !0 \b, application id %u 143614728caSSascha Wildner# The "user version" as read and set by the user_version pragma like: 144614728caSSascha Wildner# 1 2 4 5 7 9 10 25 36 43 53 400 416 131073 131074 131075 145e8af9738SPeter Avalos>>60 belong !0 \b, user version %d 146614728caSSascha Wildner# SQLITE_VERSION_NUMBER like: 0 3008011 3016002 3007014 3017000 3022000 3028000 3031001 147614728caSSascha Wildner>>96 belong x \b, last written using SQLite version %d 148614728caSSascha Wildner# database page size in bytes; a power of two between 512 and 32768, or 1 for 65536 149614728caSSascha Wildner# like: 512 1024 often 4096 32768 150614728caSSascha Wildner>>16 ubeshort !4096 \b, page size %u 151614728caSSascha Wildner# File format write version. 1 for legacy; 2 for WAL; 0 for corruptDB.sqlite 152614728caSSascha Wildner>>18 ubyte !1 \b, writer version %u 153614728caSSascha Wildner# File format read version. 1 for legacy; 2 for WAL; 4 for corruptDB.sqlite 154614728caSSascha Wildner>>19 ubyte !1 \b, read version %u 155614728caSSascha Wildner# Bytes of unused "reserved" space at the end of each page. Usually 0 156614728caSSascha Wildner>>20 ubyte !0 \b, unused bytes %u 157614728caSSascha Wildner# maximum embedded payload fraction. Must be 64; 1 for corruptDB.sqlite 158614728caSSascha Wildner>>21 ubyte !64 \b, maximum payload %u 159614728caSSascha Wildner# Minimum embedded payload fraction. Must be 32; 1 for corruptDB.sqlite 160614728caSSascha Wildner>>22 ubyte !32 \b, minimum payload %u 161614728caSSascha Wildner# Leaf payload fraction. Must be 32; 0 for corruptDB.sqlite 162614728caSSascha Wildner>>23 ubyte !32 \b, leaf payload %u 163614728caSSascha Wildner# file change counter 164614728caSSascha Wildner>>24 ubelong x \b, file counter %u 165614728caSSascha Wildner# Size of the database file in pages 166614728caSSascha Wildner>>28 ubelong x \b, database pages %u 167614728caSSascha Wildner# page number of the first freelist trunk page like: 0 2 3 4 5 9 168614728caSSascha Wildner# 10 13 14 15 16 17 18 19 23 36 39 46 50 136 190 217 307 505 516 561 883 1659 169614728caSSascha Wildner>>32 ubelong !0 \b, 1st free page %u 170614728caSSascha Wildner# total number of freelist pages 171614728caSSascha Wildner>>36 ubelong !0 \b, free pages %u 172614728caSSascha Wildner# The schema cookie like: 2 3 4 6 7 9 A D E F 13 14 1C 25 2A 2F 33 44 4B 53 5A 5F 62 86 87 8F 91 A8 173614728caSSascha Wildner>>40 ubelong x \b, cookie %#x 174614728caSSascha Wildner# the schema format number. Supported formats are 1 2 3 and often 4 175614728caSSascha Wildner# 3328 for corruptDB.sqlite and 0 for 512 byte storage.sqlite (TorBrowser Firefox Thunderbird) 176614728caSSascha Wildner>>44 ubelong x \b, schema %u 177614728caSSascha Wildner# Suggested cache size like: 0 2000 178614728caSSascha Wildner>>48 ubelong !0 \b, cache page size %u 179614728caSSascha Wildner# The page number of the largest root b-tree page when in auto-vacuum or incremental-vacuum modes, or zero otherwise. 180614728caSSascha Wildner>>52 ubelong !0 \b, largest root page %u 181614728caSSascha Wildner# The database text encoding; a value of 1 means UTF-8; 2 means UTF-16le; 3 means UTF-16be 182614728caSSascha Wildner#>>56 ubelong x \b, encoding %u 183614728caSSascha Wildner>>56 ubelong x 184614728caSSascha Wildner>>>56 ubelong =1 \b, UTF-8 185614728caSSascha Wildner>>>56 ubelong =2 \b, UTF-16 little endian 186614728caSSascha Wildner>>>56 ubelong =3 \b, UTF-16 big endian 187614728caSSascha Wildner# 0 for corruptDB.sqlite and for storage.sqlite with database pages 1 (TorBrowser Firefox Thunderbird) 188614728caSSascha Wildner# https://mozilla.github.io/firefox-browser-architecture/text/0010-firefox-data-stores.html 189614728caSSascha Wildner>>>56 default x 190614728caSSascha Wildner>>>>56 ubelong x \b, unknown %#x encoding 191614728caSSascha Wildner# True (non-zero) for incremental-vacuum mode; false (zero) otherwiseqy 192614728caSSascha Wildner>>64 ubelong !0 \b, vacuum mode %u 193614728caSSascha Wildner# Reserved for expansion. Must be zero 194614728caSSascha Wildner>>72 uquad !0 \b, reserved %#llx 195614728caSSascha Wildner# The version-valid-for number like: 196614728caSSascha Wildner# 1 2 3 4 C F 68h 95h 266h A99h 3DCDh B7CEh 197614728caSSascha Wildner>>92 ubelong x \b, version-valid-for %u 198e8af9738SPeter Avalos 199e8af9738SPeter Avalos# SQLite Write-Ahead Log from SQLite version >= 3.7.0 2006fca56fbSSascha Wildner# https://www.sqlite.org/fileformat.html#walformat 201e8af9738SPeter Avalos0 belong&0xfffffffe 0x377f0682 SQLite Write-Ahead Log, 202c30bd091SSascha Wildner!:ext sqlite-wal/db-wal 20382c5fa3eSPeter Avalos>4 belong x version %d 204e8af9738SPeter Avalos 205e8af9738SPeter Avalos# SQLite Rollback Journal 2066fca56fbSSascha Wildner# https://www.sqlite.org/fileformat.html#rollbackjournal 207e8af9738SPeter Avalos0 string \xd9\xd5\x05\xf9\x20\xa1\x63\xd7 SQLite Rollback Journal 208e8af9738SPeter Avalos 209e8af9738SPeter Avalos# Panasonic channel list database svl.bin or svl.db added by Joerg Jenderek 210c30bd091SSascha Wildner# https://github.com/PredatH0r/ChanSort 211c30bd091SSascha Wildner0 string PSDB\0 Panasonic channel list DataBase 212c30bd091SSascha Wildner!:ext db/bin 213c30bd091SSascha Wildner#!:mime application/x-db-svl-panasonic 214e8af9738SPeter Avalos>126 string SQLite\ format\ 3 215c30bd091SSascha Wildner#!:mime application/x-panasonic-sqlite3 216e8af9738SPeter Avalos>>&-15 indirect x \b; contains 217c30bd091SSascha Wildner 2186fca56fbSSascha Wildner# H2 Database from https://www.h2database.com/ 219c30bd091SSascha Wildner0 string --\ H2\ 0.5/B\ --\ \n H2 Database file 220*3b9cdfa3SAntonio Huete Jimenez 221*3b9cdfa3SAntonio Huete Jimenez# DuckDB database file from https://duckdb.org 222*3b9cdfa3SAntonio Huete Jimenez8 string DUCK DuckDB database file 223*3b9cdfa3SAntonio Huete Jimenez>12 lequad x \b, version %lld 224*3b9cdfa3SAntonio Huete Jimenez#>20 lequad x \b, flags %#llx 225*3b9cdfa3SAntonio Huete Jimenez#>28 lequad x \b, flags %#llx 226