diff options
Diffstat (limited to 'magic/Magdir')
116 files changed, 4912 insertions, 1386 deletions
diff --git a/magic/Magdir/acorn b/magic/Magdir/acorn index 4aa34551a74b..37a4ed79e56e 100644 --- a/magic/Magdir/acorn +++ b/magic/Magdir/acorn @@ -1,6 +1,6 @@ #------------------------------------------------------------------------------ -# $File: acorn,v 1.7 2019/04/19 00:42:27 christos Exp $ +# $File: acorn,v 1.8 2021/04/26 15:56:00 christos Exp $ # acorn: file(1) magic for files found on Acorn systems # @@ -90,13 +90,13 @@ # null terminated root directory object like IDEFS::IDE-4.$.Apps.GRAPHICS.!XFMPdemo >>>9 string x \b, root "%s" # load address 0xFFFtttdd, ttt is the object filetype and dddddddddd is time ->>>>&1 ulelong x \b, load address 0x%x +>>>>&1 ulelong x \b, load address %#x # execution address 0xdddddddd dddddddddd is 40 bit unsigned centiseconds since 1.1.1900 UTC ->>>>&5 ulelong x \b, exec address 0x%x +>>>>&5 ulelong x \b, exec address %#x # attributes (bits: 0~owner read,1~owner write,3~no delete,4~public read,5~public write) ->>>>&9 ulelong x \b, attributes 0x%x +>>>>&9 ulelong x \b, attributes %#x # number of entries in this directory. for root dir 0 -#>>>&13 ulelong x \b, entries 0x%x +#>>>&13 ulelong x \b, entries %#x # the entries start here with object name >>>>&17 string x \b, 1st object "%s" diff --git a/magic/Magdir/aes b/magic/Magdir/aes new file mode 100644 index 000000000000..e5e1edcb1350 --- /dev/null +++ b/magic/Magdir/aes @@ -0,0 +1,29 @@ + +#------------------------------------------------------------------------------ +# $File: aes,v 1.1 2020/08/18 21:20:22 christos Exp $ +# +# aes: magic file for AES encrypted files + +# Summary: AES Crypt Encrypted Data File +# From: Joerg Jenderek +# URL: https://en.wikipedia.org/wiki/Advanced_Encryption_Standard +# Reference: https://www.aescrypt.com/aes_file_format.html +0 string AES +>3 ubyte <3 AES encrypted data, version %u +#!:mime application/aes +!:mime application/x-aes-encrypted +!:ext aes +# For Version 2 the encrypted file can have text tags +>>3 ubyte =2 +# length of an extension identifier and contents like: 0 24 33 38 +#>>5 ubeshort x \b, tag length %u +#>>5 pstring/H x '%s' +# standard extension tags like CREATED_BY +>>>7 string CREATED_BY \b, created by +# software product, manufacturer like "SharpAESCrypt v1.3.3.0" "aescrypt (Windows GUI) 3.10" ... +>>>>&1 string x "%s" +# TODO: more other tags +# tag CREATED_DATE like YYYY-MM-DD +# tag CREATED_TIME like HH:MM:SS +# + diff --git a/magic/Magdir/algol68 b/magic/Magdir/algol68 index 3675b840e3b6..77016778ad78 100644 --- a/magic/Magdir/algol68 +++ b/magic/Magdir/algol68 @@ -1,19 +1,41 @@ #------------------------------------------------------------------------------ -# $File: algol68,v 1.3 2018/10/19 01:04:21 christos Exp $ +# $File: algol68,v 1.4 2021/08/15 06:00:55 christos Exp $ # algol68: file(1) magic for Algol 68 source # -0 search/8192 (input, Algol 68 source text -!:mime text/x-Algol68 -0 regex/1024 \^PROC Algol 68 source text -!:mime text/x-Algol68 -0 regex/1024 \bMODE[\t\ ] Algol 68 source text -!:mime text/x-Algol68 -0 regex/1024 \bREF[\t\ ] Algol 68 source text -!:mime text/x-Algol68 -0 regex/1024 \bFLEX[\t\ ]\*\\[ Algol 68 source text +# URL: https://en.wikipedia.org/wiki/ALGOL_68 +# Reference: http://www.softwarepreservation.org/projects/ALGOL/report/Algol68_revised_report-AB.pdf +# Update: Joerg Jenderek +0 search/8192 (input, +>0 use algol_68 +# graph_2d.a68 +0 regex/4006 \^PROC +#>&-4 string x \b, dBase or Algol "%s" +# most xBase scripts *.prg with PROCEDURE like: Areacode BarCount Def_mens Vendors +#>&-4 string =PROCEDURE \b, dBase PROCEDURE +# skip xBase program scripts *.prg with PROCEDURE keyword +# keyword proc probably followed by white space used to specify algol procedures +>&-4 string !PROCEDURE +>>0 use algol_68 +0 regex/1024 \bMODE[\t\ ] +>0 use algol_68 +0 regex/1024 \bMODE[\t\ ] +>0 use algol_68 +0 regex/1024 \bREF[\t\ ] +>0 use algol_68 +0 regex/1024 \bFLEX[\t\ ]\*\\[ +>0 use algol_68 + +# display information like mime type and file name extension of Algol 68 source text +0 name algol_68 Algol 68 source text !:mime text/x-Algol68 +# https://file-extension.net/seeker/file_extension_a68 +!:ext a68 +#!:ext a68/alg + #0 regex [\t\ ]OD Algol 68 source text +#>0 use algol_68 #!:mime text/x-Algol68 #0 regex [\t\ ]FI Algol 68 source text +#>0 use algol_68 #!:mime text/x-Algol68 diff --git a/magic/Magdir/amigaos b/magic/Magdir/amigaos index e719921ef39f..fdd947fdf7f5 100644 --- a/magic/Magdir/amigaos +++ b/magic/Magdir/amigaos @@ -1,6 +1,6 @@ #------------------------------------------------------------------------------ -# $File: amigaos,v 1.17 2018/10/16 18:57:19 christos Exp $ +# $File: amigaos,v 1.20 2021/09/20 00:42:19 christos Exp $ # amigaos: file(1) magic for AmigaOS binary formats: # @@ -40,7 +40,62 @@ #26 string V.2 Brian Postma's Soundmon Module sound file v2 # The following are from: "Stefan A. Haubenthal" <polluks@web.de> -0 beshort 0x0f00 AmigaOS bitmap font +# Update: Joerg Jenderek +# URL: http://fileformats.archiveteam.org/wiki/Amiga_bitmap_font +# Reference: http://mark0.net/download/triddefs_xml.7z/defs/f/font-amiga.trid.xml +# https://wiki.amigaos.net/wiki/Graphics_Library_and_Text +# fch_FileID=FCH_ID=0x0f00 +0 beshort 0x0f00 +# skip some AVM powerline firmware images by check for positive number of font elements +# https://download.avm.de/fritzpowerline/fritzpowerline-1000e-t/other/fritz.os/fritz.powerline_1000ET_01_05.image +>2 ubeshort >0 AmigaOS bitmap font +#!:mime application/octet-stream +!:mime font/x-amiga-font +!:ext font +# struct FontContents fch_FC; 1st fc_FileName [MAXFONTPATH=256]; ~ filename "/" fc_YSize +# like: topazb/6 suits/8 Excel/9e emerald/17 Franklin/23 DIAMONDS/60.8C +>>4 string x "%.256s" +# fc_YSize ~number after slash in fc_FileName; like: 6 7 8 9 11 12 16 17 21 23 45 60 +>>260 beshort x \b, fc_YSize %u +# fch_NumEntries; number of FontContents elements like: +# 1 (often) 2 3 (IconCondensed.font tempfont.font) 4 (Franklin.font) 6 (mcoop.font) +>>2 ubeshort >1 \b, %u elements +#>>2 beshort x \b, %u element +# plural s +#>>2 beshort !1 \bs +# like: 6 7 8 9 11 12 16 17 21 23 45 60 +#>>262 beshort x \b, FLAGS_STYLE +>>2 beshort >1 \b, 2nd +# 2nd fc_FileName like: Franklin/36 +>>>264 string x "%.256s" +>>2 beshort >2 \b, 3rd +# 3rd fc_FileName like: Franklin/18 +>>>524 string x "%.256s" +# URL: http://fileformats.archiveteam.org/wiki/Amiga_bitmap_font +# Reference: https://wiki.amigaos.net/wiki/Graphics_Library_and_Text +# http://mark0.net/download/triddefs_xml.7z/defs/f/font-amiga-var2.trid.xml +# Note: called by TrID "Amiga bitmap Font (var.2)" +# fch_FileID=TFCH_ID=0x0f02 +0 beshort 0x0f02 +# skip possible misidentified foo by check for positive number of font elements +>2 ubeshort >0 AmigaOS bitmap font (TFCH) +#!:mime application/octet-stream +!:mime font/x-amiga-font +!:ext font +# struct TFontContents fch_TFC[]; 1st tfc_FileName [254]; ~ filename "/" fc_YSize +# like: Abbey/45 XScript/75 XTriumvirate/45 +>>4 string x "%.254s" +# tfc_TagCount; including the TAG_END tag like: 4 +>>258 ubeshort x \b, tfc_TagCount %u +# tfc_YSize ~number after slash in tfc_FileName; like: 45 75 +>>260 beshort x \b, tfc_YSize %u +# tfc_Style; tfc_Flags like: 8022h 8222h +#>>262 ubeshort x \b, FLAGS_STYLE %#x +# fch_NumEntries; number of FontContents elements like: 1 (abbey.font) 2 (xscript.font xtriumvirate.font) +>>2 ubeshort >1 \b, %u elements +>>2 beshort >1 \b, 2nd +# 2nd tfc_FileName like: XScript/45 XTriumvirate/30 +>>>264 string x "%.254s" 0 beshort 0x0f03 AmigaOS outline font 0 belong 0x80001001 AmigaOS outline tag 0 string ##\ version catalog translation @@ -49,15 +104,91 @@ 0 string/c @database AmigaGuide file # Amiga disk types +# display information like volume name of root block on Amiga (floppy) disk +0 name adf-rootblock +# block primary type = T_HEADER (value 2) +>0x000 ubelong !2 \b, type %u +# header_key; unused in rootblock (value 0) +>0x004 ubelong !0 \b, header_key %u +# high_seq; unused (value 0) +>0x008 ubelong !0 \b, high_seq %u +# ht_size; hash table size; 0x48 for flopies +>0x00c ubelong !0x48 \b, hash table size %#x +# bm_flag; bitmap flag, -1 means VALID +>0x138 belong !-1 \b, bitmap flag %#x +# bm_ext; first bitmap extension block (Hard disks only) +>0x1A0 ubelong !0 \b, bitmap extension block %#x +# name_len; volume name length; diskname[30]; volume name +>0x1B0 pstring >\0 \b, "%s" +# first directory cache block for FFS; otherwise 0 +>0x1F8 ubelong !0 \b, directory cache block %#x +# block secondary type = ST_ROOT (value 1) +>0x1FC ubelong !1 \b, sec_type %#x # 0 string RDSK Rigid Disk Block >160 string x on %.24s -0 string DOS\0 Amiga DOS disk -0 string DOS\1 Amiga FFS disk -0 string DOS\2 Amiga Inter DOS disk -0 string DOS\3 Amiga Inter FFS disk -0 string DOS\4 Amiga Fastdir DOS disk -0 string DOS\5 Amiga Fastdir FFS disk +# URL: http://fileformats.archiveteam.org/wiki/ADF_(Amiga) +# https://en.wikipedia.org/wiki/Amiga_Fast_File_System +# Reference: http://lclevy.free.fr/adflib/adf_info.html +# Update: Joerg Jenderek +# Note: created by ADFOpus.exe +# and verified by `unadf -l TURBO_SILVER_SV.ADF` +0 string DOS +# skip DOS Client Message Files like IPXODI.MSG DOSRQSTR.MSG +>3 ubyte <8 Amiga +# https://reposcope.com/mimetype/application/x-amiga-disk-format +!:mime application/x-amiga-disk-format +!:ext adf +>>3 ubyte 0 DOS disk +>>3 ubyte 1 FFS disk +>>3 ubyte 2 Inter DOS disk +>>3 ubyte 3 Inter FFS disk +# For Fastdir mode the international mode is also enabled, +>>3 ubyte 4 Fastdir DOS disk +>>3 ubyte 5 Fastdir FFS dis +# called by TrID "Amiga Disk image File (OFS+INTL+DIRC)" +>>3 ubyte 6 Inter Fastdir DOS disk +# called by TrID "Amiga Disk image File (FFS+INTL+DIRC)" +>>3 ubyte 7 Inter Fastdir FFS disk +# but according to Wikipedia variants with long name support +#>>3 ubyte 6 long name DOS disk +#>>3 ubyte 7 long name FFS disk +# DOES NOT only work! Partly for file size ~< FILE_BYTES_MAX=1 MiB defined in ../../src/file.h +#>>-0 offset x \b, %lld bytes +# Correct file size, but next lines are NOT executed +#>>-0 offset 901120 (DD 880 KiB floppy) +# 880 KiB Double Density floppy disk by characteristic hash table size 0x48 and T_HEADER=2 +>>0x6E00C ubelong 0x48 +>>>0x6E000 ubelong 2 (DD 880 KiB) +# 1760 KiB High Density floppy disk (1802240 bytes) by characteristic hash table size 0x48 +>>0xDC00C ubelong 0x48 +>>>0xDC000 ubelong 2 (HD 1760 KiB) +# Chksum; special block checksum like: 0 0x44ccf4c0 0x51f32cac 0xe33d0e7d ... +#>>4 ubelong x \b, CRC %#x +# Rootblock: 0 880 (often for DD and HD) 1146049280 (IMAGINE_1_0_DISK_01.ADF TURBO_SILVER_SV.ADF) +>>8 ubelong >0 \b, probably root block %d +# bootblock code +>>12 quad !0 \b, bootable +# assembler instructions: lea exp(pc),a1; moveq 25h,d0; jsr -552(a6) +>>>12 ubequad =0x43fa003e70254eae AmigaDOS 3.0 +>>>12 default x +>>>>12 ubequad !0x43fa003e70254eae %#llx.. +# 880 KiB Double Density floppy disk (901120 bytes) +>>0x6E00C ubelong 0x48 +>>>0x6E000 ubelong 2 +>>>>0x6E000 use adf-rootblock +# 1760 KiB High Density floppy disk (1802240 bytes) +>>0xDC00C ubelong 0x48 +>>>0xDC000 ubelong 2 +>>>>0xDC000 use adf-rootblock +# 1 MiB hard disc by test for T_HEADER=2 and header_key=0=high_seq +>>0x80000 ubelong 2 +>>>0x80004 quad 0 +>>>>0x80000 use adf-rootblock +# 2 MiB hard disc; only works if in ../../src/file.h FILE_BYTES_MAX is raised to 2 MiB +#>>0x100000 ubelong x 2 MiB TEST +#>>0x100000 ubelong 2 \b, 2 MiB hard disc rootblock +#>>>0x100000 use adf-rootblock 0 string KICK Kickstart disk # From: Alex Beregszaszi <alex@fsn.hu> diff --git a/magic/Magdir/android b/magic/Magdir/android index 1265d95925a7..63296d0ecfc5 100644 --- a/magic/Magdir/android +++ b/magic/Magdir/android @@ -1,6 +1,6 @@ #------------------------------------------------------------ -# $File: android,v 1.16 2019/11/15 21:03:14 christos Exp $ +# $File: android,v 1.19 2021/04/26 15:56:00 christos Exp $ # Various android related magic entries #------------------------------------------------------------ @@ -24,11 +24,11 @@ >>1028 lelong 0 \b (boot) >>1028 lelong 1 \b (recovery) >8 lelong >0 \b, kernel ->>12 lelong >0 \b (0x%x) +>>12 lelong >0 \b (%#x) >16 lelong >0 \b, ramdisk ->>20 lelong >0 \b (0x%x) +>>20 lelong >0 \b (%#x) >24 lelong >0 \b, second stage ->>28 lelong >0 \b (0x%x) +>>28 lelong >0 \b (%#x) >36 lelong >0 \b, page size: %d >38 string >0 \b, name: %s >64 string >0 \b, cmdline (%s) @@ -64,7 +64,7 @@ # look for backup content after line with encryption info #>>19 search/7 \n # data part after header for not encrypted Android Backup -#>>>&0 ubequad x \b, content 0x%16.16llx... +#>>>&0 ubequad x \b, content %#16.16llx... # look for zlib compressed by ./compress after message with 1 space at end #>>>&0 indirect x \b; contains # look for tar archive block by ./archive for package name manifest @@ -155,9 +155,9 @@ # flags >>>0x0C ulelong&0x00000002 2 \b+RW # partition ID: -# 0~IPL,MOVINAND,GANG;1~PIT,GPT;2~HIDDEN;3~SBL,HIDDEN;4~SBL2,HIDDEN;5~BOOT;6~KENREl,RECOVER,misc;7~RECOVER +# 0~IPL,MOVINAND,GANG;1~PIT,GPT;2~HIDDEN;3~SBL,HIDDEN;4~SBL2,HIDDEN;5~BOOT;6~kernel,RECOVER,misc;7~RECOVER # ;11~MODEM;20~efs;21~PARAM;22~FACTORY,SYSTEM;23~DBDATAFS,USERDATA;24~CACHE;80~BOOTLOADER;81~TZSW ->>>0x08 ulelong x (0x%x) +>>>0x08 ulelong x (%#x) # filename >>>0x44 string >\0 "%-.64s" #>>>0x18 ulelong >0 @@ -188,3 +188,22 @@ 0 lelong 0xd0b5b1c4 Android cryptfs footer >4 leshort x \b, version: %d >6 leshort x \b.%d + +# Android Vdex format +# From https://android.googlesource.com/\ +# platform/art/+/master/runtime/vdex_file.h +0 string vdex Android vdex file, +>4 string >000 verifier deps version: %s, +>8 string >000 dex section version: %s, +>12 lelong >0 number of dex files: %d, +>16 lelong >0 verifier deps size: %d + +# Android Vdex format, dexfile is currently being updated +# by android system +# From https://android.googlesource.com/\ +# platform/art/+/master/dex2oat/dex2oat.cc +0 string wdex Android vdex file, being processed by dex2oat, +>4 string >000 verifier deps version: %s, +>8 string >000 dex section version: %s, +>12 lelong >0 number of dex files: %d, +>16 lelong >0 verifier deps size: %d diff --git a/magic/Magdir/animation b/magic/Magdir/animation index 470fdb6f3a6e..d59497d8005a 100644 --- a/magic/Magdir/animation +++ b/magic/Magdir/animation @@ -1,6 +1,6 @@ #------------------------------------------------------------------------------ -# $File: animation,v 1.77 2020/04/26 15:23:43 christos Exp $ +# $File: animation,v 1.87 2021/08/24 09:25:11 christos Exp $ # animation: file(1) magic for animation/movie formats # # animation formats @@ -32,7 +32,10 @@ !:mime application/x-quicktime-player 4 string/W jP JPEG 2000 image !:mime image/jp2 + +#### MP4 #### # https://www.ftyps.com/ with local additions +# https://cconcolato.github.io/mp4ra/filetype.html 4 string ftyp ISO Media # https://aeroquartet.com/wordpress/2016/03/05/3-xavc-s/ >8 string XAVC \b, MPEG v4 system, Sony XAVC Codec @@ -53,11 +56,21 @@ >>11 byte 0x63 \b C.S0050-0-B V1.0 >8 string 3ge \b, MPEG v4 system, 3GPP !:mime video/3gpp ->>11 byte 6 \b, Release 6 MBMS Extended Presentations ->>11 byte 7 \b, Release 7 MBMS Extended Presentations +>>11 byte 6 \b, Release %d MBMS Extended Presentations +>>11 byte 7 \b, Release %d MBMS Extended Presentations +>>11 byte 9 \b, Release %d MBMS Extended Presentations +>8 string 3gf \b, MPEG v4 system, 3GPP +>>11 byte 9 \b, Release %d File-delivery profile >8 string 3gg \b, MPEG v4 system, 3GPP !:mime video/3gpp ->>11 byte 6 \b, Release 6 General Profile +>>11 byte 6 \b, Release %d General Profile +>>11 byte 9 \b, Release %d General Profile +>8 string 3gh \b, MPEG v4 system, 3GPP +!:mime video/3gpp +>>11 byte 9 \b, Release %d Adaptive Streaming Profile +>8 string 3gm \b, MPEG v4 system, 3GPP +!:mime video/3gpp +>>11 byte 9 \b, Release %d Media Segment Profile >8 string 3gp \b, MPEG v4 system, 3GPP !:mime video/3gpp >>11 byte 1 \b, Release %d (non existent) @@ -67,16 +80,49 @@ >>11 byte 5 \b, Release %d >>11 byte 6 \b, Release %d >>11 byte 7 \b, Release %d Streaming Servers +>8 string 3gr \b, MPEG v4 system, 3GPP +!:mime video/3gpp +>>11 byte 6 \b, Release %d Progressive Download Profile +>>11 byte 9 \b, Release %d Progressive Download Profile >8 string 3gs \b, MPEG v4 system, 3GPP !:mime video/3gpp +>>11 byte 6 \b, Release %d Streaming Servers >>11 byte 7 \b, Release %d Streaming Servers +>>11 byte 9 \b, Release %d Streaming Servers +>8 string 3gt \b, MPEG v4 system, 3GPP +!:mime video/3gpp +>>11 byte 8 \b, Release %d Media Stream Recording Profile +>>11 byte 9 \b, Release %d Media Stream Recording Profile +>8 string ARRI \b, MPEG v4 system, ARRI Digital Camera +!:mime video/mp4 >8 string avc1 \b, MPEG v4 system, 3GPP JVT AVC [ISO 14496-12:2005] !:mime video/mp4 +>8 string bbxm \b, Blinkbox Master File: H.264 video/16-bit LE LPCM audio +!:mime video/mp4 >8 string/W qt \b, Apple QuickTime movie !:mime video/quicktime >8 string CAEP \b, Canon Digital Camera >8 string caqv \b, Casio Digital Camera >8 string CDes \b, Convergent Design +>8 string caaa \b, CMAF Media Profile - AAC Adaptive Audio +>8 string caac \b, CMAF Media Profile - AAC Core +>8 string caqv \b, Casio Digital Camera Casio +>8 string ccea \b, CMAF Supplemental Data - CEA-608/708 +>8 string ccff \b, Common container file format +>8 string cfhd \b, CMAF Media Profile - AVC HD +>8 string cfsd \b, CMAF Media Profile - AVC SD +>8 string chd1 \b, CMAF Media Profile - HEVC HDR10 +>8 string chdf \b, CMAF Media Profile - AVC HDHF +>8 string chhd \b, CMAF Media Profile - HEVC HHD8 +>8 string chh1 \b, CMAF Media Profile - HEVC HHD10 +>8 string clg1 \b, CMAF Media Profile - HEVC HLG10 +>8 string cmfc \b, CMAF Track Format +>8 string cmff \b, CMAF Fragment Format +>8 string cmfl \b, CMAF Chunk Format +>8 string cmfs \b, CMAF Segment Format +>8 string cud1 \b, CMAF Media Profile - HEVC UHD10 +>8 string cud8 \b, CMAF Media Profile - HEVC UHD8 +>8 string cwvt \b, CMAF Media Profile - WebVTT >8 string da0a \b, DMB MAF w/ MPEG Layer II aud, MOT slides, DLS, JPG/PNG/MNG >8 string da0b \b, DMB MAF, ext DA0A, with 3GPP timed text, DID, TVA, REL, IPMP >8 string da1a \b, DMB MAF audio with ER-BSAC audio, JPG/PNG/MNG images @@ -87,6 +133,12 @@ >8 string da3b \b, DMB MAF, ext da3a w/ BIFS, 3GPP, DID, TVA, REL, IPMP >8 string dash \b, MPEG v4 system, Dynamic Adaptive Streaming over HTTP !:mime video/mp4 +>8 string dby1 \b, MP4 files with Dolby content +>8 string dsms \b, Media Segment DASH conformant +>8 string dts1 \b, MP4 track file with audio codecs dtsc dtsh or dtse +>8 string dts2 \b, MP4 track file with audio codec dtsx +>8 string dts3 \b, MP4 track file with audio codec dtsy +>8 string dxo$20 \b, DxO ONE camera >8 string dmb1 \b, DMB MAF supporting all the components defined in the spec >8 string dmpf \b, Digital Media Project >8 string drc1 \b, Dirac (wavelet compression), encap in ISO base media (MP4) @@ -99,6 +151,7 @@ >8 string dvr1 \b, DVB (.DVB) over RTP !:mime video/vnd.dvb.file >8 string dvt1 \b, DVB (.DVB) over MPEG-2 Transport Stream +>8 string emsg \b, Event message box present !:mime video/vnd.dvb.file >8 string F4V \b, Video for Adobe Flash Player 9+ (.F4V) !:mime video/mp4 @@ -108,12 +161,22 @@ !:mime audio/mp4 >8 string F4B \b, Audio Book for Adobe Flash Player 9+ (.F4B) !:mime audio/mp4 +>8 string ifrm \b, Apple iFrame Specification, Version 8.1 Jan 2013 +>8 string im1i \b, CMAF Media Profile - IMSC1 Image +>8 string im1t \b, CMAF Media Profile - IMSC1 Text >8 string isc2 \b, ISMACryp 2.0 Encrypted File # ?/enc-isoff-generic ->8 string iso2 \b, MP4 Base Media v2 [ISO 14496-12:2005] +>8 string iso \b, MP4 Base Media !:mime video/mp4 ->8 string isom \b, MP4 Base Media v1 [IS0 14496-12:2003] +>>11 string m v1 [ISO 14496-12:2003] +>>11 string 2 v2 [ISO 14496-12:2005] +>>11 string 4 v4 +>>11 string 5 v5 +>>11 string 6 v6 +>8 string isml \b, MP4 Base Media v2 [ISO 14496-12:2005] !:mime video/mp4 +>8 string J2P0 \b, JPEG2000 Profile 0 +>8 string J2P1 \b, JPEG2000 Profile 1 >8 string/W jp2 \b, JPEG 2000 !:mime image/jp2 >8 string JP2 \b, JPEG 2000 Image (.JP2) [ISO 15444-1 ?] @@ -121,10 +184,13 @@ >8 string JP20 \b, Unknown, from GPAC samples (prob non-existent) >8 string jpm \b, JPEG 2000 Compound Image (.JPM) [ISO 15444-6] !:mime image/jpm +>8 string jpsi \b, The JPSearch data interchange format >8 string jpx \b, JPEG 2000 w/ extensions (.JPX) [ISO 15444-2] !:mime image/jpx >8 string KDDI \b, 3GPP2 EZmovie for KDDI 3G cellphones !:mime video/3gpp2 +>8 string LCAG \b, Leica digital camera +>8 string lmsg \b, Last Media Segment indicator for ISO base media file format. >8 string M4A \b, Apple iTunes ALAC/AAC-LC (.M4A) Audio !:mime audio/x-m4a >8 string M4B \b, Apple iTunes ALAC/AAC-LC (.M4B) Audio Book @@ -140,6 +206,8 @@ >8 string mj2s \b, Motion JPEG 2000 [ISO 15444-3] Simple Profile !:mime video/mj2 >8 string mjp2 \b, Motion JPEG 2000 [ISO 15444-3] General Profile +>8 string MFSM \b, Media File for Samsung video Metadata +>8 string MGSV \b, Sony Home and Mobile Multimedia Platform (HMMP) !:mime video/mj2 >8 string mmp4 \b, MPEG-4/3GPP Mobile Profile (.MP4 / .3GP) (for NTT) !:mime video/mp4 @@ -153,13 +221,16 @@ >8 string mp71 \b, MP4 w/ MPEG-7 Metadata [per ISO 14496-12] >8 string mp7t \b, MPEG v4 system, MPEG v7 XML >8 string mp7b \b, MPEG v4 system, MPEG v7 binary XML +>8 string mpuf \b, Compliance with the MMT Processing Unit format +>8 string msdh \b, Media Segment conforming to ISO base media file format. +>8 string msix \b, Media Segment conforming to ISO base media file format. >8 string mmp4 \b, MPEG v4 system, 3GPP Mobile !:mime video/mp4 >8 string MPPI \b, Photo Player, MAF [ISO/IEC 23000-3] >8 string mqt \b, Sony / Mobile QuickTime (.MQV) US Pat 7,477,830 !:mime video/quicktime >8 string MSNV \b, MPEG-4 (.MP4) for SonyPSP -!:mime video/mp4 +!:mime audio/mp4 >8 string NDAS \b, MP4 v2 [ISO 14496-14] Nero Digital AAC Audio !:mime audio/mp4 >8 string NDSC \b, MPEG-4 (.MP4) Nero Cinema Profile @@ -181,11 +252,14 @@ >8 string NDXP \b, H.264/MPEG-4 AVC (.MP4) Nero Portable Profile !:mime video/mp4 >8 string NDXS \b, H.264/MPEG-4 AVC (.MP4) Nero Standard Profile +>8 string niko \b, Nikon Digital Camera !:mime video/mp4 >8 string odcf \b, OMA DCF DRM Format 2.0 (OMA-TS-DRM-DCF-V2_0-20060303-A) >8 string opf2 \b, OMA PDCF DRM Format 2.1 (OMA-TS-DRM-DCF-V2_1-20070724-C) >8 string opx2 \b, OMA PDCF DRM + XBS ext (OMA-TS-DRM_XBS-V1_0-20070529-C) >8 string pana \b, Panasonic Digital Camera +>8 string piff \b, Protected Interoperable File Format +>8 string pnvi ]b, Panasonic Video Intercom >8 string qt \b, Apple QuickTime (.MOV/QT) !:mime video/quicktime # HEIF image format @@ -217,11 +291,24 @@ !:mime image/heif-sequence >8 string avcs \b, HEIF Image Sequence AVC !:mime image/heif-sequence - +# AVIF image format +# see https://aomediacodec.github.io/av1-avif/ +>8 string avif \b, AVIF Image +!:mime image/avif +>8 string avis \b, AVIF Image Sequence +!:mime image/avif +>8 string risx \b, Representation Index Segment for MPEG-2 TS Segments >8 string ROSS \b, Ross Video >8 string sdv \b, SD Memory Card Video >8 string ssc1 \b, Samsung stereo, single stream (patent pending) >8 string ssc2 \b, Samsung stereo, dual stream (patent pending) +>8 string SEAU \b, Sony Home and Mobile Multimedia Platform (HMMP) +>8 string SEBK \b, Sony Home and Mobile Multimedia Platform (HMMP) +>8 string senv \b, Video contents Sony Entertainment Network +>8 string sims \b, Media Segment for Sub-Indexed Media Segment format +>8 string sisx \b, Single Index Segment forindex MPEG-2 TS +>8 string ssss \b, Subsegment Index Segment used to index MPEG-2 Segments +>8 string uvvu \b, UltraViolet file brand for DECE Common Format # MPEG sequences # Scans for all common MPEG header start codes @@ -234,6 +321,9 @@ 0 belong&0xFFFFFF00 0x00000100 >3 byte 0xBA MPEG sequence !:mime video/mpeg +# http://fileformats.archiveteam.org/wiki/Enhanced_VOB +# https://reposcope.com/mimetype/video/mpeg +!:ext vob/evo/mpg/mpeg >>4 byte &0x40 \b, v2, program multiplex >>4 byte ^0x40 \b, v1, system multiplex >3 byte 0xBB MPEG sequence, v1/2, multiplex (missing pack header) @@ -877,21 +967,6 @@ # ABC (alembic.io 3d models) 0 string 0gawa ABC 3d model -# VRML (Virtual Reality Modelling Language) -0 string/w #VRML\ V1.0\ ascii VRML 1 file -!:mime model/vrml -0 string/w #VRML\ V2.0\ utf8 ISO/IEC 14772 VRML 97 file -!:mime model/vrml - -# X3D (Extensible 3D) [https://www.web3d.org/specifications/x3d-3.0.dtd] -# From Michel Briand <michelbriand@free.fr> -# mimetype from https://www.iana.org/assignments/media-types/model/x3d+xml -# Example https://www.web3d.org/x3d/content/examples/Basic/course/CreateX3DFromStringRandomSpheres.x3d -0 string/w \<?xml\ version= -!:strength + 5 ->20 search/1000/w \<!DOCTYPE\ X3D X3D (Extensible 3D) model xml text -!:mime model/x3d+xml - #--------------------------------------------------------------------------- # HVQM4: compressed movie format designed by Hudson for Nintendo GameCube # From Mark Sheppard <msheppard@climax.co.uk>, 2002-10-03 @@ -905,12 +980,22 @@ >0x42 ubeshort 0 no audio >0x42 ubeshort >0 %dHz audio -# From: "Stefan A. Haubenthal" <polluks@web.de> +# From: Stefan A. Haubenthal <polluks@sdf.lonestar.org> +# Update: Joerg Jenderek +# URL: https://en.wikipedia.org/wiki/VOB 0 string DVDVIDEO-VTS Video title set, +!:mime video/x-ifo +!:ext ifo/bup >0x21 byte x v%x 0 string DVDVIDEO-VMG Video manager, +!:mime video/x-ifo +!:ext ifo/bup >0x21 byte x v%x +# From: Stefan A. Haubenthal <polluks@sdf.lonestar.org> +0 string xMovieSetter MovieSetter movie +0 string xSceneEditor MovieSetter movie + # From: Behan Webster <behanw@websterwood.com> # NuppelVideo used by Mythtv (*.nuv) # Note: there are two identical stanzas here differing only in the @@ -1069,3 +1154,33 @@ # From: David Korth <gerbilsoft@gerbilsoft.com> 0 string CRID >32 string @UTF Scaleform video + +# http://www.jerrysguide.com/tips/demystify-tvs-file-format.html +0 string TVS\015\012 +>&0 string Version\040 TeamViewer Session File +>>&0 string x \b, version %s + +# SER file format - simple uncompressed video format for astronomical use +# Initially developed by Lucam Recorder, +# as of 2021 maintained by Heiko Wilkens, Grischa Hahn +# Typical extensions: .SER +# http://www.grischa-hahn.homepage.t-online.de/astro/ser/SER%20Doc%20V3b.pdf +0 string LUCAM-RECORDER SER video sequence +!:ext ser +>18 lelong 0 \b, bayer: mono +>18 lelong 8 \b, bayer: RGGB +>18 lelong 9 \b, bayer: GRBG +>18 lelong 10 \b, bayer: GBRG +>18 lelong 11 \b, bayer: BGGR +>18 lelong 16 \b, bayer: CYYM +>18 lelong 17 \b, bayer: YCMY +>18 lelong 18 \b, bayer: YMCY +>18 lelong 19 \b, bayer: MYYC +>18 lelong 100 \b, bayer: RGB +>18 lelong 101 \b, bayer: BGR +>22 lelong 0 \b, big-endian +>22 lelong 1 \b, little-endian +>26 lelong x \b, width: %d +>30 lelong x \b, height: %d +>34 lelong x \b, %d bit +>38 lelong x \b, frames: %d diff --git a/magic/Magdir/apple b/magic/Magdir/apple index e0617454cd95..4b249bf8a327 100644 --- a/magic/Magdir/apple +++ b/magic/Magdir/apple @@ -1,6 +1,6 @@ #------------------------------------------------------------------------------ -# $File: apple,v 1.44 2019/10/18 15:21:02 christos Exp $ +# $File: apple,v 1.45 2021/04/26 15:56:00 christos Exp $ # apple: file(1) magic for Apple file formats # 0 search/1/t FiLeStArTfIlEsTaRt binscii (apple ][) text @@ -180,7 +180,7 @@ # minimum version needed to read this files. SFMinVers (0 , 30~3.0 ) >>>183 ubyte 30 3.0 >>>183 ubyte !30 ->>>>183 ubyte !0 0x%x +>>>>183 ubyte !0 %#x # usual tabstop start sequence "=====<" >>>5 string x \b, tabstop ruler "%6.6s" # tabstop ruler @@ -299,7 +299,7 @@ # object is the first object (true for CoreFoundation implementation). # From: David Remahl <dremahl@apple.com> 0 string bplist ->6 byte x \bCoreFoundation binary property list data, version 0x%c +>6 byte x \bCoreFoundation binary property list data, version %#c >>7 byte x \b%c >6 string 00 \b >>8 byte&0xF0 0x00 \b @@ -358,7 +358,7 @@ 0 belong 0xfade0c02 Mac OS X Code Directory >8 belong x version %x ->12 belong >0 flags 0x%x +>12 belong >0 flags %#x >4 belong x - %d bytes 0 belong 0xfade0cc0 Mac OS X Detached Code Signature (non-executable) @@ -438,7 +438,7 @@ # descSize driver size in blocks >>4 ubeshort x \b, size %u # descType driver system type 1 701h F8FFh FFFFh ->>6 ubeshort x \b, type 0x%x +>>6 ubeshort x \b, type %#x # URL: https://en.wikipedia.org/wiki/Apple_Partition_Map # Reference: https://opensource.apple.com/source/IOStorageFamily/IOStorageFamily-116/IOApplePartitionScheme.h diff --git a/magic/Magdir/archive b/magic/Magdir/archive index 99798b030399..d4fd3c920d36 100644 --- a/magic/Magdir/archive +++ b/magic/Magdir/archive @@ -1,5 +1,5 @@ #------------------------------------------------------------------------------ -# $File: archive,v 1.138 2020/06/07 23:29:26 christos Exp $ +# $File: archive,v 1.151 2021/08/16 10:19:56 christos Exp $ # archive: file(1) magic for archive formats (see also "msdos" for self- # extracting compressed archives) # @@ -168,8 +168,11 @@ 0 short 0143561 byte-swapped cpio archive !:mime application/x-cpio # encoding: swapped 0 string 070707 ASCII cpio archive (pre-SVR4 or odc) +!:mime application/x-cpio 0 string 070701 ASCII cpio archive (SVR4 with no CRC) +!:mime application/x-cpio 0 string 070702 ASCII cpio archive (SVR4 with CRC) +!:mime application/x-cpio # # Various archive formats used by various versions of the "ar" @@ -240,7 +243,7 @@ !:ext deb/udeb/ipk # This should not happen >14 default x Unknown Debian package -# NL terminated version; for most Debian cases this is 2.0 or 2.1 for splitted +# NL terminated version; for most Debian cases this is 2.0 or 2.1 for split >68 string >\0 (format %s) #>68 string !2.0\n #>>68 string x (format %.3s) @@ -261,7 +264,7 @@ >>>>>>>&-1 ubyte !0x2f # display 4th character of file name extension like a of lzma >>>>>>>>&-1 ubyte x \b%c -# splitted debian package case +# split debian package case >68 string =2.1\n # dpkg-1.18.25/dpkg-split/info.c # NL terminated ASCII package name like ckermit @@ -447,36 +450,116 @@ # look for first keyword of Panorama database *.pan >12 search/261 DESIGN # skip keyword with low entropy ->12 default x TTComp archive, binary, 4K dictionary -# (version 5.25) labeled the above entry as "TTComp archive data" +>12 default x +# skip DOS 2.0 backup id file, sequence 6 with many nils like BACKUPID_xx6.@@@ handled by ./msdos +>>8 quad !0 +>>>0 use ttcomp +# variant ASCII, 4K dictionary (strength=48=50-2). With strength=49 wrong order! WHY? +0 string \1\6 +# TODO: +# skip VAX-order 68k Blit mpx/mux executable (strength=50) handled by ./blit +!:strength -2 +>0 use ttcomp +0 string \0\5 +# skip some DOS 2.0 backup id file, sequence 5 with many nils like BACKUPID_075.@@@ handled by ./msdos +>8 quad !0 +>>0 use ttcomp +0 string \1\5 +# TODO: +# variant ASCII, 2K dictionary (strength=48=50-2). With strength=49 wrong order! WHY? +# skip ctab data (strength=50) handled by ./ibm6000 +# skip locale data table (strength=50) handled by ./digital +!:strength -2 +>0 use ttcomp +0 string \0\4 +# skip many Maple help database *.hdb with version tag handled by ./maple +>1028 string !version +# skip veclib maple.hdb by looking for Mable keyword +>>4 search/1091 Maple\040 +#>4 search/34090 Maple\040 +>>4 default x +# skip DOS 2.0-3.2 backed up sequence 4 with many nils like LOTUS5.RAR handled by ./msdos +# skip xBASE Compound Index file *.CDX with many nils +>>>0x54 quad !0 +>>>>0 use ttcomp +0 string \1\4 +# TODO: +# skip Commodore PET BASIC 4.0 program *.prg +# variant ASCII, 1K dictionary (strength=48=50-2). With strength=49 wrong order! WHY? +# skip shared library (strength=50) handled by ./ibm6000 +!:strength -2 +>0 use ttcomp +# display information of TTComp archive +0 name ttcomp +# (version 5.25) labeled the entry as "TTComp archive data" +>0 ubyte x TTComp archive data +!:mime application/x-compress-ttcomp +# PBACKSCR.PI1 +!:ext $xe/$ts/pi1/__d +# compression type: 0~binary compression 1~ASCII compression +>0 ubyte 0 \b, binary +>0 ubyte 1 \b, ASCII +# size of the dictionary: 4~1024 bytes 5~2048 bytes 6~4096 bytes +>1 ubyte 4 \b, 1K +>1 ubyte 5 \b, 2K +>1 ubyte 6 \b, 4K +>1 ubyte x dictionary +# https://mark0.net/forum/index.php?topic=848 +# last 3 bytes probably have only 8 possible bit sequences +# xxxxxxxx 0000000x 11111111 ____FFh +# xxxxxxxx 10000000 01111111 __807Fh +# 0xxxxxxx 11000000 00111111 __C03Fh +# 00xxxxxx 11100000 00011111 __E01Fh +# 000xxxxx 11110000 00001111 __F00Fh +# 0000xxxx 11111000 00000111 __F807h +# 00000xxx 11111100 00000011 __FC03h +# 000000xx 11111110 00000001 __FE01h +# but for quickgif.__d 0A7DD4h +#>-3 ubyte x \b, last 3 bytes 0x%2.2x +#>-2 ubeshort x \b%4.4x # From: Joerg Jenderek # URL: https://wiki.68kmla.org/DiskCopy_4.2_format_specification # reference: http://nulib.com/library/FTN.e00005.htm 0x52 ubeshort 0x0100 -# test for disk size equal or above 400k ->0x40 ubelong >409599 Apple DiskCopy 4.2 image +# test for disk image size equal or above 400k +>0x40 ubelong >409599 +# test also for disk image size equal or below 1440k to skip +# windows7en.mbr UNICODE.DAT +>>0x40 ubelong <1474561 +# To skip Flags$StringJoiner.class with size 00106A61h test also for only 4 disk image sizes +# 00064000 for 400k GCR disks +# 000c8000 for 800k GCR disks +# 000b4000 for 720k MFM disks +# 00168000 for 1440k MFM disks +>>>0x40 ubelong&0xffE03fFF 0 +>>>>0 use dc42-floppy +# display information of Apple DiskCopy 4.2 floppy image +0 name dc42-floppy +# image pascal name padded with NULs like Microsoft Mail +>00 pstring/B x Apple DiskCopy 4.2 image %s #!:mime application/octet-stream +!:mime application/x-dc42-floppy-image !:apple dCpydImg !:ext image/dc42 -# image pascal name padded with NULs like Microsoft Mail ->>00 pstring/B x %s # data size in bytes like 409600 ->>0x40 ubelong x \b, %u bytes +>0x40 ubelong x \b, %u bytes +# for debugging purpose size in hexadecimal +#>0x40 ubelong x (%#8.8x) # tag size in bytes ->>0x44 ubelong >0 \b, 0x%x tag size +>0x44 ubelong >0 \b, %#x tag size # data checksum -#>>0x48 ubelong x \b, 0x%x checksum +#>0x48 ubelong x \b, %#x checksum # tag checksum -#>>0x4c ubelong x \b, 0x%x tag checksum +#>0x4c ubelong x \b, %#x tag checksum # disk encoding ->>0x50 ubyte 0 \b, GCR CLV ssdd (400k) ->>0x50 ubyte 1 \b, GCR CLV dsdd (800k) ->>0x50 ubyte 2 \b, MFM CAV dsdd (720k) ->>0x50 ubyte 3 \b, MFM CAV dshd (1440k) ->>0x50 ubyte >3 \b, 0x%x encoding +>0x50 ubyte 0 \b, GCR CLV ssdd (400k) +>0x50 ubyte 1 \b, GCR CLV dsdd (800k) +>0x50 ubyte 2 \b, MFM CAV dsdd (720k) +>0x50 ubyte 3 \b, MFM CAV dshd (1440k) +>0x50 ubyte >3 \b, %#x encoding # format byte ->>0x51 ubyte x \b, 0x%x format -#>>0x54 ubequad x \b, data 0x%16.16llx +>0x51 ubyte x \b, %#x format +#>0x54 ubequad x \b, data %#16.16llx # ESP, could this conflict with Easy Software Products' (e.g.ESP ghostscript) documentation? 0 string ESP ESP archive data # ZPack @@ -509,11 +592,11 @@ # compression method (0-4) >>8 uleshort x \b, %u method # offset of compressed data ->>10 uleshort x \b, 0x%x offset +>>10 uleshort x \b, %#x offset #>>(10.s) uleshort x #>>>&-6 string x \b, TEST extension %-.3s # header flags to mark header extensions ->>12 uleshort >0 \b, 0x%x flags +>>12 uleshort >0 \b, %#x flags # 4 bytes: decompressed length of file >>12 uleshort &0x01 >>>14 ulelong x \b, original size: %u bytes @@ -603,6 +686,21 @@ !:ext ??$ >>8 ulelong >0 \b, original size: %u bytes +# Summary: FTCOMP compressed archive +# From: Joerg Jenderek +# URL: http://fileformats.archiveteam.org/wiki/FTCOMP +# Reference: http://mark0.net/download/triddefs_xml.7z/defs/a/ark-ftcomp.trid.xml +# Note: called by TrID "FTCOMP compressed archive" +# extracted by `unpack seahelp.hl_` +24 string/b FTCOMP FTCOMP compressed archive +#!:mime application/octet-stream +!:mime application/x-compress-ftcomp +!:ext ??_/??@/dll/drv/pk2/ +# probably A596FDFF magic at the beginning +>0 ubelong !0xA596FDFF \b, at beginning %#x +# probably original file name with directory like: \OS2\unpack.exe \SYSTEM\8514.DRV MAHJONGG.EXE +>41 string x "%s" + # MP3 (archiver, not lossy audio compression) 0 string MP3\x1a MP3-Archiver archive data # ZET @@ -816,7 +914,7 @@ !:ext dz >>2 byte x \b, version %i >>3 byte x \b.%i ->>4 ulelong x \b, offset 0x%x +>>4 ulelong x \b, offset %#x >>8 ulelong x \b, %u files # ZZip archiver (.zz) 0 string ZZ\ \0\0 ZZip archive data @@ -923,7 +1021,7 @@ >>>>>>3 regex \^lh[456] LHa (2.x) archive data >>>>>>>2 string -lh5 \b # https://en.wikipedia.org/wiki/BIOS -# Some mainboard BIOS like Award use LHa compression. So archives with unusal extension are found like +# Some mainboard BIOS like Award use LHa compression. So archives with unusual extension are found like # bios.rom , kd7_v14.bin, 1010.004, ... !:ext lha/lzh/rom/bin # missing -lh?- variants (Joe Jared) @@ -950,21 +1048,21 @@ # compressed data size != compressed file size #>7 ulelong x \b, data size %d # attribute: 0x2~?? 0x10~symlink|target 0x20~normal -#>19 ubyte x \b, 19_0x%x +#>19 ubyte x \b, 19_%#x # level identifier 0 1 2 3 #>20 ubyte x \b, level %d # time stamp -#>15 ubelong x DATE 0x%8.8x +#>15 ubelong x DATE %#8.8x # OS ID for level 1 >20 ubyte 1 # 0x20 types find for *.rom files ->>(21.b+24) ubyte <0x21 \b, 0x%x OS +>>(21.b+24) ubyte <0x21 \b, %#x OS # ascii type like M for MSDOS >>(21.b+24) ubyte >0x20 \b, '%c' OS # OS ID for level 2 >20 ubyte 2 -#>>23 ubyte x \b, OS ID 0x%x ->>23 ubyte <0x21 \b, 0x%x OS +#>>23 ubyte x \b, OS ID %#x +>>23 ubyte <0x21 \b, %#x OS >>23 ubyte >0x20 \b, '%c' OS # filename only for level 0 and 1 >20 ubyte <2 @@ -1319,8 +1417,9 @@ >>>>38 search/64 .app/ iOS App !:mime application/x-ios-app ->30 search/100/b application/epub+zip EPUB document -!:mime application/epub+zip +# Dup, see above. +#>30 search/100/b application/epub+zip EPUB document +#!:mime application/epub+zip # Generic zip archives (Greg Roelofs, c/o zip-bugs@wkuvx1.wku.edu) # Next line excludes specialized formats: @@ -1331,6 +1430,8 @@ >>>>4 beshort x \b, at least >>>>4 use zipversion >>>>4 beshort x to extract +>>>>8 beshort x \b, compression method= +>>>>8 use zipcompression >>>>0x161 string WINZIP \b, WinZIP self-extracting # StarView Metafile @@ -1472,8 +1573,17 @@ >>0x2A string >\0 : %s # DR-DOS 7.03 Packed File *.??_ -0 string Packed\ File\ Personal NetWare Packed File ->12 string x \b, was "%.12s" +# Reference: http://www.antonis.de/dos/dos-tuts/mpdostip/html/nwdostip.htm +# Note: unpacked by PNUNPACK.EXE +0 string Packed\ File\ +# by looking for Control-Z skip ASCII text starting with Packed File +>0x18 ubyte 0x1a Personal NetWare Packed File +!:mime application/x-novell-compress +!:ext ??_ +>>12 string x \b, was "%.12s" +# 1 or 2 +#>>0x19 ubyte x \b, at 0x19 %u +>>0x1b ulelong x with %u bytes # EET archive # From: Tilman Sauerbeck <tilman@code-monkey.de> @@ -1548,7 +1658,7 @@ >24 belong 2 MD5 checksum >24 belong 3 SHA-256 checksum >24 belong 4 SHA-512 checksum ->24 belong >4 unknown 0x%x checksum +>24 belong >4 unknown %#x checksum #>24 belong >4 checksum # For no compression jump 0 bytes >24 belong 0 @@ -1556,7 +1666,7 @@ # jump more bytes forward by header size >>>&(4.S) ubyte x # jump more bytes forward by compressed table of contents size -#>>>>&(8.Q) ubequad x \b, heap data 0x%llx +#>>>>&(8.Q) ubequad x \b, heap data %#llx >>>>&(8.Q) ubyte x # look for data by ./compress after message with 1 space at end >>>>>&-3 indirect x \b, contains @@ -1628,7 +1738,7 @@ # *.GHS or *.[0-9] with cns program option >2 ubyte&0x08 0x08 \b, split file # part of split index interesting for *.ghs ->>4 ubyte x id=0x%x +>>4 ubyte x id=%#x # compression tag minus one equals numeric compression command line switch z[1-9] >3 ubyte 0 \b, no compression >3 ubyte 2 \b, fast compression (Z1) @@ -1676,9 +1786,9 @@ !:mime application/x-acronis-tib !:ext tib # 01000000 -#>20 ubelong x \b, at 20 0x%x +#>20 ubelong x \b, at 20 %#x # 20000000 -#>28 ubelong x \b, at 28 0x%x +#>28 ubelong x \b, at 28 %#x # strings like "Generic- SD/MMC 1.00" "Unknown Disk" "Msft Virtual Disk 1.0" # ??? # strings like "\Device\0000011e" "\Device\0000015a" @@ -1719,3 +1829,24 @@ # path[CXBTFFile[MaximumPathLength=256] >>9 string x \b, 1st %s +# ALZIP archive +# by Hyungjun Park <hyungjun.park@worksmobile.com>, Hajin Jang <hajin_jang@worksmobile.com> +# http://kippler.com/win/unalz/ +# https://salsa.debian.org/l10n-korean-team/unalz +0 string ALZ\001 ALZ archive data +!:ext alz + +# https://cf-aldn.altools.co.kr/setup/EGG_Specification.zip +0 string EGGA EGG archive data, +!:ext egg +>5 byte x version %u +>4 byte x \b.%u +>>0x0E ulelong =0x08E28222 +>>0x0E ulelong =0x24F5A262 \b, split +>>0x0E ulelong =0x24E5A060 \b, solid +>>0x0E default x \b, unknown + +# PAQ9A archive +# URL: http://mattmahoney.net/dc/#paq9a +# Note: Line 1186 of paq9a.cpp gives the magic bytes +0 string pQ9\001 PAQ9A archive diff --git a/magic/Magdir/arm b/magic/Magdir/arm new file mode 100644 index 000000000000..b40f213cbfb4 --- /dev/null +++ b/magic/Magdir/arm @@ -0,0 +1,41 @@ +#------------------------------------------------------------------------------ +# $File: arm,v 1.2 2021/07/14 17:40:31 christos Exp $ +# arm: file(1) magic for ARM COFF +# +# https://docs.microsoft.com/en-us/windows/win32/debug/pe-format + +# Aarch64 +0 leshort 0xaa64 +# test for unused flag bits in f_flags +>18 uleshort&0x8E80 0 +# use little endian variant of subroutine to +# display name+variables+flags for common object formatted files +>>0 use display-coff +!:strength -10 + +# ARM +0 leshort 0x01c0 +# test for unused flag bits in f_flags +>18 uleshort&0x8E80 0 +# use little endian variant of subroutine to +# display name+variables+flags for common object formatted files +>>0 use display-coff +!:strength -10 + +# ARM Thumb +0 leshort 0x01c2 +# test for unused flag bits in f_flags +>18 uleshort&0x8E80 0 +# use little endian variant of subroutine to +# display name+variables+flags for common object formatted files +>>0 use display-coff +!:strength -10 + +# ARMv7 Thumb +0 leshort 0x01c4 +# test for unused flag bits in f_flags +>18 uleshort&0x8E80 0 +# use little endian variant of subroutine to +# display name+variables+flags for common object formatted files +>>0 use display-coff +!:strength -10 diff --git a/magic/Magdir/asf b/magic/Magdir/asf index c97f5498f53e..faae6a8aa9cf 100644 --- a/magic/Magdir/asf +++ b/magic/Magdir/asf @@ -1,6 +1,6 @@ #------------------------------------------------------------------------------ -# $File: asf,v 1.1 2019/12/26 02:07:53 christos Exp $ +# $File: asf,v 1.2 2021/04/26 15:56:00 christos Exp $ # asf: file(1) magic for Microsoft Advanced Systems Format (ASF) files # http://www.staroceans.org/e-book/ASF_Specification.pdf @@ -23,7 +23,7 @@ #>>56 lequad x Time Offset %lld #>>64 lelong x Type-Specicic Data Length %d #>>68 lelong x Error Correction Data Length %d -#>>72 leshort x Flags 0x%x +#>>72 leshort x Flags %#x #>>74 lelong x Reserved %x # ASF_Audio_Media >>24 guid F8699E40-5B4D-11CF-A8FD-00805F5C442B \b, Audio Media ( @@ -40,7 +40,7 @@ #>>>85 leshort x \b, Format Data Size %x >>>93 lelong x \b, Image Width %d >>>97 lelong x \b, Image Height %d -#>>>101 leshort x \b, Reserved 0x%x +#>>>101 leshort x \b, Reserved %#x >>>103 leshort x \b, Bits Per Pixel Count %d #>>>105 lelong x \b, Compression ID %d #>>>109 lelong x \b, Image Size %d diff --git a/magic/Magdir/audio b/magic/Magdir/audio index 448f000a38bc..c85c2952336f 100644 --- a/magic/Magdir/audio +++ b/magic/Magdir/audio @@ -1,6 +1,6 @@ #------------------------------------------------------------------------------ -# $File: audio,v 1.118 2019/11/19 05:30:07 christos Exp $ +# $File: audio,v 1.121 2021/04/26 15:56:00 christos Exp $ # audio: file(1) magic for sound formats (see also "iff") # # Jan Nicolai Langfeldt (janl@ifi.uio.no), Dan Quinlan (quinlan@yggdrasil.com), @@ -445,7 +445,7 @@ >0 string >\0 Composer: "%s" 0 string AMF AMF Module >4 string >\0 Title: "%s" -0 string MODINFO1 Open Cubic Player Module Inforation MDZ +0 string MODINFO1 Open Cubic Player Module Information MDZ 0 string Extended\40Instrument: Fast Tracker II Instrument # From: Takeshi Hamasaki <hma@syd.odn.ne.jp> @@ -716,36 +716,36 @@ >>8 ubyte&0x0F >0 \b%d #Get soundchips >>8 ubyte x \b, soundchip(s)= ->>0x0C ulelong >0 SN76489, ->>0x10 ulelong >0 YM2413, ->>0x2C ulelong >0 YM2612, ->>0x30 ulelong >0 YM2151, +>>0x0C ulelong >0 SN76489 (PSG), +>>0x10 ulelong >0 YM2413 (OPLL), +>>0x2C ulelong >0 YM2612 (OPN2), +>>0x30 ulelong >0 YM2151 (OPM), >>0x38 ulelong >0 Sega PCM, >>0x34 ulelong >0xC ->>>0x40 ulelong >0 RF5C68, +>>>0x40 ulelong >0 RF5C68 (PCM), >>0x34 ulelong >0x10 ->>>0x44 ulelong >0 YM2203, +>>>0x44 ulelong >0 YM2203 (OPN), >>0x34 ulelong >0x14 ->>>0x48 ulelong >0 YM2608, +>>>0x48 ulelong >0 YM2608 (OPNA), >>0x34 ulelong >0x18 ->>>0x4C lelong >0 YM2610, ->>>0x4C lelong <0 YM2610B, +>>>0x4C lelong >0 YM2610 (OPNB), +>>>0x4C lelong <0 YM2610B (OPNB+2FM), >>0x34 ulelong >0x1C ->>>0x50 ulelong >0 YM3812, +>>>0x50 ulelong >0 YM3812 (OPL2), >>0x34 ulelong >0x20 ->>>0x54 ulelong >0 YM3526, +>>>0x54 ulelong >0 YM3526 (OPL), >>0x34 ulelong >0x24 ->>>0x58 ulelong >0 Y8950, +>>>0x58 ulelong >0 Y8950 (MSX-Audio), >>0x34 ulelong >0x28 ->>>0x5C ulelong >0 YMF262, +>>>0x5C ulelong >0 YMF262 (OPL3), >>0x34 ulelong >0x2C ->>>0x60 ulelong >0 YMF278B, +>>>0x60 ulelong >0 YMF278B (OPL4), >>0x34 ulelong >0x30 ->>>0x64 ulelong >0 YMF271, +>>>0x64 ulelong >0 YMF271 (OPX), >>0x34 ulelong >0x34 ->>>0x68 ulelong >0 YMZ280B, +>>>0x68 ulelong >0 YMZ280B (PCMD8), >>0x34 ulelong >0x38 ->>>0x6C ulelong >0 RF5C164, +>>>0x6C ulelong >0 RF5C164 (PCM), >>0x34 ulelong >0x3C >>>0x70 ulelong >0 PWM, >>0x34 ulelong >0x40 @@ -767,11 +767,11 @@ >>0x34 ulelong >0x54 >>>0x88 ulelong >0 MultiPCM, >>0x34 ulelong >0x58 ->>>0x8C ulelong >0 uPD7759, +>>>0x8C ulelong >0 uPD7759 (ADPCM Speech), >>0x34 ulelong >0x5C ->>>0x90 ulelong >0 OKIM6258, +>>>0x90 ulelong >0 OKIM6258 (ADPCM Speech), >>0x34 ulelong >0x64 ->>>0x98 ulelong >0 OKIM6295, +>>>0x98 ulelong >0 OKIM6295 (ADPCM), >>0x34 ulelong >0x68 >>>0x9C ulelong >0 K051649, >>0x34 ulelong >0x6C @@ -796,10 +796,10 @@ >>0x34 ulelong >0x94 >>>0xC8 ulelong >0 SAA1099, >>0x34 ulelong >0x98 ->>>0xCC ulelong >0 ES5503, +>>>0xCC ulelong >0 ES5503 (DOC), >>0x34 ulelong >0x9C ->>>0xD0 lelong >0 ES5505, ->>>0xD0 lelong <0 ES5506, +>>>0xD0 lelong >0 ES5505 (OTIS), +>>>0xD0 lelong <0 ES5506 (OTTO), >>0x34 ulelong >0xA4 >>>0xD8 ulelong >0 X1-010, >>0x34 ulelong >0xA8 @@ -847,16 +847,16 @@ >>18 ubyte x \b, language ID %d # structure for phrases/sentences? # number of voice sample in the 1st phrase? -#>>19 uleshort x \b, 0x%x samples -#>>>21 uleshort >0 \b, at 0x%4.4x -#>>>(21.s) ubequad x 0x%llx +#>>19 uleshort x \b, %#x samples +#>>>21 uleshort >0 \b, at %#4.4x +#>>>(21.s) ubequad x %#llx # 2nd phrase? -#>>23 uleshort x \b, 0x%x samples -#>>>25 uleshort >0 \b, at 0x%4.4x -#>>>(25.s) ubequad x 0x%llx +#>>23 uleshort x \b, %#x samples +#>>>25 uleshort >0 \b, at %#4.4x +#>>>(25.s) ubequad x %#llx # pointer to 1st audio WAV sample >>16 uleshort >0 ->>>(16.s) ulelong >0 \b, at 0x%x +>>>(16.s) ulelong >0 \b, at %#x # WAV length # 1 space char after "bytes" to get phrase "bytes RIFF" >>>>(16.s+4) ulelong >0 %u bytes diff --git a/magic/Magdir/avm b/magic/Magdir/avm new file mode 100644 index 000000000000..86e96d110e30 --- /dev/null +++ b/magic/Magdir/avm @@ -0,0 +1,33 @@ + +#------------------------------------------------------------------------------ +# $File: avm,v 1.1 2020/08/28 20:37:58 christos Exp $ +# avm: file(1) magic for avm files; this is not use + +# Summary: FRITZ!Box router configuration backup +# From: Joerg Jenderek +# URL: https://en.wikipedia.org/wiki/Fritz!Box +# Reference: http://www.mengelke.de/Projekte/FritzBoxTools2 +# Note: only tested with models 4040 and 6490 Cable (lgi) +0 string ****\ FRITZ!Box\ FRITZ!Box configuration backup +#!:mime text/plain +!:mime application/x-avm-export +!:ext export +# router model name like "4040" , "6490 Cable (lgi)" followed by " CONFIGURATION EXPORT" +>15 string x of %-.4s +# on 2nd line hashed password +#>41 search/54 Password= \b, password +# on 3rd line firmware version like: 141.06.24 141.06.50 141.07.10 ... 155.06.83 +>41 search/172 FirmwareVersion= \b, firmware version +>>&0 string x %s +# on 5th line oem like: avme lgi +>41 search/285 OEM= \b, oem +>>&0 string x %s +# on 7th line language like: de en +>41 search/305 Language= \b, language +>>&0 string x %s +# on 10th line cfg file name like: /var/tmp.cfg +>41 search/349 tmp.cfg +# on 11th line date inside c-comment like: Thu Jun 4 22:25:19 2015 +>>&4 string x \b, %s +# + diff --git a/magic/Magdir/biosig b/magic/Magdir/biosig index e490f6cc7eff..7d41713f24a5 100644 --- a/magic/Magdir/biosig +++ b/magic/Magdir/biosig @@ -19,7 +19,7 @@ 0 string ATES\x20MEDICA\x20SOFT.\x20EEG\x20for\x20Windows Biosig/ATES MEDICA SOFT. EEG for Windows !:mime biosig/ates # -0 string ATF\x09 Biosig/Axon Text fomrat +0 string ATF\x09 Biosig/Axon Text format !:mime biosig/atf # 0 string ADU1 Biosig/Axona file format diff --git a/magic/Magdir/blit b/magic/Magdir/blit index d5b687fce60b..5ce787070683 100644 --- a/magic/Magdir/blit +++ b/magic/Magdir/blit @@ -1,6 +1,6 @@ #------------------------------------------------------------------------------ -# $File: blit,v 1.8 2009/09/19 16:28:08 christos Exp $ +# $File: blit,v 1.9 2021/07/03 14:01:46 christos Exp $ # blit: file(1) magic for 68K Blit stuff as seen from 680x0 machine # # Note that this 0407 conflicts with several other a.out formats... @@ -14,7 +14,11 @@ 0 short 03401 VAX-order 68K Blit (standalone) executable 0 long 0406 68k Blit mpx/mux executable 0 short 0406 VAX-order2 68k Blit mpx/mux executable +# GRR: line below is too general as it matches also TTComp archive, ASCII, 4K handled by ./archive 0 short 03001 VAX-order 68k Blit mpx/mux executable +# TODO: +# skip TTComp archive, ASCII, 4K by looking for executable keyword like main +#>0 search/5536 main\0 VAX-order 68k Blit mpx/mux executable # Need more values for WE32 DMD executables. # Note that 0520 is the same as COFF #0 short 0520 tty630 layers executable diff --git a/magic/Magdir/bm b/magic/Magdir/bm new file mode 100644 index 000000000000..a9a1d5bb3f42 --- /dev/null +++ b/magic/Magdir/bm @@ -0,0 +1,10 @@ + +#------------------------------------------------------------------------------ +# $File: bm,v 1.2 2021/03/14 16:56:51 christos Exp $ +# bm: file(1) magic for "Birtual Machine", cf. https://github.com/tsoding/bm + +0 string bm\001\244 Birtual Machine +>4 leshort x \b, version %d +>6 lelong x \b, program size %u +>14 lelong x \b, memory size %u +>22 lelong x \b, memory capacity %u diff --git a/magic/Magdir/bsi b/magic/Magdir/bsi index 20a17d9c2d0d..87e0fec76e85 100644 --- a/magic/Magdir/bsi +++ b/magic/Magdir/bsi @@ -2,8 +2,9 @@ # Office for Information Security (Bundesamt fuer Sicherheit in der # Informationstechnik). -# Extension: .xia -0 string XIA1 Chiasmus encrypted data +# https://www.bsi.bund.de/EN/Topics/OtherTopics/Chiasmus/Chiasmus_node.html +0 string XIA1\r Chiasmus Encrypted data +!:ext xia -# Extension: .xis 0 string XIS Chiasmus key +!:ext xis diff --git a/magic/Magdir/bytecode b/magic/Magdir/bytecode new file mode 100644 index 000000000000..501cd9d4415f --- /dev/null +++ b/magic/Magdir/bytecode @@ -0,0 +1,30 @@ + +#------------------------------------------------------------ +# $File: bytecode,v 1.2 2021/06/30 11:57:32 christos Exp $ +# magic for various bytecodes + +# From: Mikhail Gusarov <dottedmag@dottedmag.net> +# NekoVM (https://nekovm.org/) bytecode +0 string NEKO NekoVM bytecode +>4 lelong x (%d global symbols, +>8 lelong x %d global fields, +>12 lelong x %d bytecode ops) +!:mime application/x-nekovm-bytecode + +# https://www.iana.org/assignments/media-types/application/vnd.resilient.logic +# From: Benedikt Muessig <benedikt@resilient-group.de> +0 belong 0x07524c4d Resilient Logic bytecode +!:mime application/vnd.resilient.logic +>4 byte/16 x \b, version %d +>4 byte&0x0f x \b.%d + +# Guile file magic from <dalepsmith@gmail.com> +# https://www.gnu.org/s/guile/ +# https://git.savannah.gnu.org/gitweb/?p=guile.git;f=libguile/_scm.h;hb=HEAD#l250 + +0 string GOOF---- Guile Object +>8 string LE \b, little endian +>8 string BE \b, big endian +>11 string 4 \b, 32bit +>11 string 8 \b, 64bit +>13 regex .\.. \b, bytecode v%s diff --git a/magic/Magdir/c-lang b/magic/Magdir/c-lang index 9356e82ed9e2..6500d37822c1 100644 --- a/magic/Magdir/c-lang +++ b/magic/Magdir/c-lang @@ -1,5 +1,5 @@ #------------------------------------------------------------------------------ -# $File: c-lang,v 1.28 2019/11/15 21:03:14 christos Exp $ +# $File: c-lang,v 1.30 2021/08/16 10:17:05 christos Exp $ # c-lang: file(1) magic for C and related languages programs # # The strength is to beat standard HTML @@ -49,7 +49,10 @@ >0 regex \^union[[:space:]]+ C source text !:mime text/x-c 0 search/8192 main( ->&0 regex \\)[[:space:]]*\\{ C source text +>&0 search/64 String Java source text +!:mime text/x-java +>&0 default x +>>&0 regex \\)[[:space:]]*\\{ C source text !:mime text/x-c # C++ diff --git a/magic/Magdir/c64 b/magic/Magdir/c64 index ff4e93309e6e..52a4e22d99e9 100644 --- a/magic/Magdir/c64 +++ b/magic/Magdir/c64 @@ -1,6 +1,6 @@ #------------------------------------------------------------------------------ -# $File: c64,v 1.7 2017/11/15 12:19:06 christos Exp $ +# $File: c64,v 1.9 2021/04/26 15:56:00 christos Exp $ # c64: file(1) magic for various commodore 64 related files # # From: Dirk Jagdmann <doj@cubic.org> @@ -28,17 +28,17 @@ 0 belong 0xFF424CFF WRAptor packer (c64) 0 string C64S\x20tape\x20file T64 tape Image ->32 leshort x Version:0x%x +>32 leshort x Version:%#x >36 leshort !0 Entries:%i >40 string x Name:%.24s 0 string C64\x20tape\x20image\x20file\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0 T64 tape Image ->32 leshort x Version:0x%x +>32 leshort x Version:%#x >36 leshort !0 Entries:%i >40 string x Name:%.24s 0 string C64S\x20tape\x20image\x20file\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0 T64 tape Image ->32 leshort x Version:0x%x +>32 leshort x Version:%#x >36 leshort !0 Entries:%i >40 string x Name:%.24s @@ -56,3 +56,8 @@ >68 string >\0 \b (C) %s >100 byte >0 \b, %u subsong(s) +# CBM BASIC (cc65 compiled) +0 leshort 0x0801 +>2 leshort 0x080b +>6 string \x9e CBM BASIC +>7 string >\0 \b, SYS %s diff --git a/magic/Magdir/cad b/magic/Magdir/cad index 3d07b422fc18..530f72f31e95 100644 --- a/magic/Magdir/cad +++ b/magic/Magdir/cad @@ -1,6 +1,6 @@ #------------------------------------------------------------------------------ -# $File: cad,v 1.23 2020/05/30 23:58:07 christos Exp $ +# $File: cad,v 1.28 2021/04/26 15:56:00 christos Exp $ # autocad: file(1) magic for cad files # @@ -32,8 +32,8 @@ #>0 ubyte &0x40 \b, reserved # type of element 9~TCB 8~Digitizer setup 5~Group Data Elements #>1 ubyte&0x7F x \b, type %u -# words to follow in element: 17H~CEL libray 2FEh~DGN 9FEh,DFEh~CIT -#>2 uleshort x \b, words 0x%4.4x to follow +# words to follow in element: 17H~CEL library 2FEh~DGN 9FEh,DFEh~CIT +#>2 uleshort x \b, words %#4.4x to follow # test for 3 reserved 0 bytes in CIT or "conversion" in ViewInfo structure (DGN CEL) #>508 ubelong x \b, RESERVED %8.8x >508 ubelong&0xFFffFF00 =0 @@ -58,7 +58,7 @@ >>>>1120 string x \b, units %-.2s # 2 chars for name of master unit like IN in ML SU tn th TH HU mm "\0 "\040 \0\0 >>>>1122 string >\0 %-.2s -#>>>>1120 ubelong x \b, units 0x%8.8x +#>>>>1120 ubelong x \b, units %#8.8x # element range low,high x y z like xlow=0 08010000h 01080000h #>>>>4 ubelong !0 \b, xlow %8.8x #>>>>8 ubelong !0 \b, ylow %8.8x @@ -67,7 +67,7 @@ #>>>>20 ubelong !0 \b, yhigh %8.8x #>>>>24 ubelong !0 \b, zhigh %8.8x # graphic group number; all other elements in that group have same non-0 number -#>>>>28 leshort x \b, grphgrp 0x%4.4x +#>>>>28 leshort x \b, grphgrp %#4.4x # words to optional attribute linkage #>>>>30 ubyte x \b, attindx \%o #>>>>31 ubyte x \b\%o @@ -91,11 +91,11 @@ # >>30 string \372\106 DGNFile # >>30 string \376\103 DGNFile # elements properties indicator -#>>>>32 uleshort !0 \b, properties 0x%4.4x +#>>>>32 uleshort !0 \b, properties %#4.4x # class 0~Primary -#>>>>>32 uleshort&0x000F !0 \b, class 0x%4.4x +#>>>>>32 uleshort&0x000F !0 \b, class %#4.4x # Symbology -#>>>>>34 uleshort x \b, Symbology 0x%4.4x +#>>>>>34 uleshort x \b, Symbology %#4.4x # test for 2nd element type 1~library cell header >>&1 ubyte&0x7F 1 # test for 1st element with level 8 and type 5 for cell library @@ -151,13 +151,13 @@ >194 ubyte &0x04 horizontal >194 ubyte ^0x04 vertical # ScannableFlag; Scanline indexing method used -#>195 ubyte !0 \b, ScannableFlag 0x%x +#>195 ubyte !0 \b, ScannableFlag %#x # RotationAngle; Rotation angle of raster data -#>196 ubequad !0 \b, RotationAngle 0x%llx +#>196 ubequad !0 \b, RotationAngle %#llx # SkewAngle; Skew angle of raster data #>204 ubequad !0 \b, SkewAngle %llx # DataTypeModifier; Additional raster data format info -#>212 uleshort !0 \b, DataTypeModifier 0x%4.4x +#>212 uleshort !0 \b, DataTypeModifier %#4.4x # DesignFile[66]; Name of the design file >214 string >\0 \b, DesignFile %-.66s # DatabaseFile[66]; Name of the database file @@ -167,9 +167,9 @@ # FileDescription[80]; Text description of file and contents >412 string >\0 \b, FileDescription %-.80s # MinValue -#>492 ubequad !0 \b, MinValue 0x%llx +#>492 ubequad !0 \b, MinValue %#llx # MaxValue -#>500 ubequad !0 \b, MaxValue 0x%llx +#>500 ubequad !0 \b, MaxValue %#llx # Reserved[3]; Unused (always 0) #>508 ubelong&0xFFffFF00 x \b, RESERVED %8.8x # GridFileVersion; Grid File Version like 2 3 @@ -213,9 +213,11 @@ # AutoCAD DWG versions R12/R13/R14 (www.autodesk.com) 0 string AC1012 DWG AutoDesk AutoCAD Release 13 !:mime image/vnd.dwg +0 string AC1013 DWG AutoDesk AutoCAD Release 13c3 +!:mime image/vnd.dwg 0 string AC1014 DWG AutoDesk AutoCAD Release 14 !:mime image/vnd.dwg -0 string AC1015 DWG AutoDesk AutoCAD 2000/2002 +0 string AC1015 DWG AutoDesk AutoCAD 2000 !:mime image/vnd.dwg # A new version of AutoCAD DWG @@ -233,7 +235,9 @@ !:mime image/vnd.dwg # From GNU LibreDWG -0 string AC1032 DWG AutoDesk AutoCAD 2018/2019 +0 string AC1032 DWG AutoDesk AutoCAD 2018/2019/2020 +!:mime image/vnd.dwg +0 string AC1035 DWG AutoDesk AutoCAD 2021 !:mime image/vnd.dwg # KOMPAS 2D drawing from ASCON @@ -309,11 +313,15 @@ >>>>&1 search/8192 AC1006 \b, R10 >>>>&1 search/8192 AC1009 \b, R11/R12 >>>>&1 search/8192 AC1012 \b, R13 +>>>>&1 search/8192 AC1013 \b, R13c3 >>>>&1 search/8192 AC1014 \b, R14 >>>>&1 search/8192 AC1015 \b, version 2000 >>>>&1 search/8192 AC1018 \b, version 2004 >>>>&1 search/8192 AC1021 \b, version 2007 >>>>&1 search/8192 AC1024 \b, version 2010 +>>>>&1 search/8192 AC1027 \b, version 2013 +>>>>&1 search/8192 AC1032 \b, version 2018 +>>>>&1 search/8192 AC1035 \b, version 2021 # The Sketchup 3D model format https://www.sketchup.com/ 0 string \xff\xfe\xff\x0e\x53\x00\x6b\x00\x65\x00\x74\x00\x63\x00\x68\x00\x55\x00\x70\x00\x20\x00\x4d\x00\x6f\x00\x64\x00\x65\x00\x6c\x00 SketchUp Model @@ -322,3 +330,74 @@ 4 regex/b P[0-9][0-9]\\.[0-9][0-9][0-9][0-9]\\.[0-9][0-9][0-9][0-9]\\.[0-9] NAXOS CAD System file from version %s !:strength +40 + +# glTF (GL Transmission Format) - by the Khronos Group +# Reference: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#glb-file-format-specification +0 string glTF glTF binary model +>4 ulelong x \b, version %d +>8 ulelong x \b, length %d bytes +!:mime model/gltf-binary +!:ext glb + +# FBX (FilmBoX) - by Kaydara/Autodesk +# Reference: https://code.blender.org/2013/08/fbx-binary-file-format-specification +0 string Kaydara\ FBX\ Binary\ \ \0 Kaydara FBX model, +>&2 ulelong x version %d +!:ext fbx + +# PLY (Polygon File Format/Stanford Triangle Format) - by Greg Turk +# Reference: https://web.archive.org/web/20161204152348/http://www.dcs.ed.ac.uk/teaching/cs4/www/graphics/Web/ply.html +0 string ply\n PLY model, +!:ext ply +>4 string format\ ascii\ ASCII, +>>&0 regex/6 [0-9.]+ version %s +>4 string format\ binary binary, +>>&0 string _little_endian\ little endian, +>>>&0 regex/6 [0-9.]+ version %s +>>&0 string _big_endian\ big endian, +>>>&0 regex/6 [0-9.]+ version %s + +# VRML (Virtual Reality Modeling Language) - by the Web3D Consortium +# From: Michel Briand <michelbriand@free.fr> +# Reference: https://www.web3d.org/standards +0 string/w #VRML\ V1.0\ ascii VRML 1 file +!:mime model/vrml +!:ext wrl +0 string/w #VRML\ V2.0\ utf8 ISO/IEC 14772 VRML 97 file +!:mime model/vrml +!:ext wrl +# X3D, VRML encoded +0 string #X3D X3D (Extensible 3D) model, VRML format +>4 string V +>>5 regex/6 [0-9.]+ \b, version %s +!:mime model/x3d+vrml +!:ext x3dv + +## XML-based 3D CAD Formats +# From: Michel Briand <michelbriand@free.fr>, Oliver Galvin <odg@riseup.net> +0 string/w \<?xml\ version= +!:strength + 5 +# X3D (Extensible 3D) +# Schema: https://www.web3d.org/specifications/x3d-3.2.dtd +# MIME Type: https://www.iana.org/assignments/media-types/model/x3d+xml +# Example: https://www.web3d.org/x3d/content/examples/Basic/course/CreateX3DFromStringRandomSpheres.x3d +>20 search/1000/w \<!DOCTYPE\ X3D X3D (Extensible 3D) model, XML document +!:mime model/x3d+xml +!:ext x3d +# COLLADA (COLLAborative Design Activity) - by the Khronos Group +# Schema: http://www.collada.org/2005/11/COLLADASchema +# Reference: https://www.khronos.org/collada +>20 search/1000/w \<COLLADA COLLADA model, XML document +!:mime model/vnd.collada+xml +!:ext dae +# 3MF (3D Manufacturing Format) - by the 3MF Consortium +# Schema: http://schemas.microsoft.com/3dmanufacturing/core/2015/02 +# Reference: https://3mf.io/specification +>20 search/1000/w xmlns="http://schemas.microsoft.com/3dmanufacturing 3MF (3D Manufacturing Format) model, XML document +!:mime model/3mf +!:ext 3mf +# AMF (Additive Manufacturing File) +# Reference: https://www.astm.org/Standards/ISOASTM52915.htm +>20 search/1000/w \<amf AMF (Additive Manufacturing Format) model, XML document +!:mime application/x-amf +!:ext amf diff --git a/magic/Magdir/cafebabe b/magic/Magdir/cafebabe index 18dd1a27a39f..8cc0902b4cd5 100644 --- a/magic/Magdir/cafebabe +++ b/magic/Magdir/cafebabe @@ -1,6 +1,6 @@ #------------------------------------------------------------------------------ -# $File: cafebabe,v 1.24 2018/10/01 23:33:15 christos Exp $ +# $File: cafebabe,v 1.27 2021/04/26 15:56:00 christos Exp $ # Cafe Babes unite! # # Since Java bytecode and Mach-O universal binaries have the same magic number, @@ -15,12 +15,20 @@ # might add another one or two as time goes by... # ### JAVA START ### +# Reference: http://en.wikipedia.org/wiki/Java_class_file +# Update: Joerg Jenderek 0 belong 0xcafebabe ->4 belong >30 compiled Java class data, +>4 ubelong >30 compiled Java class data, !:mime application/x-java-applet ->>6 beshort x version %d. ->>4 beshort x \b%d +#!:mime application/java-byte-code +!:ext class +>>6 ubeshort x version %d. +>>4 ubeshort x \b%d +# for debugging purpose version as hexadecimal to compare with Mach-O universal binary +#>>4 ubelong x (%#8.8x) # Which is which? +# https://docs.oracle.com/javase/specs/jvms/se6/html/ClassFile.doc.html +#>>4 belong 0x002b (Java 0.?) #>>4 belong 0x032d (Java 1.0) #>>4 belong 0x032d (Java 1.1) >>4 belong 0x002e (Java 1.2) @@ -30,6 +38,16 @@ >>4 belong 0x0032 (Java 1.6) >>4 belong 0x0033 (Java 1.7) >>4 belong 0x0034 (Java 1.8) +>>4 belong 0x0035 (Java SE 9) +>>4 belong 0x0036 (Java SE 10) +>>4 belong 0x0037 (Java SE 11) +>>4 belong 0x0038 (Java SE 12) +>>4 belong 0x0039 (Java SE 13) +>>4 belong 0x003A (Java SE 14) +# pool count unequal zero +#>>8 beshort x \b, pool count %#x +# pool table +#>>10 ubequad x \b, pool %#16.16llx... 0 belong 0xcafed00d JAR compressed with pack200, >5 byte x version %d. @@ -44,29 +62,40 @@ ### JAVA END ### ### MACH-O START ### +# URL: https://en.wikipedia.org/wiki/Mach-O 0 name mach-o \b [ +# for debugging purpose CPU type as hexadecimal +#>0 ubequad x CPU=%16.16llx +# display CPU type as string like: i386 x86_64 ... armv7 armv7k ... >0 use mach-o-cpu \b +# for debugging purpose print offset to 1st mach_header like: +# 1000h 4000h seldom 2d000h 88000h 5b000h 10e000 h +#>8 ubelong x at %#x offset >(8.L) indirect x \b: >0 belong x \b] +# Reference: https://opensource.apple.com/source/cctools/cctools-949.0.1/ +# include/mach-o/fat.h +# include/mach/machine.h 0 belong 0xcafebabe >4 belong 1 Mach-O universal binary with 1 architecture: !:mime application/x-mach-binary >>8 use mach-o \b ->4 belong >1 ->>4 belong <20 Mach-O universal binary with %d architectures: +# nfat_arch; number of CPU architectures; highest is 18 for CPU_TYPE_POWERPC in 2020 +>4 ubelong >1 +>>4 ubelong <20 Mach-O universal binary with %d architectures: !:mime application/x-mach-binary >>>8 use mach-o \b ->>4 belong >1 ->>>28 use mach-o \b ->>4 belong >2 ->>>48 use mach-o \b ->>4 belong >3 ->>>68 use mach-o \b ->>4 belong >4 ->>>88 use mach-o \b ->>4 belong >5 ->>>108 use mach-o \b +>>>4 ubelong >1 +>>>>28 use mach-o \b +>>>4 ubelong >2 +>>>>48 use mach-o \b +>>>4 ubelong >3 +>>>>68 use mach-o \b +>>>4 ubelong >4 +>>>>88 use mach-o \b +>>>4 ubelong >5 +>>>>108 use mach-o \b ### MACH-O END ### diff --git a/magic/Magdir/citrus b/magic/Magdir/citrus index ff2471ea75ac..1801a55fa650 100644 --- a/magic/Magdir/citrus +++ b/magic/Magdir/citrus @@ -1,8 +1,12 @@ #------------------------------------------------------------------------------ -# $File: citrus,v 1.4 2009/09/19 16:28:08 christos Exp $ +# $File: citrus,v 1.5 2021/01/04 19:48:31 christos Exp $ # citrus locale declaration # 0 string RuneCT Citrus locale declaration for LC_CTYPE +0 string CtrsME Citrus locale declaration for LC_MESSAGES +0 string CtrsMO Citrus locale declaration for LC_MONETARY +0 string CtrsNU Citrus locale declaration for LC_NUMERIC +0 string CtrsTI Citrus locale declaration for LC_TIME diff --git a/magic/Magdir/clipper b/magic/Magdir/clipper index 2768b3af501d..484caeb89eac 100644 --- a/magic/Magdir/clipper +++ b/magic/Magdir/clipper @@ -1,6 +1,6 @@ #------------------------------------------------------------------------------ -# $File: clipper,v 1.8 2017/03/17 21:35:28 christos Exp $ +# $File: clipper,v 1.9 2020/12/15 23:57:27 christos Exp $ # clipper: file(1) magic for Intergraph (formerly Fairchild) Clipper. # # XXX - what byte order does the Clipper use? @@ -61,5 +61,5 @@ >54 byte 2 -Cssw >54 byte 3 -Cspw >54 byte 4 -Cscb -4 string pipe CLIPPER instruction trace -4 string prof CLIPPER instruction profile +#4 string pipe CLIPPER instruction trace +#4 string prof CLIPPER instruction profile diff --git a/magic/Magdir/coff b/magic/Magdir/coff index 31b47e7aff42..535187c2ce9e 100644 --- a/magic/Magdir/coff +++ b/magic/Magdir/coff @@ -1,11 +1,11 @@ #------------------------------------------------------------------------------ -# $File: coff,v 1.3 2018/08/01 10:34:03 christos Exp $ +# $File: coff,v 1.6 2021/04/26 15:56:00 christos Exp $ # coff: file(1) magic for Common Object Files not specific to known cpu types or manufactures # # COFF # -# by Joerg Jenderek at Oct 2015 +# by Joerg Jenderek at Oct 2015, Feb 2021 # https://en.wikipedia.org/wiki/COFF # https://de.wikipedia.org/wiki/Common_Object_File_Format # http://www.delorie.com/djgpp/doc/coff/filhdr.html @@ -16,62 +16,78 @@ 0 name display-coff # test for unused flag bits (0x8000,0x0800,0x0400,0x0200,x0080) in f_flags >18 uleshort&0x8E80 0 ->>0 clear x +# skip DOCTOR.DAILY READER.NDA REDBOX.ROOT by looking for positive number of sections +>>2 uleshort >0 +# skip ega80woa.fnt svgafix.fnt HP3FNTS1.DAT HP3FNTS2.DAT INTRO.ACT LEARN.PIF by looking for low number of sections +>>>2 uleshort <4207 +>>>>0 clear x # f_magic - magic number # DJGPP, 80386 COFF executable, MS Windows COFF Intel 80386 object file (./intel) ->>0 uleshort 0x014C Intel 80386 +>>>>0 uleshort 0x014C Intel 80386 # Hitachi SH big-endian COFF (./hitachi-sh) ->>0 uleshort 0x0500 Hitachi SH big-endian +>>>>0 uleshort 0x0500 Hitachi SH big-endian # Hitachi SH little-endian COFF (./hitachi-sh) ->>0 uleshort 0x0550 Hitachi SH little-endian +>>>>0 uleshort 0x0550 Hitachi SH little-endian # executable (RISC System/6000 V3.1) or obj module (./ibm6000) -#>>0 uleshort 0x01DF +#>>>>0 uleshort 0x01DF # MS Windows COFF Intel Itanium, AMD64 # https://msdn.microsoft.com/en-us/library/windows/desktop/ms680313(v=vs.85).aspx ->>0 uleshort 0x0200 Intel ia64 ->>0 uleshort 0x8664 Intel amd64 +>>>>0 uleshort 0x0200 Intel ia64 +>>>>0 uleshort 0x8664 Intel amd64 +# ARM COFF (./arm) +>>>>0 uleshort 0xaa64 Aarch64 +>>>>0 uleshort 0x01c0 ARM +>>>>0 uleshort 0x01c2 ARM Thumb +>>>>0 uleshort 0x01c4 ARMv7 Thumb # TODO for other COFFs -#>>0 uleshort 0xABCD COFF_TEMPLATE ->>0 default x ->>>0 uleshort x type 0x%04x ->>0 uleshort x COFF +#>>>>0 uleshort 0xABCD COFF_TEMPLATE +>>>>0 default x +>>>>>0 uleshort x type %#04x +>>>>0 uleshort x COFF # F_EXEC flag bit ->>18 leshort ^0x0002 object file -#!:mime application/x-coff -#!:ext cof/o/obj/lib ->>18 leshort &0x0002 executable +>>>>18 leshort ^0x0002 object file +!:mime application/x-coff +!:ext o/obj/lib +# no cof sample found +#!:ext cof/o/obj/lib +>>>>18 leshort &0x0002 executable #!:mime application/x-coffexec # F_RELFLG flag bit,static object ->>18 leshort &0x0001 \b, no relocation info +>>>>18 leshort &0x0001 \b, no relocation info # F_LNNO flag bit ->>18 leshort &0x0004 \b, no line number info +>>>>18 leshort &0x0004 \b, no line number info # F_LSYMS flag bit ->>18 leshort &0x0008 \b, stripped ->>18 leshort ^0x0008 \b, not stripped +>>>>18 leshort &0x0008 \b, stripped +>>>>18 leshort ^0x0008 \b, not stripped # flags in other COFF versions #0x0010 F_FDPR_PROF #0x0020 F_FDPR_OPTI #0x0040 F_DSA # F_AR32WR flag bit -#>>>18 leshort &0x0100 \b, 32 bit little endian +#>>>>18 leshort &0x0100 \b, 32 bit little endian #0x1000 F_DYNLOAD #0x2000 F_SHROBJ #0x4000 F_LOADONLY -# f_nscns - number of sections ->>2 uleshort <2 \b, %d section ->>2 uleshort >1 \b, %d sections -# f_timdat - file time & date stamp only for little endian -#>>4 date x \b, %s +# f_nscns - number of sections like: 1 2 3 4 5 7 8 9 11 12 15 16 19 20 21 22 26 30 36 40 42 56 80 89 96 124 +>>>>2 uleshort <2 \b, %u section +>>>>2 uleshort >1 \b, %u sections # f_symptr - symbol table pointer, only for not stripped ->>8 ulelong >0 \b, symbol offset=0x%x +# like: 0 0x7c 0xf4 0x104 0x182 0x1c2 0x1c6 0x468 0x948 0x416e 0x149a6 0x1c9d8 0x23a68 0x35120 0x7afa0 +>>>>8 ulelong >0 \b, symbol offset=%#x # f_nsyms - number of symbols, only for not stripped ->>12 ulelong >0 \b, %d symbols -# f_opthdr - optional header size ->>16 uleshort >0 \b, optional header size %d +# like: 0 2 7 9 10 11 20 35 41 63 71 80 105 146 153 158 170 208 294 572 831 1546 +>>>>12 ulelong >0 \b, %d symbols +# f_opthdr - optional header size. An object file should have a value of 0 +>>>>16 uleshort >0 \b, optional header size %u +# f_timdat - file time & date stamp only for little endian +>>>>4 ledate >0 \b, created %s # at offset 20 can be optional header, extra bytes FILHSZ-20 because # do not rely on sizeof(FILHDR) to give the correct size for header. # or first section header # additional variables for other COFF files +>>>>16 uleshort =0 +# first section name s_name[8] like: .text .data .debug$S .drectve .testseg +>>>>>20 string x \b, 1st section name "%.8s" # >20 beshort 0407 (impure) # >20 beshort 0410 (pure) # >20 beshort 0413 (demand paged) diff --git a/magic/Magdir/commands b/magic/Magdir/commands index 10f8d2b20baa..705a72861ac0 100644 --- a/magic/Magdir/commands +++ b/magic/Magdir/commands @@ -1,112 +1,132 @@ #------------------------------------------------------------------------------ -# $File: commands,v 1.63 2020/06/06 15:36:30 christos Exp $ +# $File: commands,v 1.66 2021/07/03 13:50:29 christos Exp $ # commands: file(1) magic for various shells and interpreters # #0 string/w : shell archive or script for antique kernel text -0 string/wt #!\ /bin/sh POSIX shell script text executable +0 string/fwt #!\ /bin/sh POSIX shell script text executable !:mime text/x-shellscript -0 string/wb #!\ /bin/sh POSIX shell script executable (binary data) +0 string/fwb #!\ /bin/sh POSIX shell script executable (binary data) !:mime text/x-shellscript -0 string/wt #!\ /bin/csh C shell script text executable +0 string/fwt #!\ /bin/csh C shell script text executable !:mime text/x-shellscript # korn shell magic, sent by George Wu, gwu@clyde.att.com -0 string/wt #!\ /bin/ksh Korn shell script text executable +0 string/fwt #!\ /bin/ksh Korn shell script text executable !:mime text/x-shellscript -0 string/wb #!\ /bin/ksh Korn shell script executable (binary data) +0 string/fwb #!\ /bin/ksh Korn shell script executable (binary data) !:mime text/x-shellscript -0 string/wt #!\ /bin/tcsh Tenex C shell script text executable +0 string/fwt #!\ /bin/tcsh Tenex C shell script text executable !:mime text/x-shellscript -0 string/wt #!\ /usr/bin/tcsh Tenex C shell script text executable +0 string/fwt #!\ /usr/bin/tcsh Tenex C shell script text executable !:mime text/x-shellscript -0 string/wt #!\ /usr/local/tcsh Tenex C shell script text executable +0 string/fwt #!\ /usr/local/tcsh Tenex C shell script text executable !:mime text/x-shellscript -0 string/wt #!\ /usr/local/bin/tcsh Tenex C shell script text executable +0 string/fwt #!\ /usr/local/bin/tcsh Tenex C shell script text executable !:mime text/x-shellscript # # zsh/ash/ae/nawk/gawk magic from cameron@cs.unsw.oz.au (Cameron Simpson) -0 string/wt #!\ /bin/zsh Paul Falstad's zsh script text executable +0 string/fwt #!\ /bin/zsh Paul Falstad's zsh script text executable !:mime text/x-shellscript -0 string/wt #!\ /usr/bin/zsh Paul Falstad's zsh script text executable +0 string/fwt #!\ /usr/bin/zsh Paul Falstad's zsh script text executable !:mime text/x-shellscript -0 string/wt #!\ /usr/local/bin/zsh Paul Falstad's zsh script text executable +0 string/fwt #!\ /usr/local/bin/zsh Paul Falstad's zsh script text executable !:mime text/x-shellscript 0 search/1 #!/usr/bin/env\ zsh Paul Falstad's zsh script text executable !:mime text/x-shellscript -0 string/wt #!\ /usr/local/bin/ash Neil Brown's ash script text executable +0 string/fwt #!\ /bin/ash Neil Brown's ash script text executable !:mime text/x-shellscript -0 string/wt #!\ /usr/local/bin/ae Neil Brown's ae script text executable +0 string/fwt #!\ /usr/bin/ash Neil Brown's ash script text executable !:mime text/x-shellscript -0 string/wt #!\ /bin/nawk new awk script text executable +0 string/fwt #!\ /usr/local/bin/ash Neil Brown's ash script text executable +!:mime text/x-shellscript +0 string/fwt #!\ /usr/local/bin/ae Neil Brown's ae script text executable +!:mime text/x-shellscript +0 string/fwt #!\ /bin/nawk new awk script text executable !:mime text/x-nawk -0 string/wt #!\ /usr/bin/nawk new awk script text executable +0 string/fwt #!\ /usr/bin/nawk new awk script text executable !:mime text/x-nawk -0 string/wt #!\ /usr/local/bin/nawk new awk script text executable +0 string/fwt #!\ /usr/local/bin/nawk new awk script text executable !:mime text/x-nawk -0 string/wt #!\ /bin/gawk GNU awk script text executable +0 string/fwt #!\ /bin/gawk GNU awk script text executable !:mime text/x-gawk 0 string/wt #!\ /usr/bin/gawk GNU awk script text executable !:mime text/x-gawk -0 string/wt #!\ /usr/local/bin/gawk GNU awk script text executable +0 string/fwt #!\ /usr/local/bin/gawk GNU awk script text executable !:mime text/x-gawk # -0 string/wt #!\ /bin/awk awk script text executable +0 string/fwt #!\ /bin/awk awk script text executable !:mime text/x-awk -0 string/wt #!\ /usr/bin/awk awk script text executable +0 string/fwt #!\ /usr/bin/awk awk script text executable !:mime text/x-awk 0 regex/4096 =^[\040\t\f\r\n]{0,100}BEGIN[\040\t\f\r\n]{0,100}[{] awk or perl script text # AT&T Bell Labs' Plan 9 shell -0 string/wt #!\ /bin/rc Plan 9 rc shell script text executable +0 string/fwt #!\ /bin/rc Plan 9 rc shell script text executable # bash shell magic, from Peter Tobias (tobias@server.et-inf.fho-emden.de) -0 string/wt #!\ /bin/bash Bourne-Again shell script text executable +0 string/fwt #!\ /bin/bash Bourne-Again shell script text executable !:mime text/x-shellscript -0 string/wb #!\ /bin/bash Bourne-Again shell script executable (binary data) +0 string/fwb #!\ /bin/bash Bourne-Again shell script executable (binary data) !:mime text/x-shellscript -0 string/wt #!\ /usr/bin/bash Bourne-Again shell script text executable +0 string/fwt #!\ /usr/bin/bash Bourne-Again shell script text executable !:mime text/x-shellscript -0 string/wb #!\ /usr/bin/bash Bourne-Again shell script executable (binary data) +0 string/fwb #!\ /usr/bin/bash Bourne-Again shell script executable (binary data) !:mime text/x-shellscript -0 string/wt #!\ /usr/local/bash Bourne-Again shell script text executable +0 string/fwt #!\ /usr/local/bash Bourne-Again shell script text executable !:mime text/x-shellscript -0 string/wb #!\ /usr/local/bash Bourne-Again shell script executable (binary data) +0 string/fwb #!\ /usr/local/bash Bourne-Again shell script executable (binary data) !:mime text/x-shellscript -0 string/wt #!\ /usr/local/bin/bash Bourne-Again shell script text executable +0 string/fwt #!\ /usr/local/bin/bash Bourne-Again shell script text executable !:mime text/x-shellscript -0 string/wb #!\ /usr/local/bin/bash Bourne-Again shell script executable (binary data) +0 string/fwb #!\ /usr/local/bin/bash Bourne-Again shell script executable (binary data) !:mime text/x-shellscript -0 string/wt #!\ /usr/bin/env\ bash Bourne-Again shell script text executable +0 string/fwt #!\ /usr/bin/env\ bash Bourne-Again shell script text executable !:mime text/x-shellscript # Fish shell magic # From: Benjamin Lowry <ben@ben.gmbh> -0 string/wt #!\ /usr/local/bin/fish fish shell script text executable +0 string/fwt #!\ /usr/local/bin/fish fish shell script text executable !:mime text/x-shellscript -0 string/wt #!\ /usr/bin/fish fish shell script text executable +0 string/fwt #!\ /usr/bin/fish fish shell script text executable !:mime text/x-shellscript -0 string/wt #!\ /usr/bin/env\ fish fish shell script text executable +0 string/fwt #!\ /usr/bin/env\ fish fish shell script text executable !:mime text/x-shellscript +0 string/wt #!\ a +>&-1 string x %s script text executable -0 search/1/wt #!\ /usr/bin/tclsh Tcl/Tk script text executable +0 search/1/fwt #!\ /usr/bin/tclsh Tcl/Tk script text executable !:mime text/x-tcl -0 search/1/wt #!\ /usr/bin/texlua LuaTex script text executable +0 search/1/fwt #!\ /usr/bin/texlua LuaTex script text executable !:mime text/x-luatex -0 search/1/wt #!\ /usr/bin/luatex LuaTex script text executable +0 search/1/fwt #!\ /usr/bin/luatex LuaTex script text executable !:mime text/x-luatex -0 search/1/wt #!\ /usr/bin/stap Systemtap script text executable +0 search/1/fwt #!\ /usr/bin/stap Systemtap script text executable !:mime text/x-systemtap +# From: Kylie McClain <kylie@somas.is> +# Type: execline scripts +# URL: https://skarnet.org/software/execline/ +0 string/fwt #!\ /command/execlineb execline script text executable +!:mime text/x-execline +0 string/fwt #!\ /bin/execlineb execline script text executable +!:mime text/x-execline +0 string/fwt #!\ /usr/bin/execlineb execline script text executable +!:mime text/x-execline +0 string/fwt #!\ /usr/bin/env\ execlineb execline script text executable +!:mime text/x-execline +0 string #! +>0 regex \^#!.*/bin/execlineb([[:space:]].*)*$ execline script text executable +!:mime text/x-execline # PHP scripts # Ulf Harnhammar <ulfh@update.uu.se> diff --git a/magic/Magdir/compress b/magic/Magdir/compress index a364a88039e7..8c368db58cd6 100644 --- a/magic/Magdir/compress +++ b/magic/Magdir/compress @@ -1,5 +1,5 @@ #------------------------------------------------------------------------------ -# $File: compress,v 1.79 2020/05/30 23:53:04 christos Exp $ +# $File: compress,v 1.82 2021/06/30 08:11:29 christos Exp $ # compress: file(1) magic for pure-compression formats (no archives) # # compress, gzip, pack, compact, huf, squeeze, crunch, freeze, yabba, etc. @@ -264,14 +264,19 @@ >>5 lequad !0xffffffffffffffff non-streamed, size %lld # http://tukaani.org/xz/xz-file-format.txt -0 ustring \xFD7zXZ\x00 XZ compressed data +0 ustring \xFD7zXZ\x00 XZ compressed data, checksum !:strength * 2 !:mime application/x-xz +>7 byte&0xf 0x0 NONE +>7 byte&0xf 0x1 CRC32 +>7 byte&0xf 0x4 CRC64 +>7 byte&0xf 0xa SHA-256 # https://github.com/ckolivas/lrzip/blob/master/doc/magic.header.txt 0 string LRZI LRZIP compressed data >4 byte x - version %d >5 byte x \b.%d +>22 byte 1 \b, encrypted !:mime application/x-lrzip # https://fastcompression.blogspot.fi/2013/04/lz4-streaming-format-final.html diff --git a/magic/Magdir/console b/magic/Magdir/console index 022054dfea44..d31932d5834c 100644 --- a/magic/Magdir/console +++ b/magic/Magdir/console @@ -1,6 +1,6 @@ #------------------------------------------------------------------------------ -# $File: console,v 1.55 2020/04/19 17:30:55 christos Exp $ +# $File: console,v 1.63 2021/04/26 15:56:00 christos Exp $ # Console game magic # Toby Deshane <hac@shoelace.digivill.net> @@ -125,6 +125,7 @@ >0x14c byte x (Rev.%02u) # Machine type. (SGB, CGB, SGB+CGB) +# Old licensee code 0x33 is required for SGB, but not CGB. >0x14b byte 0x33 >>0x146 byte 0x03 >>>0x143 byte&0x80 0x80 [SGB+CGB] @@ -133,6 +134,8 @@ >>>0x143 byte&0xC0 0x80 [CGB] >>>0x143 byte&0xC0 0xC0 [CGB ONLY] >0x14b byte !0x33 +>>0x143 byte&0xC0 0x80 [CGB] +>>0x143 byte&0xC0 0xC0 [CGB ONLY] # Mapper. >0x147 byte 0x00 [ROM ONLY] @@ -178,7 +181,7 @@ # RAM size. >0x149 byte 1 \b, RAM: 16Kbit >0x149 byte 2 \b, RAM: 64Kbit ->0x149 byte 3 \b, RAM: 128Kbit +>0x149 byte 3 \b, RAM: 256Kbit >0x149 byte 4 \b, RAM: 1Mbit >0x149 byte 5 \b, RAM: 512Kbit @@ -486,17 +489,17 @@ #------------------------------------------------------------------------------ # Sony Playstation executables (Adam Sjoegren <asjo@diku.dk>) : 0 string PS-X\ EXE Sony Playstation executable ->16 lelong x PC=0x%08x, ->20 lelong !0 GP=0x%08x, ->24 lelong !0 .text=[0x%08x, ->>28 lelong x \b0x%x], ->32 lelong !0 .data=[0x%08x, ->>36 lelong x \b0x%x], ->40 lelong !0 .bss=[0x%08x, ->>44 lelong x \b0x%x], ->48 lelong !0 Stack=0x%08x, +>16 lelong x PC=%#08x, +>20 lelong !0 GP=%#08x, +>24 lelong !0 .text=[%#08x, +>>28 lelong x \b%#x], +>32 lelong !0 .data=[%#08x, +>>36 lelong x \b%#x], +>40 lelong !0 .bss=[%#08x, +>>44 lelong x \b%#x], +>48 lelong !0 Stack=%#08x, >48 lelong =0 No Stack!, ->52 lelong !0 StackSize=0x%x, +>52 lelong !0 StackSize=%#x, #>76 string >\0 (%s) # Area: >113 string x (%s) @@ -768,7 +771,7 @@ >>>>0x40 leshort !0 >>>>>0x40 lestring16 x \b, metadata: "%s" >>0x17 byte &0x40 \b, ROM: ->>>(0x18.l-26) lelong x CRC32 0x%08x +>>>(0x18.l-26) lelong x CRC32 %#08x >>>(0x18.l-23) string x "%s" # Type: scummVM savegame files @@ -1003,6 +1006,11 @@ # Reference: https://3dbrew.org/wiki/3DSX_Format 0 string 3DSX Nintendo 3DS Homebrew Application (3DSX) +# Type: Nintendo 3DS Banner Model Data. +# From: David Korth <gerbilsoft@gerbilsoft.com> +# Reference: https://3dbrew.org/wiki/CBMD +0 string CBMD\0\0\0\0 Nintendo 3DS Banner Model Data + #------------------------------------------------------------------------------ # a7800: file(1) magic for the Atari 7800 raw ROM format. # From: David Korth <gerbilsoft@gerbilsoft.com> @@ -1101,3 +1109,31 @@ >0x2C byte >0x20 Nintendo Badge Arcade badge set: >>0x2C string x "%.48s" >>0x24 ulelong x \b, set ID: %u + +#------------------------------------------------------------------------------ +# sufami: file(1) magic for Sufami Turbo ROM images. +# From: David Korth <gerbilsoft@gerbilsoft.com> +# References: +# - https://problemkaputt.de/fullsnes.htm#snescartsufamiturbominicartridgeadaptor +0 string BANDAI\ SFC-ADX +>0x10 string !SFC-ADX\ BACKUP Sufami Turbo ROM image: +>>0x10 string/T x "%.14s" +>>0x30 byte x \b, ID %02X +>>0x31 byte x \b%02X +>>0x32 byte x \b%02X +>>0x33 ubyte >0 \b, series index %u +>>0x34 ubyte 0 [SlowROM] +>>0x34 ubyte 1 [FastROM] +>>0x35 ubyte 1 [SRAM] +>>0x35 ubyte 3 [Special] + +# Type: Nintendo GameCube/Wii disc image (RVZ format) +0 string RVZ\001 Nintendo +>0x48 belong 1 GameCube +!:mime application/x-gamecube-rom +>0x48 belong 2 Wii +!:mime application/x-wii-rom +>0x48 default x GameCube/Wii +>0x48 belong x disc image (RVZ format): +>>0x58 use nintendo-gcn-disc-common + diff --git a/magic/Magdir/coverage b/magic/Magdir/coverage index 69eab704933c..9f2c3dc91be9 100644 --- a/magic/Magdir/coverage +++ b/magic/Magdir/coverage @@ -1,6 +1,6 @@ #------------------------------------------------------------------------------ -# $File: coverage,v 1.2 2019/04/19 00:42:27 christos Exp $ +# $File: coverage,v 1.3 2021/02/23 00:51:10 christos Exp $ # xoverage: file(1) magic for test coverage data # File formats used to store test coverage data @@ -55,7 +55,7 @@ # Coverage reports generated by gcov -# i.e. source code annoted with coverage information +# i.e. source code annotated with coverage information 0 string \x20\x20\x20\x20\x20\x20\x20\x20-:\x20\x20\x20\ 0:Source: >&0 search/128 \x20\x20\x20\x20\x20\x20\x20\x20-:\x20\x20\x20\ 0:Graph: >>&0 search/128 \x20\x20\x20\x20\x20\x20\x20\x20-:\x20\x20\x20\ 0:Data: GCOV coverage report diff --git a/magic/Magdir/crypto b/magic/Magdir/crypto new file mode 100644 index 000000000000..72a90ace2829 --- /dev/null +++ b/magic/Magdir/crypto @@ -0,0 +1,5 @@ + +#------------------------------------------------------------------------------ +# $File: crypto,v 1.2 2021/03/27 20:15:53 christos Exp $ +# crypto: file(1) magic for crypto formats +# diff --git a/magic/Magdir/database b/magic/Magdir/database index a8a788effa8d..7f93f8e2da96 100644 --- a/magic/Magdir/database +++ b/magic/Magdir/database @@ -1,6 +1,6 @@ #------------------------------------------------------------------------------ -# $File: database,v 1.59 2020/03/25 01:49:58 christos Exp $ +# $File: database,v 1.63 2021/10/04 00:44:30 christos Exp $ # database: file(1) magic for various databases # # extracted from header/code files by Graeme Wilford (eep2gw@ee.surrey.ac.uk) @@ -181,7 +181,10 @@ #!:mime application/x-dbase >>>>>>>>>>>>0 use xbase-type # database file ->>>>>>>>>>>>0 ubyte x \b DBF +>>>>>>>>>>>>28 ubyte&0x04 =0 \b DBF +!:ext dbf +>>>>>>>>>>>>28 ubyte&0x04 =4 \b DataBaseContainer +!:ext dbc >>>>>>>>>>>>4 lelong 0 \b, no records >>>>>>>>>>>>4 lelong >0 \b, %d record # plural s appended @@ -193,13 +196,14 @@ >>>>>>>>>>>>1 ubyte x \b, update-date >>>>>>>>>>>>1 use xbase-date # https://msdn.microsoft.com/de-de/library/cc483186(v=vs.71).aspx -#>>>>>>>>>>>>29 ubyte =0 \b, codepage ID=0x%x +#>>>>>>>>>>>>29 ubyte =0 \b, codepage ID=%#x # 2~cp850 , 3~cp1252 , 0x1b~?? ; what code page is 0x1b ? ->>>>>>>>>>>>29 ubyte >0 \b, codepage ID=0x%x +>>>>>>>>>>>>29 ubyte >0 \b, codepage ID=%#x #>>>>>>>>>>>>28 ubyte&0x01 0 \b, no index file +# MDX or CDX index >>>>>>>>>>>>28 ubyte&0x01 1 \b, with index file .MDX >>>>>>>>>>>>28 ubyte&0x02 2 \b, with memo .FPT ->>>>>>>>>>>>28 ubyte&0x04 4 \b, DataBaseContainer +#>>>>>>>>>>>>28 ubyte&0x04 4 \b, DataBaseContainer # 1st record offset + 1 = header size >>>>>>>>>>>>8 uleshort >0 >>>>>>>>>>>>(8.s+1) ubyte >0 @@ -241,72 +245,111 @@ # 1 < version >0 ubyte >1 >>0 ubyte 0x02 FoxBase +!:mime application/x-dbf +# like: ACCESS.DBF USER.DBF dbase3date.dbf mitarbei.dbf produkte.dbf umlaut-test-v2.dbf # FoxBase+/dBaseIII+, no memo >>0 ubyte 0x03 FoxBase+/dBase III !:mime application/x-dbf +# like: 92DATA.DBF MSCATLOG.DBF SYLLABI2.DBF SYLLABUS.DBF T4.DBF Teleadr.dbf us_city.dbf # dBASE IV no memo file >>0 ubyte 0x04 dBase IV !:mime application/x-dbf +# like: Quattro-test11.dbf umlaut-test-v4.dbf # dBASE V no memo file >>0 ubyte 0x05 dBase V !:mime application/x-dbf +# like: dbase4double.dbf Quattro-test2.dbf umlaut-test7.dbf +!:ext dbf +# probably Apollo Database Server 9.7? xBase (0x6) +>>0 ubyte 0x06 Apollo +!:mime application/x-dbf +# like: ALIAS.DBF CRYPT.DBF PROCS.DBF USERS.DBF +# https://docs.microsoft.com/en-us/previous-versions/visualstudio/foxpro/st4a0s68(v=vs.80) +>>0 ubyte 0x2F FoxBase+/Dbase III plus, no memo +!:mime application/x-dbf +# no example >>0 ubyte 0x30 Visual FoxPro !:mime application/x-dbf +# like: 26FRX.DBF 30DBC.DBF 30DBCPRO.DBF BEHINDSC.DBF USER_LEV.DBF +# Microsoft Visual FoxPro Database Container File like: FOXPRO-DB-TEST.DBC TESTDATA.DBC TASTRADE.DBC >>0 ubyte 0x31 Visual FoxPro, autoincrement !:mime application/x-dbf +# like: AI_Table.DBF dbase_31.dbf w_cityFoxpro.dbf # Visual FoxPro, with field type Varchar or Varbinary >>0 ubyte 0x32 Visual FoxPro, with field type Varchar !:mime application/x-dbf +# like: dbase_32.dbf # dBASE IV SQL, no memo;dbv memo var size (Flagship) >>0 ubyte 0x43 dBase IV, with SQL table !:mime application/x-dbf -# https://msdn.microsoft.com/en-US/library/st4a0s68(v=vs.80).aspx -#>>0 ubyte 0x62 dBase IV, with SQL table +# like: ASSEMBLY.DBF INVENTRY.DBF STAFF.DBF +# https://docs.microsoft.com/en-us/previous-versions/visualstudio/foxpro/st4a0s68(v=vs.80) +>>0 ubyte 0x62 dBase IV, with SQL table #!:mime application/x-dbf +# no example # dBASE IV, with memo!! >>0 ubyte 0x7b dBase IV, with memo !:mime application/x-dbf -# https://msdn.microsoft.com/en-US/library/st4a0s68(v=vs.80).aspx -#>>0 ubyte 0x82 dBase IV, with SQL system +# like: test3memo.DBF dbase5.DBF +# https://docs.microsoft.com/en-us/previous-versions/visualstudio/foxpro/st4a0s68(v=vs.80) +>>0 ubyte 0x82 dBase IV, with SQL system #!:mime application/x-dbf +# no example # FoxBase+/dBaseIII+ with memo .DBT! >>0 ubyte 0x83 FoxBase+/dBase III, with memo .DBT !:mime application/x-dbf +# like: T2.DBF t3.DBF biblio.dbf dbase_83.dbf dbase3dbt0_4.dbf fsadress.dbf stop.dbf # VISUAL OBJECTS (first 1.0 versions) for the Dbase III files (NTX clipper driver); memo file >>0 ubyte 0x87 VISUAL OBJECTS, with memo file !:mime application/x-dbf -# https://msdn.microsoft.com/en-US/library/st4a0s68(v=vs.80).aspx -#>>0 ubyte 0x8A FoxBase+/dBase III, with memo .DBT +# like: ACCESS.DBF dbase3date.dbf dbase3float.dbf holdings.dbf mitarbei.dbf +# https://docs.microsoft.com/en-us/previous-versions/visualstudio/foxpro/st4a0s68(v=vs.80) +>>0 ubyte 0x8A FoxBase+/dBase III, with memo .DBT #!:mime application/x-dbf +# no example # dBASE IV with memo! >>0 ubyte 0x8B dBase IV, with memo .DBT !:mime application/x-dbf +# like: animals.dbf archive.dbf callin.dbf dbase_8b.dbf phnebook.dbf t6.dbf # dBase IV with SQL Table,no memo? >>0 ubyte 0x8E dBase IV, with SQL table !:mime application/x-dbf +# like: dbase5.DBF test3memo.DBF test-memo.DBF # .dbv and .dbt memo (Flagship)? >>0 ubyte 0xB3 Flagship -# https://msdn.microsoft.com/en-US/library/st4a0s68(v=vs.80).aspx -#>>0 ubyte 0xCA dBase IV with memo .DBT +!:mime application/x-dbf +# no example +# https://docs.microsoft.com/en-us/previous-versions/visualstudio/foxpro/st4a0s68(v=vs.80) +>>0 ubyte 0xCA dBase IV with memo .DBT #!:mime application/x-dbf +# no example # dBASE IV with SQL table, with memo .DBT >>0 ubyte 0xCB dBase IV with SQL table, with memo .DBT !:mime application/x-dbf +# like: dbase5.DBF test3memo.DBF test-memo.DBF # HiPer-Six format;Clipper SIX, with SMT memo file >>0 ubyte 0xE5 Clipper SIX with memo !:mime application/x-dbf -# https://msdn.microsoft.com/en-US/library/st4a0s68(v=vs.80).aspx -#>>0 ubyte 0xF4 dBase IV, with SQL table, with memo +# like: dbase5.DBF test3memo.DBF test-memo.DBF testClipper.dbf DATA.DBF +# https://docs.microsoft.com/en-us/previous-versions/visualstudio/foxpro/st4a0s68(v=vs.80) +>>0 ubyte 0xF4 dBase IV, with SQL table, with memo #!:mime application/x-dbf +# no example >>0 ubyte 0xF5 FoxPro with memo !:mime application/x-dbf -# https://msdn.microsoft.com/en-US/library/st4a0s68(v=vs.80).aspx +# like: CUSTOMER.DBF FOXUSER1.DBF Invoice.DBF NG.DBF OBJSAMP.DBF dbase_f5.dbf kunde.dbf +# probably Apollo Database Server 9.7 with SQL and memo mask? xBase (0xF6) +>>0 ubyte 0xF6 Apollo, with SQL table with memo +!:mime application/x-dbf +# like: SCRIPTS.DBF +# https://docs.microsoft.com/en-us/previous-versions/visualstudio/foxpro/st4a0s68(v=vs.80) #>>0 ubyte 0xFA FoxPro 2.x, with memo #!:mime application/x-dbf +# no example # unknown version (should not happen) >>0 default x xBase !:mime application/x-dbf ->>>0 ubyte x (0x%x) +>>>0 ubyte x (%#x) # flags in version byte # DBT flag (with dBASE III memo .DBT)!! # >>0 ubyte&0x80 >0 DBT_FLAG=%x @@ -393,7 +436,7 @@ # Number of next available block for appending data #>0 lelong =0 \b, next free block index %u >0 lelong !0 \b, next free block index %u -# no positiv block length +# no positive block length #>20 uleshort =0 \b, block length %u >20 uleshort !0 \b, block length %u # dBase III memo field terminated by \032\032 @@ -404,7 +447,7 @@ >0 lelong x dBase IV DBT !:mime application/x-dbt !:ext dbt -# 8 character shorted main name of coresponding dBASE IV DBF file +# 8 character shorted main name of corresponding dBASE IV DBF file >8 ubelong >0x20000000 # skip unusual like for angest.dbt >>20 uleshort >0 @@ -455,10 +498,131 @@ >>516 belong >0 \b, field length %d >>>520 string >\0 \b, 1st item "%s" +# Summary: DBASE Compound Index file *.CDX and FoxPro index *.IDX +# From: Joerg Jenderek +# URL: https://www.clicketyclick.dk/databases/xbase/format/cdx.html +# https://www.clicketyclick.dk/databases/xbase/format/idx.html +# https://www.clicketyclick.dk/databases/xbase/format/idx_comp.html +# Reference: https://mark0.net/download/triddefs_xml.7z/defs/s/sybase-ianywhere-cdx.trid.xml +# https://mark0.net/download/triddefs_xml.7z/defs/c/cdx-vfp7.trid.xml +# like: kunde.cdx +0 ulelong 0x1C00 +>0 use xbase-index +# like: SYLLABI2.CDX SYLLABUS.CDX +0 ulelong 0x0800 +>0 use xbase-index +# often in xBase index pointer to root node 400h +0 ulelong 0x0400 +# skip most Maple help database *.hdb with version tag handled by ./maple +>1028 string !version +# skip Maple help database hsum.hdb checking for valid reserved area +>>492 quad =0 +# skip remaining Maple help database *.hdb by checking key length +#>>>12 uleshort !0x000F KEY_LENGTHVALID +>>>0 use xbase-index +# display information about dBase/FoxPro index +0 name xbase-index +>0 ulelong x xBase +!:mime application/x-dbase-index +>14 ubyte &0x40 compound index +# DCX for FoxPro database index like: TESTDATA.DCX +!:ext cdx/dcx +>14 ubyte ^0x40 index +# only 1 example like: TEST.IDX +!:ext idx +# pointer to root node like: 1C00h 800h often 400h +>0 ulelong !0x400 \b, root pointer %#x +# Pointer to free node list: often 0 but -1 if not present +>4 ulelong !0 \b, free node pointer %#x +# MAYBE number of pages in file (Foxbase, FoxPro 1.x) or +# http://www.foxpert.com/foxpro/knowlbits/files/knowlbits_200708_1.HTM +# Whenever Visual FoxPro updates the index file it increments this reserved field +# Reserved for internal use like: 02000000h 03000000h 460c0000h 780f0000h 89000000h 9fdc0100h often 0 +>8 ulelong !0 \b, reserved counter %#x +# length of key like: mostly 000Ah 0028h (TEST.IDX) +>12 uleshort !0x000A \b, key length %#x +# index options like: 24h E0h E8h +# 1~a unique index 8~index has FOR clause 32~compact index format 64~compound index header +# 16~Bit vector (SoftC) 128~Structure index (FoxPro) +>14 ubyte x \b, index options (%#x +>14 ubyte &0x01 \b, unique +>14 ubyte &0x08 \b, has FOR clause +>14 ubyte &0x10 \b, bit vector (SoftC) +>14 ubyte &0x20 \b, compact format +#>14 ubyte &0x40 \b, compound header +>14 ubyte &0x80 \b, structure +>14 ubyte x \b) +# WHAT EXACTLY IS THAT? index signature like: 0 (sybase-ianywhere-cdx.trid.xml) 1 (cdx-vfp7.trid.xml) +>15 ubyte !0 \b, index signature %u +# reserved area (0-bytes) til about 500, but not for uncompressed Index files *.idx +>16 quad !0 \b, at 16 reserved %#llx +>492 quad !0 \b, at 492 reserved %#llx +# for IDX variant +#>14 ubyte ^0x40 IDX +# for CDX variant +>14 ubyte &0x40 +# Ascending or descending: 0~ascending 1~descending +>>502 uleshort x \b, sort order %u +# Total expression length (FoxPro 2) like: 0 1 +>>504 uleshort !0 \b, expression length %u +# FOR expression pool length like: 1 +>>506 uleshort !1 \b, FOR expression pool length %#x +# reserved for internal use like: 0 +>>508 uleshort !0 \b, at 0x508 reserved %#x +# Key expression pool length like: 1 +>>510 uleshort !1 \b, key expression pool length %#x +# 512 - 1023 Key & FOR expression pool (uncompiled) +>>512 quad !0 \b, key expression pool %#llx +#>>520 quad !0 \b, key expression pool %#llx + +# Summary: dBASE IV Printer Form *.PRF +# From: Joerg Jenderek +# URL: https://en.wikipedia.org/wiki/.dbf#Other_file_types_found_in_dBASE +# Reference: https://mark0.net/download/triddefs_xml.7z/defs/p/prf-dbase.trid.xml +0 ubeshort 0x0400 +# skip some Xbase Index files *.ndx and Infocom (Z-machine 4) *.z4 handled by ./adventure +# by looking for valid printer driver name extension +>0x58 search/8 .PR2 +>>0 use xbase-prf +# display information of dbase print form like printer driver *.PR2 +0 name xbase-prf dBase Printer Form +!:mime application/x-dbase-prf +!:ext prf +# MAYBE version? like: 4~DBASE IV +#>0 ubyte x \b, version %u +# MAYBE flag like: 1~with output file name 0~not +#>2 ubyte !0 \b, flag %u +# optional printer text output file name like E:\DBASE\IV\T6.txt +>3 string >\0 \b, output file %s +# probably padding with nils til 0x53 +#>0x48 uquad !0 \b, at 0x48 padding %#llx +# dBASE IV printer driver name like: Generic.PR2 ASCII.PR2 +>0x56 string >\0 \b, using printer driver %s +# 2 is probably last character of previous dBASE printer driver name +#>0x60 ubyte !0x32 \b, at 0x60 %#x +# probably padding with nils til 0xa8 +#>0x61 uquad !0 \b, at 0x61 padding %#llx +# unknown 0x03020300 0x03020100 at 0xa8 +>0xa8 ubelong x \b, at 0xa8 unknown %#8.8x +# probably padding with nils til 0x2aa +#>0x2a0 uquad !0 \b, at 0x2a0 padding %#llx +# unknown 0x100ff7f01000001 at 0x2AB +>0x2ab ubequad !0x100ff7f01000001 \b, at 0x2ab unknown %#llx +# unknown 0x0042 at 0x2b3 +>0x2b3 ubeshort !0x0042 \b, at 0x2b3 unknown %#4.4x +# unknown last 4 bytes at 0x2b6 like: 0 0x23 +>0x2b6 ubelong !0 \b, at 0x2b6 unknown %#8.8x + # TODO: # DBASE index file *.NDX -# DBASE Compound Index file *.CDX -# dBASE IV Printer Driver *.PRF +# dBASE compiled Format *.FMO +# FoxPro Database memo file *.DCT +# FoxPro Forms Memo *.SCT +# FoxPro Generated Menu Program *.MPR +# FoxPro Report *.FRX +# FoxPro Report Memo *.FRT +# Foxpro Generated Screen Program *.SPR +# Foxpro memo *.PJT ## End of XBase database stuff # MS Access database @@ -485,9 +649,9 @@ >>12 ulelong 1 STreaMing !:ext stm # format_version 620h ->>8 uleshort x \b, version 0x%x ->>10 uleshort >0 revision 0x%4.4x ->>0 ubelong x \b, checksum 0x%8.8x +>>8 uleshort x \b, version %#x +>>10 uleshort >0 revision %#4.4x +>>0 ubelong x \b, checksum %#8.8x # Page size 4096 8192 32768 >>236 ulequad x \b, page size %lld # database_state diff --git a/magic/Magdir/der b/magic/Magdir/der index 82cf70345bcb..d8a21cd57ef7 100644 --- a/magic/Magdir/der +++ b/magic/Magdir/der @@ -1,5 +1,5 @@ #------------------------------------------------------------------------------ -# $File: der,v 1.3 2020/02/16 20:45:21 christos Exp $ +# $File: der,v 1.4 2021/03/14 17:12:04 christos Exp $ # der: file(1) magic for DER encoded files # @@ -117,8 +117,9 @@ 0 der seq >&0 der seq ->>&0 der eoc Certificate ->>>&0 der int1=02 \b, Version=3 +>>&0 der eoc +>>>&0 der int1=02 Certificate, Version=3 +>>>&0 der int1=x Certificate, Version=%s >>&0 der int9=x \b, Serial=%s >>&0 der seq >>>&0 der obj_id9=2a864886f70d01010b diff --git a/magic/Magdir/diff b/magic/Magdir/diff index cd530d345e32..a6124e3f703b 100644 --- a/magic/Magdir/diff +++ b/magic/Magdir/diff @@ -1,11 +1,12 @@ #------------------------------------------------------------------------------ -# $File: diff,v 1.16 2017/03/17 22:20:22 christos Exp $ +# $File: diff,v 1.17 2020/08/22 18:16:58 christos Exp $ # diff: file(1) magic for diff(1) output # 0 search/1 diff\040 diff output text !:mime text/x-diff -0 search/1 ***\040 diff output text +0 search/1 ***\040 +>&0 search/1024 \n---\040 context diff output text !:mime text/x-diff 0 search/1 Only\040in\040 diff output text !:mime text/x-diff @@ -16,15 +17,15 @@ !:mime text/x-diff # bsdiff: file(1) magic for bsdiff(1) output -0 string/b BSDIFF40 bsdiff(1) patch file +0 string/b BSDIFF40 bsdiff(1) patch file # unified diff 0 search/4096 ---\040 ->&0 search/1024 \n ->>&0 search/1 +++\040 ->>>&0 search/1024 \n ->>>>&0 search/1 @@ unified diff output text +>&0 search/1024 \n +>>&0 search/1 +++\040 +>>>&0 search/1024 \n +>>>>&0 search/1 @@ unified diff output text !:mime text/x-diff !:strength + 90 diff --git a/magic/Magdir/digital b/magic/Magdir/digital index f66e0bc55917..b2753b989859 100644 --- a/magic/Magdir/digital +++ b/magic/Magdir/digital @@ -1,6 +1,6 @@ #------------------------------------------------------------------------------ -# $File: digital,v 1.11 2013/01/11 16:45:23 christos Exp $ +# $File: digital,v 1.12 2021/07/03 14:01:46 christos Exp $ # Digital UNIX - Info # 0 string =!<arch>\n________64E Alpha archive @@ -53,6 +53,7 @@ # # Locale data tables (MIPS and Alpha). # +# GRR: line below is too general as it matches also TTComp archive, ASCII, 2K handled by ./archive 0 short 0x0501 locale data table >6 short 0x24 for MIPS >6 short 0x40 for Alpha diff --git a/magic/Magdir/editors b/magic/Magdir/editors index 78f3a84056e6..48eaa116e3b3 100644 --- a/magic/Magdir/editors +++ b/magic/Magdir/editors @@ -1,6 +1,6 @@ #------------------------------------------------------------------------------ -# $File: editors,v 1.11 2017/03/17 21:35:28 christos Exp $ +# $File: editors,v 1.12 2020/10/11 20:28:07 christos Exp $ # T602 editor documents # by David Necas <yeti@physics.muni.cz> 0 string @CT\ T602 document data, @@ -11,7 +11,11 @@ # Vi IMproved Encrypted file # by David Necas <yeti@physics.muni.cz> +# updated by Osman Surkatty 0 string VimCrypt~ Vim encrypted file data +>9 string 01! with zip cryptmethod +>9 string 02! with blowfish cryptmethod +>9 string 03! with blowfish2 cryptmethod 0 name vimnanoswap >67 byte 0 diff --git a/magic/Magdir/elf b/magic/Magdir/elf index f5e1af9a25bc..93abdc380db9 100644 --- a/magic/Magdir/elf +++ b/magic/Magdir/elf @@ -1,6 +1,6 @@ #------------------------------------------------------------------------------ -# $File: elf,v 1.80 2020/02/12 22:17:33 christos Exp $ +# $File: elf,v 1.87 2021/05/25 15:19:51 christos Exp $ # elf: file(1) magic for ELF executables # # We have to check the byte order flag to see what byte order all the @@ -43,6 +43,14 @@ >2 leshort 0x0214 2.0 >0 leshort &0x0008 (LP64) +0 name elf-riscv +>0 lelong&0x00000001 0x00000001 RVC, +>0 lelong&0x00000008 0x00000008 RVE, +>0 lelong&0x00000006 0x00000000 soft-float ABI, +>0 lelong&0x00000006 0x00000002 single-float ABI, +>0 lelong&0x00000006 0x00000004 double-float ABI, +>0 lelong&0x00000006 0x00000006 quad-float ABI, + 0 name elf-le >16 leshort 0 no file type, !:mime application/octet-stream @@ -62,7 +70,12 @@ # Core file detection is not reliable. #>>>(0x38+0xcc) string >\0 of '%s' #>>>(0x38+0x10) lelong >0 (signal %d), ->16 leshort &0xff00 processor-specific, +>16 leshort &0xff00 +>>18 leshort !8 processor-specific, +>>18 leshort 8 +>>>16 leshort 0xFF80 PlayStation 2 IOP module, +!:mime application/x-sharedlib +>>>16 leshort !0xFF80 processor-specific, >18 clear x >18 leshort 0 no machine, >18 leshort 1 AT&T WE32100, @@ -111,6 +124,9 @@ >18 leshort 19 Intel 80960, >18 leshort 20 PowerPC or cisco 4500, >18 leshort 21 64-bit PowerPC or cisco 7500, +>>48 lelong 0 Unspecified or Power ELF V1 ABI, +>>48 lelong 1 Power ELF V1 ABI, +>>48 lelong 2 OpenPOWER ELF V2 ABI, >18 leshort 22 IBM S/390, >18 leshort 23 Cell SPU, >18 leshort 24 cisco SVIP, @@ -179,7 +195,7 @@ >18 leshort 90 Matsushita MN10200, >18 leshort 91 picoJava, >18 leshort 92 OpenRISC, ->18 leshort 93 ARC Cores Tangent-A5, +>18 leshort 93 Synopsys ARCompact ARC700 cores, >18 leshort 94 Tensilica Xtensa, >18 leshort 95 Alphamosaic VideoCore, >18 leshort 96 Thompson Multimedia, @@ -218,6 +234,7 @@ >18 leshort 140 TI TMS320C6000 DSP family, >18 leshort 141 TI TMS320C2000 DSP family, >18 leshort 142 TI TMS320C55x DSP family, +>18 leshort 144 TI Programmable Realtime Unit >18 leshort 160 STMicroelectronics 64bit VLIW DSP, >18 leshort 161 Cypress M8C, >18 leshort 162 Renesas R32C series, @@ -248,6 +265,7 @@ >18 leshort 189 Xilinx MicroBlaze 32-bit RISC, >18 leshort 190 NVIDIA CUDA architecture, >18 leshort 191 Tilera TILE-Gx, +>18 leshort 195 Synopsys ARCv2/HS3x/HS4x cores, >18 leshort 197 Renesas RL78 family, >18 leshort 199 Renesas 78K0R, >18 leshort 200 Freescale 56800EX, @@ -265,8 +283,28 @@ >18 leshort 217 iCelero CoolEngine, >18 leshort 218 Nanoradio Optimized RISC, >18 leshort 243 UCB RISC-V, +# only for 32-bit +>>4 byte 1 +>>>36 use elf-riscv +# only for 64-bit +>>4 byte 2 +>>>48 use elf-riscv +>18 leshort 244 Lanai 32-bit processor, +>18 leshort 245 CEVA Processor Architecture Family, +>18 leshort 246 CEVA X2 Processor Family, >18 leshort 247 eBPF, ->18 leshort 251 NEC VE, +>18 leshort 248 Graphcore Intelligent Processing Unit, +>18 leshort 249 Imagination Technologies, +>18 leshort 250 Netronome Flow Processor, +>18 leshort 251 NEC Vector Engine, +>18 leshort 252 C-SKY processor family, +>18 leshort 253 Synopsys ARCv3 64-bit ISA/HS6x cores, +>18 leshort 254 MOS Technology MCS 6502 processor, +>18 leshort 255 Synopsys ARCv3 32-bit, +>18 leshort 256 Kalray VLIW core of the MPPA family, +>18 leshort 257 WDC 65816/65C816, +>18 leshort 258 LoongArch, +>18 leshort 259 ChipON KungFu32, >18 leshort 0x1057 AVR (unofficial), >18 leshort 0x1059 MSP430 (unofficial), >18 leshort 0x1223 Adapteva Epiphany (unofficial), @@ -296,7 +334,7 @@ >18 leshort 0xfebb NIOS (unofficial), >18 leshort 0xfeed Moxie (unofficial), >18 default x ->>18 leshort x *unknown arch 0x%x* +>>18 leshort x *unknown arch %#x* >20 lelong 0 invalid version >20 lelong 1 version 1 diff --git a/magic/Magdir/espressif b/magic/Magdir/espressif index 7a8616a1a48c..a97c09301fd1 100644 --- a/magic/Magdir/espressif +++ b/magic/Magdir/espressif @@ -1,5 +1,5 @@ -# $File: espressif,v 1.2 2019/11/15 21:03:14 christos Exp $ +# $File: espressif,v 1.3 2021/04/26 15:56:00 christos Exp $ # configuration dump of Tasmota firmware for ESP8266 based devices by Espressif # URL: https://github.com/arendst/Sonoff-Tasmota/ # Reference: https://codeload.github.com/arendst/Sonoff-Tasmota/zip/release-6.2/ @@ -17,7 +17,7 @@ >>10 ubyte^0x64 x \b.%u >>9 ubyte^0x63 x \b.%u >>8 ubyte^0x62 x \b.%u -#>8 ubelong x (0x%x) +#>8 ubelong x (%#x) # hostname[33] XORed >>0x165 ubyte^0x1BF x \b, hostname %c >>0x166 ubyte^0x1C0 >037 \b%c diff --git a/magic/Magdir/filesystems b/magic/Magdir/filesystems index 7b95a4f9c72f..283f9c4ac9b6 100644 --- a/magic/Magdir/filesystems +++ b/magic/Magdir/filesystems @@ -1,5 +1,5 @@ #------------------------------------------------------------------------------ -# $File: filesystems,v 1.133 2020/05/17 19:32:00 christos Exp $ +# $File: filesystems,v 1.145 2021/09/07 18:57:50 christos Exp $ # filesystems: file(1) magic for different filesystems # 0 name partid @@ -220,7 +220,7 @@ >>>>>>18 string =_ \b. >>>>>>>19 string x \b%-.1s >>>22 ubyte 0 ->>>>21 ubyte x \b, from drive 0x%x +>>>>21 ubyte x \b, from drive %#x >>>22 ubyte >0 >>>>21 string x \b, from drive %s >>>535 search/17 \x55\xAA @@ -261,6 +261,18 @@ # for sector sizes with 512 or more Bytes >0x1FE leshort 0xAA55 DOS/MBR boot sector +# ExFAT +3 string/w =EXFAT +>0x1FE leshort 0xAA55 +>>0x6E ubyte 1 +>>>0x6F ubyte 0x80 +>>>0 ubyte 0xEB DOS/MBR boot sector, +>>>0x69 ubyte x ExFAT Filesystem version %d. +>>>0x68 ubyte x \b%d +>>>0x6d ubyte x \b, (1<<%d) sectors per cluster +>>>0x48 ulequad x \b, sectors %lld +>>>0x64 ulelong x \b, serial number %#x + # keep old DOS/MBR boot sector as dummy for mbr and bootloader displaying # only for sector sizes with 512 or more Bytes 0x1FE leshort 0xAA55 DOS/MBR boot sector @@ -296,7 +308,7 @@ >>>>>(0x49.b) string Tabela\ de\ parti\207ao\ inv\240lida portuguese >>>>>(0x49.b) string Tabla\ de\ partici\242n\ no\ v\240lida spanish >>>>>(0x49.b) string Tavola\ delle\ partizioni\ non\ valida italian ->>>>>0x49 ubyte >0 at offset 0x%x +>>>>>0x49 ubyte >0 at offset %#x >>>>>>(0x49.b) string >\0 "%s" # "Error loading operating system" nn=0xa3 for english version # "Fehler beim Laden des Betriebssystems" nn=0xa7 for german version @@ -304,7 +316,7 @@ # "Erro na inicializa\207ao do sistema operacional" nn=0xa7 for portuguese Brazilian version # "Error al cargar sistema operativo" nn=0xa8 for spanish version # "Errore durante il caricamento del sistema operativo" nn=0xae for italian version ->>>>>0x74 ubyte >0 at offset 0x%x +>>>>>0x74 ubyte >0 at offset %#x >>>>>>(0x74.b) string >\0 "%s" # "Missing operating system" nn=0xc2 for english version # "Betriebssystem fehlt" nn=0xcd for german version @@ -312,7 +324,7 @@ # "Sistema operacional nao encontrado" nn=0xd4 for portuguese Brazilian version # "Falta sistema operativo" nn=0xca for spanish version # "Sistema operativo mancante" nn=0xe2 for italian version ->>>>>0x79 ubyte >0 at offset 0x%x +>>>>>0x79 ubyte >0 at offset %#x >>>>>>(0x79.b) string >\0 "%s" # Microsoft Windows 95B to XP (https://thestarman.pcministry.com/asm/mbr/95BMEMBR.htm) # assembler instructions: push ax;pop es;push ax;pop ds;cld;mov si,7c1b @@ -327,7 +339,7 @@ >>>>(0x3C.b+0x0FF) string Ung\201ltige\ Partitionstabelle german >>>>(0x3C.b+0x0FF) string Table\ de\ partition\ erron\202e french >>>>(0x3C.b+0x0FF) string \215\245\257\340\240\242\250\253\354\255\240\357\ \342\240\241\253\250\346\240 russian ->>>>0x3C ubyte x at offset 0x%x+0xFF +>>>>0x3C ubyte x at offset %#x+0xFF >>>>(0x3C.b+0x0FF) string >\0 "%s" # "Error loading operating system" nn=0x127 for english version # "Fehler beim Laden des Betriebssystems" nn=0x12b for german version @@ -400,12 +412,12 @@ >>>>(0x1b7.b+0x100) string >\0 "%s" # https://thestarman.pcministry.com/asm/mbr/Win2kmbr.htm#DiskSigs # https://en.wikipedia.org/wiki/MBR_disk_signature#ID ->>0x1b8 ulelong >0 \b, disk signature 0x%-.4x +>>0x1b8 ulelong >0 \b, disk signature %#-.4x # driveID/timestamp for Win 95B,98,98SE and ME. See https://thestarman.pcministry.com/asm/mbr/mystery.htm >>0xDA uleshort 0 >>>0xDC ulelong >0 \b, created # physical drive number (0x80-0xFF) when the Windows wrote that byte to the drive ->>>>0xDC ubyte x with driveID 0x%x +>>>>0xDC ubyte x with driveID %#x # hours, minutes and seconds >>>>0xDf ubyte x at %x >>>>0xDe ubyte x \b:%x @@ -452,13 +464,13 @@ >>>397 search/4 Booting\040 >>>>408 search/4 HD1/\0 \b, Ranish MBR ( >>>>>416 string Writing\ changes... \b2.37 ->>>>>>438 ubyte x \b,0x%x dots +>>>>>>438 ubyte x \b,%#x dots >>>>>>440 ubyte >0 \b,virus check >>>>>>441 ubyte >0 \b,partition %c #2.38,2.42,2.44 >>>>>416 string !Writing\ changes... \b >>>>>>418 ubyte 1 \bvirus check, ->>>>>>419 ubyte x \b0x%x seconds +>>>>>>419 ubyte x \b%#x seconds >>>>>>420 ubyte&0x0F >0 \b,partition >>>>>>>420 ubyte&0x0F <5 \b %x >>>>>>>420 ubyte&0x0F 0Xf \b ask @@ -491,25 +503,25 @@ # updated by Joerg Jenderek at Oct 2008 # variables according to grub-0.97/stage1/stage1.S or # https://www.gnu.org/software/grub/manual/grub.html#Embedded-data -# usual values are marked with comments to get only informations of strange GRUB loaders +# usual values are marked with comments to get only information of strange GRUB loaders >342 search/60 \0Geom\0 #>0 ulelong x %x=0x009048EB , 0x2a9048EB 0 >>0x41 ubyte <2 >>>0x3E ubyte >2 \b; GRand Unified Bootloader # 0x3 for 0.5.95,0.93,0.94,0.96 0x4 for 1.90 ->>>>0x3E ubyte x \b, stage1 version 0x%x +>>>>0x3E ubyte x \b, stage1 version %#x #If it is 0xFF, use a drive passed by BIOS ->>>>0x40 ubyte <0xFF \b, boot drive 0x%x +>>>>0x40 ubyte <0xFF \b, boot drive %#x # in most case 0,1,0x2e for GRUB 0.5.95 ->>>>0x41 ubyte >0 \b, LBA flag 0x%x ->>>>0x42 uleshort <0x8000 \b, stage2 address 0x%x -#>>>>0x42 uleshort =0x8000 \b, stage2 address 0x%x (usual) ->>>>0x42 uleshort >0x8000 \b, stage2 address 0x%x -#>>>>0x44 ulelong =1 \b, 1st sector stage2 0x%x (default) ->>>>0x44 ulelong >1 \b, 1st sector stage2 0x%x ->>>>0x48 uleshort <0x800 \b, stage2 segment 0x%x -#>>>>0x48 uleshort =0x800 \b, stage2 segment 0x%x (usual) ->>>>0x48 uleshort >0x800 \b, stage2 segment 0x%x +>>>>0x41 ubyte >0 \b, LBA flag %#x +>>>>0x42 uleshort <0x8000 \b, stage2 address %#x +#>>>>0x42 uleshort =0x8000 \b, stage2 address %#x (usual) +>>>>0x42 uleshort >0x8000 \b, stage2 address %#x +#>>>>0x44 ulelong =1 \b, 1st sector stage2 %#x (default) +>>>>0x44 ulelong >1 \b, 1st sector stage2 %#x +>>>>0x48 uleshort <0x800 \b, stage2 segment %#x +#>>>>0x48 uleshort =0x800 \b, stage2 segment %#x (usual) +>>>>0x48 uleshort >0x800 \b, stage2 segment %#x >>>>402 string Geom\0Hard\ Disk\0Read\0\ Error\0 >>>>>394 string stage1 \b, GRUB version 0.5.95 >>>>382 string Geom\0Hard\ Disk\0Read\0\ Error\0 @@ -533,7 +545,7 @@ # mbr partition table entries updated by Joerg Jenderek at Sep 2013 # skip Norton Utilities disc image data >3 string !IHISK -# skip Linux style boot sector starting with assember instructions mov 0x7c0,ax; +# skip Linux style boot sector starting with assembler instructions mov 0x7c0,ax; >>0 belong !0xb8c0078e # not Linux kernel >>>514 string !HdrS @@ -548,7 +560,7 @@ >>>>>0 ubelong&0xFD000000 !0xE9000000 # skip FSInfosector >>>>>>0 string !RRaA -# skip 3rd sector of MS x86 bootloader with assember instructions cli;MOVZX EAX,BYTE PTR [BP+10];MOV ECX, +# skip 3rd sector of MS x86 bootloader with assembler instructions cli;MOVZX EAX,BYTE PTR [BP+10];MOV ECX, # https://thestarman.pcministry.com/asm/mbr/MSWIN41.htm >>>>>>>0 ubequad !0xfa660fb64610668b # skip 13rd sector of MS x86 bootloader @@ -1114,9 +1126,9 @@ >>48 leshort 0xAA55 2 >>32 leshort 0xAA55 3 >>16 leshort 0xAA55 4 ->>4 ubyte x : ID=0x%x +>>4 ubyte x : ID=%#x >>0 ubyte&0x80 0x80 \b, active ->>0 ubyte >0x80 0x%x +>>0 ubyte >0x80 %#x >>1 ubyte x \b, start-CHS ( >>1 use partition-chs >>5 ubyte x \b), end-CHS ( @@ -1214,7 +1226,7 @@ # ERRorTeXT >>181 search/166 Error\ \0\r\n NetBSD mbr # NT Drive Serial Number https://thestarman.pcministry.com/asm/mbr/Win2kmbr.htm#DS ->>>0x1B8 ubelong >0 \b,Serial 0x%-.8x +>>>0x1B8 ubelong >0 \b,Serial %#-.8x # BOOTSEL definitions contains assembler instructions: int 0x13;pop dx;push dx;push dx >>>0xbb search/71 \xcd\x13\x5a\x52\x52 \b,bootselector # BOOT_EXTENDED definitions contains assembler instructions: @@ -1265,38 +1277,38 @@ # variant used by testdisk of https://www.cgsecurity.org/wiki/Menu_MBRCode >>>(0x1BC.s+8) ubyte&2 2 \b,TestDisk #0x1~1,..,0x8~4,0x10~F,0x80~A enabled -#>>>(0x1BC.s+10) ubyte x \b,flags 0x%x +#>>>(0x1BC.s+10) ubyte x \b,flags %#x #0x0~1,0x1~2,...,0x3~4,0x4~F,0x7~D default boot -#>>>(0x1BC.s+11) ubyte x \b,cfg_def 0x%x +#>>>(0x1BC.s+11) ubyte x \b,cfg_def %#x # for older versions >>>(0x1BC.s+9) ubyte <2 #>>>>(0x1BC.s+12) ubyte 18 \b,%hhu/18 seconds >>>>(0x1BC.s+12) ubyte !18 \b,%u/18 seconds # floppy A: or B: ->>>>(0x1BC.s+13) ubyte <2 \b,floppy 0x%x +>>>>(0x1BC.s+13) ubyte <2 \b,floppy %#x >>>>(0x1BC.s+13) ubyte >1 # 1st hard disc -#>>>>>(0x1BC.s+13) ubyte 0x80 \b,drive 0x%x +#>>>>>(0x1BC.s+13) ubyte 0x80 \b,drive %#x # not 1st hard disc ->>>>>(0x1BC.s+13) ubyte !0x80 \b,drive 0x%x +>>>>>(0x1BC.s+13) ubyte !0x80 \b,drive %#x # for version >= 2 maximal timeout can be 65534 >>>(0x1BC.s+9) ubyte >1 #>>>>(0x1BC.s+12) uleshort 18 \b,%u/18 seconds >>>>(0x1BC.s+12) uleshort !18 \b,%u/18 seconds # floppy A: or B: ->>>>(0x1BC.s+14) ubyte <2 \b,floppy 0x%x +>>>>(0x1BC.s+14) ubyte <2 \b,floppy %#x >>>>(0x1BC.s+14) ubyte >1 # 1st hard disc -#>>>>>(0x1BC.s+14) ubyte 0x80 \b,drive 0x%x +#>>>>>(0x1BC.s+14) ubyte 0x80 \b,drive %#x # not 1st hard disc ->>>>>(0x1BC.s+14) ubyte !0x80 \b,drive 0x%x +>>>>>(0x1BC.s+14) ubyte !0x80 \b,drive %#x >>>0 ubyte x \b) # added by Joerg Jenderek # In the second sector (+0x200) are variables according to grub-0.97/stage2/asm.S or # grub-1.94/kern/i386/pc/startup.S # https://www.gnu.org/software/grub/manual/grub.html#Embedded-data -# usual values are marked with comments to get only informations of strange GRUB loaders +# usual values are marked with comments to get only information of strange GRUB loaders 0x200 uleshort 0x70EA # found only version 3.{1,2} >0x206 ubeshort >0x0300 @@ -1318,9 +1330,9 @@ # GRUB 0.5.95 unofficial >>>>0x20C ulelong&0x2E300000 0x2E300000 # 0=stage2 1=ffs 2=e2fs 3=fat 4=minix 5=reiserfs ->>>>>0x20C ubyte x \b, identifier 0x%x -#>>>>>0x20D ubyte =0 \b, LBA flag 0x%x (default) ->>>>>0x20D ubyte >0 \b, LBA flag 0x%x +>>>>>0x20C ubyte x \b, identifier %#x +#>>>>>0x20D ubyte =0 \b, LBA flag %#x (default) +>>>>>0x20D ubyte >0 \b, LBA flag %#x # GRUB version as string >>>>>0x20E string >\0 \b, GRUB version %-s # for stage1_5 is 0xffffffff + config_file "/boot/grub/stage2" default @@ -1335,10 +1347,10 @@ # for 1.94 contains kernel image size # for 0.93,0.94,0.96,0.97 # 0=stage2 1=ffs 2=e2fs 3=fat 4=minix 5=reiserfs 6=vstafs 7=jfs 8=xfs 9=iso9660 a=ufs2 ->>>>>0x210 ubyte x \b, identifier 0x%x +>>>>>0x210 ubyte x \b, identifier %#x # The flag for LBA forcing is in most cases 0 -#>>>>>0x211 ubyte =0 \b, LBA flag 0x%x (default) ->>>>>0x211 ubyte >0 \b, LBA flag 0x%x +#>>>>>0x211 ubyte =0 \b, LBA flag %#x (default) +>>>>>0x211 ubyte >0 \b, LBA flag %#x # GRUB version as string >>>>>0x212 string >\0 \b, GRUB version %-s # for stage1_5 is 0xffffffff + config_file "/boot/grub/stage2" default @@ -1358,16 +1370,16 @@ 0 ulelong&0x804000E9 0x000000E9 !:strength +60 # mtools-3.9.8/msdos.h -# usual values are marked with comments to get only informations of strange FAT systems +# usual values are marked with comments to get only information of strange FAT systems # valid sectorsize must be a power of 2 from 32 to 32768 >11 uleshort&0x001f 0 >>11 uleshort <32769 >>>11 uleshort >31 >>>>21 ubyte&0xf0 0xF0 >>>>>0 ubyte 0xEB DOS/MBR boot sector ->>>>>>1 ubyte x \b, code offset 0x%x+2 +>>>>>>1 ubyte x \b, code offset %#x+2 >>>>>0 ubyte 0xE9 ->>>>>>1 uleshort x \b, code offset 0x%x+3 +>>>>>>1 uleshort x \b, code offset %#x+3 >>>>>3 string >\0 \b, OEM-ID "%-.8s" #http://mirror.href.com/thestarman/asm/debug/debug2.htm#IHC >>>>>>8 string IHC \b cached by Windows 9M @@ -1392,9 +1404,9 @@ #>>>>>17 uleshort =0 \b, root entries %hu=0 (usual Fat32) >>>>>19 uleshort >0 \b, sectors %u (volumes <=32 MB) #>>>>>19 uleshort =0 \b, sectors %hu=0 (usual Fat32) ->>>>>21 ubyte >0xF0 \b, Media descriptor 0x%x -#>>>>>21 ubyte =0xF0 \b, Media descriptor 0x%x (usual floppy) ->>>>>21 ubyte <0xF0 \b, Media descriptor 0x%x +>>>>>21 ubyte >0xF0 \b, Media descriptor %#x +#>>>>>21 ubyte =0xF0 \b, Media descriptor %#x (usual floppy) +>>>>>21 ubyte <0xF0 \b, Media descriptor %#x >>>>>22 uleshort >0 \b, sectors/FAT %u #>>>>>22 uleshort =0 \b, sectors/FAT %hu=0 (usual Fat32) >>>>>24 uleshort x \b, sectors/track %u @@ -1413,18 +1425,18 @@ #>>>>>>>32 ulelong =0 \b, sectors %u (volumes > 32 MB) # FAT<32 bit specific >>>>>>>82 string/c !fat32 -#>>>>>>>>36 ubyte 0x80 \b, physical drive 0x%x=0x80 (usual harddisk) -#>>>>>>>>36 ubyte 0 \b, physical drive 0x%x=0 (usual floppy) +#>>>>>>>>36 ubyte 0x80 \b, physical drive %#x=0x80 (usual harddisk) +#>>>>>>>>36 ubyte 0 \b, physical drive %#x=0 (usual floppy) >>>>>>>>36 ubyte !0x80 ->>>>>>>>>36 ubyte !0 \b, physical drive 0x%x +>>>>>>>>>36 ubyte !0 \b, physical drive %#x # VGA-copy CRC or # in Windows NT bit 0 is a dirty flag to request chkdsk at boot time. bit 1 requests surface scan too ->>>>>>>>37 ubyte >0 \b, reserved 0x%x -#>>>>>>>>37 ubyte =0 \b, reserved 0x%x -# extended boot signatur value is 0x80 for NTFS, 0x28 or 0x29 for others ->>>>>>>>38 ubyte !0x29 \b, dos < 4.0 BootSector (0x%x) +>>>>>>>>37 ubyte >0 \b, reserved %#x +#>>>>>>>>37 ubyte =0 \b, reserved %#x +# extended boot signature value is 0x80 for NTFS, 0x28 or 0x29 for others +>>>>>>>>38 ubyte !0x29 \b, dos < 4.0 BootSector (%#x) >>>>>>>>38 ubyte&0xFE =0x28 ->>>>>>>>>39 ulelong x \b, serial number 0x%x +>>>>>>>>>39 ulelong x \b, serial number %#x >>>>>>>>38 ubyte =0x29 >>>>>>>>>43 string <NO\ NAME \b, label: "%11.11s" >>>>>>>>>43 string >NO\ NAME \b, label: "%11.11s" @@ -1466,7 +1478,7 @@ >>>>>82 string/c fat32 \b, FAT (32 bit) >>>>>>36 ulelong x \b, sectors/FAT %u # https://technet.microsoft.com/en-us/library/cc977221.aspx ->>>>>>40 uleshort >0 \b, extension flags 0x%x +>>>>>>40 uleshort >0 \b, extension flags %#x #>>>>>>40 uleshort =0 \b, extension flags %hu >>>>>>42 uleshort >0 \b, fsVersion %u #>>>>>>42 uleshort =0 \b, fsVersion %u (usual) @@ -1483,19 +1495,19 @@ >>>>>>50 default x >>>>>>>50 uleshort x \b, Backup boot sector %u # corrected by Joerg Jenderek at Feb 2011 according to https://thestarman.pcministry.com/asm/mbr/MSWIN41.htm#FSINFO ->>>>>>52 ulelong >0 \b, reserved1 0x%x ->>>>>>56 ulelong >0 \b, reserved2 0x%x ->>>>>>60 ulelong >0 \b, reserved3 0x%x +>>>>>>52 ulelong >0 \b, reserved1 %#x +>>>>>>56 ulelong >0 \b, reserved2 %#x +>>>>>>60 ulelong >0 \b, reserved3 %#x # same structure as FAT1X -#>>>>>>64 ubyte =0x80 \b, physical drive 0x%x=80 (usual harddisk) -#>>>>>>64 ubyte =0 \b, physical drive 0x%x=0 (usual floppy) +#>>>>>>64 ubyte =0x80 \b, physical drive %#x=80 (usual harddisk) +#>>>>>>64 ubyte =0 \b, physical drive %#x=0 (usual floppy) >>>>>>64 ubyte !0x80 ->>>>>>>64 ubyte >0 \b, physical drive 0x%x +>>>>>>>64 ubyte >0 \b, physical drive %#x # in Windows NT bit 0 is a dirty flag to request chkdsk at boot time. bit 1 requests surface scan too ->>>>>>65 ubyte >0 \b, reserved 0x%x ->>>>>>66 ubyte !0x29 \b, dos < 4.0 BootSector (0x%x) +>>>>>>65 ubyte >0 \b, reserved %#x +>>>>>>66 ubyte !0x29 \b, dos < 4.0 BootSector (%#x) >>>>>>66 ubyte =0x29 ->>>>>>>67 ulelong x \b, serial number 0x%x +>>>>>>>67 ulelong x \b, serial number %#x >>>>>>>71 string <NO\ NAME \b, label: "%11.11s" >>>>>>>71 string >NO\ NAME \b, label: "%11.11s" >>>>>>>71 string =NO\ NAME \b, unlabeled @@ -1518,10 +1530,10 @@ >>>>>>>19 uleshort =0 # 0 sectors/FAT # dos < 4.0 BootSector value found is 0x80 -#38 ubyte =0x80 \b, dos < 4.0 BootSector (0x%x) +#38 ubyte =0x80 \b, dos < 4.0 BootSector (%#x) >>>>>>>>22 uleshort =0 \b; NTFS >>>>>>>>>24 uleshort >0 \b, sectors/track %u ->>>>>>>>>36 ulelong !0x800080 \b, physical drive 0x%x +>>>>>>>>>36 ulelong !0x800080 \b, physical drive %#x >>>>>>>>>40 ulequad >0 \b, sectors %lld >>>>>>>>>48 ulequad >0 \b, $MFT start cluster %lld >>>>>>>>>56 ulequad >0 \b, $MFTMirror start cluster %lld @@ -1537,8 +1549,8 @@ #>>>>>>>>>>68 ulelong >127 \b, bytes/index block 2^(256-%d) >>>>>>>>>>68 ubyte >127 \b, bytes/index block 2^(-1*%i) >>>>>>>>>72 ulequad x \b, serial number 0%llx ->>>>>>>>>80 ulelong >0 \b, checksum 0x%x -#>>>>>>>>>80 ulelong =0 \b, checksum 0x%x=0 (usual) +>>>>>>>>>80 ulelong >0 \b, checksum %#x +#>>>>>>>>>80 ulelong =0 \b, checksum %#x=0 (usual) # unicode loadername size jump >>>>>>>>>(0x200.s*2) ubyte x # in next sector loadername terminated by unicode CTRL-D and $ @@ -1705,7 +1717,13 @@ >0x94 lelong x (of %d), >0x50 string x name %s, >0x98 ulelong x version %u, ->0xa0 ulelong x flags 0x%x +>0xa0 ulelong x flags %#x + +0 ulequad 0x48414d3205172011 HAMMER2 filesystem (little-endian), +>0x3b byte x volume %d, +>0x28 ulequad/1073741824 x size %lluGB, +>0x30 ulelong x version %u, +>0x34 ulelong x flags %#x # ext2/ext3 filesystems - Andreas Dilger <adilger@dilger.ca> # ext4 filesystem - Eric Sandeen <sandeen@sandeen.net> @@ -1727,12 +1745,12 @@ >>>0x464 lelong >0x0000007 ext4 filesystem data # else large INCOMPAT? >>0x460 lelong >0x000003f ext4 filesystem data ->0x468 belong x \b, UUID=%08x ->0x46c beshort x \b-%04x ->0x46e beshort x \b-%04x ->0x470 beshort x \b-%04x ->0x472 belong x \b-%08x ->0x476 beshort x \b%04x +>0x468 ubelong x \b, UUID=%08x +>0x46c ubeshort x \b-%04x +>0x46e ubeshort x \b-%04x +>0x470 ubeshort x \b-%04x +>0x472 ubelong x \b-%08x +>0x476 ubeshort x \b%04x >0x478 string >0 \b, volume name "%s" # General flags for any ext* fs >0x460 lelong &0x0000004 (needs journal recovery) @@ -1755,12 +1773,12 @@ # f2fs filesystem - Tuomas Tynkkynen <tuomas.tynkkynen@iki.fi> 0x400 lelong 0xF2F52010 F2FS filesystem ->0x46c belong x \b, UUID=%08x ->0x470 beshort x \b-%04x ->0x472 beshort x \b-%04x ->0x474 beshort x \b-%04x ->0x476 belong x \b-%08x ->0x47a beshort x \b%04x +>0x46c ubelong x \b, UUID=%08x +>0x470 ubeshort x \b-%04x +>0x472 ubeshort x \b-%04x +>0x474 ubeshort x \b-%04x +>0x476 ubelong x \b-%08x +>0x47a ubeshort x \b%04x >0x147c lestring16 x \b, volume name "%s" # Minix filesystems - Juan Cespedes <cespedes@debian.org> @@ -1925,7 +1943,7 @@ #>>>0x60E ubequad 0 #>>>>0x600 ubequad !0 #!:mime application/x-ima -#>>512 ubyte x \b, Media descriptor 0x%x +#>>512 ubyte x \b, Media descriptor %#x # without x86 jump instruction #>>0 ulelong&0x804000E9 !0x000000E9 # assembler instructions: CLI;MOV SP,1E7;MOV AX;07c0;MOV @@ -1935,7 +1953,7 @@ #>>0 ulelong&0x804000E9 =0x000000E9 # only x86 short jump instruction found #>>>0 ubyte =0xEB -#>>>>1 ubyte x \b, code offset 0x%x+2 +#>>>>1 ubyte x \b, code offset %#x+2 # https://thestarman.pcministry.com/DOS/ibm100/Boot.htm # assembler instructions: CLI;MOV AX,CS;MOV DS,AX;MOV DX,0 #>>>>(1.b+2) ubequad 0xfa8cc88ed8ba0000 \b, PC-DOS 1.0 bootloader @@ -1975,16 +1993,19 @@ >>38917 string 1 (version 1.0) >>38917 string 2 (version 1.5) >>38917 string 3 (version 2.0) ->>38917 byte >0x33 (unknown version, ID 0x%X) ->>38917 byte <0x31 (unknown version, ID 0x%X) +>>38917 byte >0x33 (unknown version, ID %#X) +>>38917 byte <0x31 (unknown version, ID %#X) # The next line is not necessary because the MBR staff is done looking for boot signature >0x1FE leshort 0xAA55 (DOS/MBR boot sector) # "application id" which appears to be used as a volume label ->32808 string/T >\0 '%s' +>32808 string/T >\0 '%.32s' >34816 string \000CD001\001EL\ TORITO\ SPECIFICATION (bootable) 37633 string CD001 ISO 9660 CD-ROM filesystem data (raw 2352 byte sectors) !:mime application/x-iso9660-image 32777 string CDROM High Sierra CD-ROM filesystem data +# "application id" which appears to be used as a volume label +>32816 string/T >\0 '%.32s' + # CDROM Filesystems # https://en.wikipedia.org/wiki/ISO_9660 @@ -2031,7 +2052,7 @@ >8 lelong &1 version #2 >8 lelong &2 sorted_dirs >8 lelong &4 hole_support ->32 lelong x CRC 0x%x, +>32 lelong x CRC %#x, >36 lelong x edition %u, >40 lelong x %u blocks, >44 lelong x %u files @@ -2041,7 +2062,7 @@ >8 belong &1 version #2 >8 belong &2 sorted_dirs >8 belong &4 hole_support ->32 belong x CRC 0x%x, +>32 belong x CRC %#x, >36 belong x edition %u, >40 belong x %u blocks, >44 belong x %u files @@ -2134,10 +2155,10 @@ >31 byte 3 (lzma), >12 belong x %d bytes, >8 bedate x %s, ->16 belong x Load Address: 0x%08X, ->20 belong x Entry Point: 0x%08X, ->4 belong x Header CRC: 0x%08X, ->24 belong x Data CRC: 0x%08X +>16 belong x Load Address: %#08X, +>20 belong x Entry Point: %#08X, +>4 belong x Header CRC: %#08X, +>24 belong x Data CRC: %#08X # JFFS2 file system 0 leshort 0x1984 Linux old jffs2 filesystem data little endian @@ -2281,20 +2302,20 @@ >>0x10060 string >\0 lockproto %s) # Russell Coker <russell@coker.com.au> -0x10040 string _BHRfS_M BTRFS Filesystem ->0x1012b string >\0 label "%s", ->0x10090 lelong x sectorsize %d, ->0x10094 lelong x nodesize %d, ->0x10098 lelong x leafsize %d, ->0x10020 belong x UUID=%08x- ->0x10024 beshort x \b%04x- ->0x10026 beshort x \b%04x- ->0x10028 beshort x \b%04x- ->0x1002a beshort x \b%04x ->0x1002c belong x \b%08x, ->0x10078 lequad x %lld/ ->0x10070 lequad x \b%lld bytes used, ->0x10088 lequad x %lld devices +0x10040 string _BHRfS_M BTRFS Filesystem +>0x1012b string >\0 label "%s", +>0x10090 lelong x sectorsize %d, +>0x10094 lelong x nodesize %d, +>0x10098 lelong x leafsize %d, +>0x10020 ubelong x UUID=%08x- +>0x10024 ubeshort x \b%04x- +>0x10026 ubeshort x \b%04x- +>0x10028 ubeshort x \b%04x- +>0x1002a ubeshort x \b%04x +>0x1002c ubelong x \b%08x, +>0x10078 lequad x %lld/ +>0x10070 lequad x \b%lld bytes used, +>0x10088 lequad x %lld devices # dvdisaster's .ecc # From: "Nelson A. de Oliveira" <naoliv@gmail.com> @@ -2363,11 +2384,11 @@ >40 lelong x \b number of files %u, >44 lelong x \b blocks available for writing %d, >48 lelong x \b inodes in cache %d, ->52 lelong x \b inode file disk address 0x%x, +>52 lelong x \b inode file disk address %#x, >56 lelong x \b inode file inode number %u, ->60 lelong x \b address of last segment written 0x%x, ->64 lelong x \b address of next segment to write 0x%x, ->68 lelong x \b address of current segment written 0x%x +>60 lelong x \b address of last segment written %#x, +>64 lelong x \b address of next segment to write %#x, +>68 lelong x \b address of current segment written %#x 0 string td\000 floppy image data (TeleDisk, compressed) 0 string TD\000 floppy image data (TeleDisk) @@ -2399,7 +2420,7 @@ >0x16 leshort 0 UBIfs image >0x08 lequad x \b, sequence number %llu >0x10 leshort x \b, length %u ->0x04 lelong x \b, CRC 0x%08x +>0x04 lelong x \b, CRC %#08x 0 lelong 0x23494255 >0x04 leshort <2 @@ -2433,3 +2454,53 @@ >0x400 pstring x serial: %s #>0x500 pstring x unknown: %s !:ext imgc + +# http://martin.hinner.info/fs/bfs/bfs-structure.html +0 lelong 0x1BADFACE SCO UnixWare BFS filesystem + +# https://arstechnica.com/information-technology/2018/07/the-beos-filesystem/ +32 lelong 0x42465331 BE/OS BFS1 filesystem +>36 lelong x \b, byte order %d +>40 lelong x \b, block size %d +>44 lelong x \b, block shift %d +>48 lequad x \b, total blocks %lld +>56 lequad x \b, used blocks %lld + + +0 name next +>0 lelong x \b, size %d +>4 string x \b, label %s + +# https://opensource.apple.com/source/IOStorageFamily/IOStorageFamily-44.3\ +# /IONeXTPartitionScheme.h +0 string NeXT NeXT version 1 disklabel +>12 use next +0 string dlV1 NeXT version 2 disklabel +>12 use next +0 string dlV2 NeXT version 3 disklabel +>12 use next + +# bcachefs +# From: Thomas Weißschuh <thomas@t-8ch.de> + +0 name bcachefs-uuid +>0 ubelong x \b%08x +>4 ubeshort x \b-%04x +>6 ubeshort x \b-%04x +>8 ubeshort x \b-%04x +>10 ubelong x \b-%08x +>14 ubeshort x \b%04x + +0x1018 string \xc6\x85\x73\xf6\x4e\x1a\x45\xca\x82\x65\xf5\x7f\x48\xba\x6d\x81 bcachefs +>0x1068 lequad 8 \b, UUID= +>>0x1038 use bcachefs-uuid +>>0x1048 string >0 \b, label "%.32s" +>>0x1010 uleshort x \b, version %u +>>0x1012 uleshort x \b, min version %u +>>0x107a byte x \b, device %d +# assumes the first field is the members field +>>0x12f4 ulelong 0x01 \b/UUID= +>>>0x12f0 default x +>>>&(0x107a.b*56) use bcachefs-uuid +>>0x107b byte x \b, %d devices +>>0x1090 byte ^0x02 \b (unclean) diff --git a/magic/Magdir/fonts b/magic/Magdir/fonts index b0b40083a5d7..c53822271e05 100644 --- a/magic/Magdir/fonts +++ b/magic/Magdir/fonts @@ -1,6 +1,6 @@ #------------------------------------------------------------------------------ -# $File: fonts,v 1.43 2019/07/16 11:11:31 christos Exp $ +# $File: fonts,v 1.46 2021/04/26 15:56:00 christos Exp $ # fonts: file(1) magic for font data # 0 search/1 FONT ASCII vfont text @@ -11,6 +11,7 @@ 0 string %!PS-AdobeFont-1. PostScript Type 1 font text >20 string >\0 (%s) 6 string %!PS-AdobeFont-1. PostScript Type 1 font program data +>26 string >\0 (%s) 0 string %!FontType1 PostScript Type 1 font program data 6 string %!FontType1 PostScript Type 1 font program data 0 string %!PS-Adobe-3.0\ Resource-Font PostScript Type 1 font text @@ -123,7 +124,15 @@ >10 leshort x \b%d >40 string x %s # Misc. DOS VGA fonts, from Albert Cahalan (acahalan@cs.uml.edu) +# Update: Joerg Jenderek +# URL: http://fileformats.archiveteam.org/wiki/CPI +# Reference: http://www.delorie.com/djgpp/doc/rbinter/it/58/17.html 0 belong 0xff464f4e DOS code page font data collection +!:mime font/x-dos-cpi +!:ext cpi +0 string \x7fDRFONT DR-DOS code page font data collection +!:mime font/x-drdos-cpi +!:ext cpi 7 belong 0x00454741 DOS code page font data 7 belong 0x00564944 DOS code page font data (from Linux?) 4098 string DOSFONT DOSFONT2 encrypted font data @@ -158,7 +167,7 @@ # face size in points 3-72 SLSS03CG.FNT H1CELT72.FNT >2 uleshort x %u # face ID (must be unique) ->0 uleshort x \b, ID 0x%4.4x +>0 uleshort x \b, ID %#4.4x # lowest character index in face (4 but usually 32 for disk-loaded fonts) #>36 uleshort !32 \b, unusual character index %u # width of the widest character like 0 8 10 12 16 24 32 @@ -168,21 +177,21 @@ # thickening size in pixel like 0 1 2 3 4 5 6 7 8 #>58 uleshort x \b, %u thick # lightening mask to eliminate pixels, usually 5555h ->62 uleshort !0x5555 \b, lightening mask 0x%x +>62 uleshort !0x5555 \b, lightening mask %#x # skewing mask to determine when to perform additional rotation when skewing, usually 5555h ->64 uleshort !0x5555 \b, skewing mask 0x%x +>64 uleshort !0x5555 \b, skewing mask %#x # offset to optional horizontal offset table 0 58h~88 5eh 252h -#>68 ulelong x \b, 0x%x horizontal table offset +#>68 ulelong x \b, %#x horizontal table offset # offset of character offset table 54h for many *.GFT 55h 58h 5Eh 120h 1D4h 202h 220h -#>72 ulelong x \b, 0x%x coffset +#>72 ulelong x \b, %#x coffset # offset to font data like 116h 118h 158 20Ah 20Eh ->76 ulelong x \b, 0x%x foffset +>76 ulelong x \b, %#x foffset # form width in bytes like 58 67 156 190 227 317 345 #>80 uleshort x \b, %u fwidth # form height in bytes like 4 8 11 17 26 56 70 90 120 146 150 #>82 uleshort x \b, %u fheight # pointer to the next font like 0 10000h 20000h 30000h 40000h 60000h 80000h E0000h D0000h -#>84 ulelong x \b, 0x%x noffset +#>84 ulelong x \b, %#x noffset # downloadable fonts for browser (prints type) anthon@mnt.org # https://tools.ietf.org/html/rfc3073 @@ -221,7 +230,7 @@ # tag names consist of up to four characters padded with spaces at end like # BASE DSIG OS/2 Zapf acnt glyf cvt vmtx xref ... >>12 regex/4l \^[A-Za-z][A-Za-z][A-Za-z/][A-Za-z2\ ] -#>>>0 ubelong x \b, sfnt version 0x%x +#>>>0 ubelong x \b, sfnt version %#x >>>0 ubelong !0x4f54544f TrueType !:mime font/sfnt !:apple ????tfil @@ -253,7 +262,7 @@ #>>>>&8 ubelong >0x0100bd27 BIGGEST OFFSET >>&8 ubelong >0x00100000 # offset of name table ->>>&-4 ubelong x \b, name offset 0x%x +>>>&-4 ubelong x \b, name offset %#x # GRR: pointer to name table only works if offset ~< FILE_BYTES_MAX = 100000h defined in src\file.h >>&8 ubelong <0x00100000 >>>&-16 ubelong x @@ -284,7 +293,7 @@ >>>>>&-2 ubeshort 1 \b, Macintosh >>>>>&-2 ubeshort 3 \b, Microsoft # languageID (0~english Macintosh, 0409h~english Microsoft, ...) ->>>>>&2 ubeshort >0 \b, language 0x%x +>>>>>&2 ubeshort >0 \b, language %#x # name identifiers # often 0~copyright, 1~font, 2~font subfamily, 5~version, 13~license, 19~sample, ... >>>>>&4 ubeshort >0 \b, type %d string @@ -339,7 +348,7 @@ # 0x44454947 = 'DSIG' >>>&4 belong 0x44534947 \b, digitally signed # offset to 1st font ->>12 ubelong x \b, at 0x%x +>>12 ubelong x \b, at %#x # point to 1st font that starts with sfnt version >>(12.L) use sfnt-font diff --git a/magic/Magdir/forth b/magic/Magdir/forth index cfbcef55482b..34c918152aec 100644 --- a/magic/Magdir/forth +++ b/magic/Magdir/forth @@ -1,6 +1,6 @@ #------------------------------------------------------------------------------ -# $File: forth,v 1.1 2019/06/06 19:14:20 christos Exp $ +# $File: forth,v 1.4 2021/04/26 15:56:00 christos Exp $ # forth: file(1) magic for various Forth environments # From: Lubomir Rintel <lkundrak@v3.sk> # @@ -16,16 +16,18 @@ 0 regex \^:[[:space:]].*[[:space:]]\\(([[:space:]].*)?\ --\ (.*[[:space:]])?\\)[[:space:]].*[[:space:]];$ FORTH program !:mime text/x-forth -# Various dictionary images used by OpenFirware FORTH environent +# Various dictionary images used by OpenFirware FORTH environment 0 lelong 0xe1a00000 ->8 lelong 0xe1a00000 ARM OpenFirmware FORTH Dictionary, ->>24 lelong x Text length: %d bytes, ->>28 lelong x Data length: %d bytes, ->>32 lelong x Text Relocation Table length: %d bytes, ->>36 lelong x Data Relocation Table length: %d bytes, ->>40 lelong x Entry Point: 0x%08X, ->>44 lelong x BSS length: %d bytes +>8 lelong 0xe1a00000 +# skip raspberry pi kernel image kernel7.img by checking for positive text length +>>24 lelong >0 ARM OpenFirmware FORTH Dictionary, +>>>24 lelong x Text length: %d bytes, +>>>28 lelong x Data length: %d bytes, +>>>32 lelong x Text Relocation Table length: %d bytes, +>>>36 lelong x Data Relocation Table length: %d bytes, +>>>40 lelong x Entry Point: %#08X, +>>>44 lelong x BSS length: %d bytes 0 string MP >28 lelong 1 x86 OpenFirmware FORTH Dictionary, @@ -35,18 +37,18 @@ >>8 leshort x Header length: %d paragraphs, >>10 leshort x Data Size: %d >>12 leshort x - %d 4K pages, ->>14 lelong x Initial Stack Pointer: 0x%08X, ->>20 lelong x Entry Point: 0x%08X, +>>14 lelong x Initial Stack Pointer: %#08X, +>>20 lelong x Entry Point: %#08X, >>24 lelong x First Relocation Item: %d, >>26 lelong x Overlay Number: %d, ->>18 leshort x Checksum: 0x%08X +>>18 leshort x Checksum: %#08X 0 belong 0x48000020 PowerPC OpenFirmware FORTH Dictionary, >4 belong x Text length: %d bytes, >8 belong x Data length: %d bytes, >12 belong x BSS length: %d bytes, >16 belong x Symbol Table length: %d bytes, ->20 belong x Entry Point: 0x%08X, +>20 belong x Entry Point: %#08X, >24 belong x Text Relocation Table length: %d bytes, >28 belong x Data Relocation Table length: %d bytes @@ -55,7 +57,7 @@ >8 lelong x Data length: %d bytes, >12 lelong x BSS length: %d bytes, >16 lelong x Symbol Table length: %d bytes, ->20 lelong x Entry Point: 0x%08X, +>20 lelong x Entry Point: %#08X, >24 lelong x Text Relocation Table length: %d bytes, >28 lelong x Data Relocation Table length: %d bytes @@ -64,17 +66,17 @@ # Weak. #0 short 0x5820 cForth 16-bit Dictionary, -#>2 short x Serial: 0x%08X, -#>4 short x Dictionary Start: 0x%08X, +#>2 short x Serial: %#08X, +#>4 short x Dictionary Start: %#08X, #>6 short x Dictionary Size: %d bytes, -#>8 short x User Area Start: 0x%08X, +#>8 short x User Area Start: %#08X, #>10 short x User Area Size: %d bytes, -#>12 short x Entry Point: 0x%08X +#>12 short x Entry Point: %#08X 0 long 0x581120 cForth 32-bit Dictionary, ->4 long x Serial: 0x%08X, ->8 long x Dictionary Start: 0x%08X, +>4 long x Serial: %#08X, +>8 long x Dictionary Start: %#08X, >12 long x Dictionary Size: %d bytes, ->16 long x User Area Start: 0x%08X, +>16 long x User Area Start: %#08X, >20 long x User Area Size: %d bytes, ->24 long x Entry Point: 0x%08X +>24 long x Entry Point: %#08X diff --git a/magic/Magdir/fsav b/magic/Magdir/fsav index 7ea094144e70..5c1d6e23dcfd 100644 --- a/magic/Magdir/fsav +++ b/magic/Magdir/fsav @@ -1,6 +1,6 @@ #------------------------------------------------------------------------------ -# $File: fsav,v 1.19 2019/04/19 00:42:27 christos Exp $ +# $File: fsav,v 1.22 2021/04/26 15:56:00 christos Exp $ # fsav: file(1) magic for datafellows fsav virus definition files # Anthon van der Neut (anthon@mnt.org) @@ -35,7 +35,7 @@ #>>>3 ubyte 0x1 #>>>>4 ubyte 0x0e #>>>>>13 ubyte >0 fsav virus signatures -#>>>>>>11 ubyte x size 0x%02x +#>>>>>>11 ubyte x size %#02x #>>>>>>12 ubyte x \b%02x #>>>>>>13 ubyte x \b%02x bytes @@ -59,7 +59,7 @@ # file: could not find any valid magic files! (No error) >>10 default x (with buildtime) #>>10 default x -# clamtmp is used for temporily database like update process +# clamtmp is used for temporarily database like update process # for pure tar database only cld extension found !:ext cld/cvd/clamtmp/cud >511 default x file @@ -86,16 +86,16 @@ #>>>>>>>>>&1 regex \^[^:]{1,10} \b, %s >>>>>>>>>&1 regex \^[^:]{1,10} # padding with spaces -#>>>>>>>>>>&1 ubequad x \b, padding 0x%16.16llx +#>>>>>>>>>>&1 ubequad x \b, padding %#16.16llx >510 ubyte =0x20 # inspect real database content -#>>512 ubeshort x \b, database MAGIC 0x%x +#>>512 ubeshort x \b, database MAGIC %#x # ./archive handle pure tar archives >>1012 quad =0 \b, with >>>512 use tar-file # not pure tar >>1012 quad !0 -# one space at the end of text and then handles gziped archives by ./compress +# one space at the end of text and then handles gzipped archives by ./compress >>>512 string \037\213 \b, with >>>>512 indirect x diff --git a/magic/Magdir/games b/magic/Magdir/games index 21e5328c5c94..65af681bad00 100644 --- a/magic/Magdir/games +++ b/magic/Magdir/games @@ -1,6 +1,6 @@ #------------------------------------------------------------------------------ -# $File: games,v 1.20 2020/02/01 16:32:33 christos Exp $ +# $File: games,v 1.24 2021/04/26 15:56:00 christos Exp $ # games: file(1) for games # Fabio Bonelli <fabiobonelli@libero.it> @@ -53,11 +53,11 @@ # dividing this by entry size (64) gives number of files >>>8 ulelong/64 x \b, %u files # offset to the beginning of the file table ->>>4 ulelong x \b, offset 0x%x +>>>4 ulelong x \b, offset %#x # 1st file entry >>>(4.l) use pak-entry # 2nd file entry -#>>>4 ulelong+64 x \b, offset 0x%x +#>>>4 ulelong+64 x \b, offset %#x #>>>(4.l+64) use pak-entry # # display file table entry of Quake PAK archive @@ -65,7 +65,7 @@ # normally entry start after header which implies offset 12 or higher >56 ulelong >11 # the offset from the beginning of pak to beginning of this entry file contents ->>56 ulelong x at 0x%x +>>56 ulelong x at %#x # the size of file for this entry >>60 ulelong x %u bytes # 56 byte null-terminated entry name string includes path like maps/e1m1.bsp @@ -276,7 +276,7 @@ # Summary: NetImmerse game engine file # Extension .nif # Created by: Abel Cheung <abelcheung@gmail.com> -0 string NetImmerse\ File\ Format,\ Versio +0 string NetImmerse\ File\ Format,\ Version >&0 string n\ NetImmerse game engine file >>&0 regex [0-9a-z.]+ \b, version %s @@ -313,3 +313,208 @@ >>12 regex [0-9a-z.]+ saved by game version %s 0 string CIV6 Sid Meier's Civilization VI saved game + +# https://syzygy-tables.info/ +# From Michel Van den Bergh +0 string \327f\f\245 Syzygy DTZ tablebase +!:mime application/syzygy +0 string q\350#] Syzygy WDL tablebase +!:mime application/syzygy + +############################################################################## +# Grand Theft Auto (GTA) file formats. +# +# Summary: +# Includes GTA-specific formats used in all games from 1997 to present. Games +# and formats were created by Rockstar North, formerly DMA Design. Magic tests +# were written based on a combination of official and community documentation. +# +# Created by: Oliver Galvin <odg@riseup.net> +# +# References: +# * Classic GTA documentation and research: +# <https://gitlab.com/classic-gta/gta-data> +# * Official RenderWare documentation available from EA: +# <https://github.com/electronicarts/RenderWare3Docs> +# * Lots of community research in the GTAMods wiki: +# <https://gtamods.com/wiki> + +# GTA 2D-Era data - 'Classic' top down games (1/L/2) + +## GTA text + +0 string \xbf\xf8\xbd\x49\x62\xbe GTA1 in-game text (FXT), +0 string GBL GTA2 in-game text (GXT), +>3 string E English, +>>4 uleshort x version %d +>3 string F French, +>>4 uleshort x version %d +>3 string G German, +>>4 uleshort x version %d +>3 string I Italian, +>>4 uleshort x version %d +>3 string S Spanish, +>>4 uleshort x version %d +>3 string J Japanese, +>>4 uleshort x version %d + +## GTA maps + +0 ulelong 331 GTA1 map layout (CMP), +>4 byte 1 Level 1 +>4 byte 2 Level 2 +>4 byte 3 Level 3 +0 string GBMP GTA2/GBH map layout (GMP), +>4 uleshort x version %d +0 string/t [MapFiles] GTA2 multiplayer map metadata (MMP) +0 string/t MainOrBonus\ =\ MAIN GTA2 single player map listing (test1.seq) + +## GTA 2D sprites and textures + +0 ulelong 290 GTA1 style data (GRX), 8 bit editor graphics +0 ulelong 325 GTA1 style data (GRY), 8 bit in-game graphics +0 ulelong 336 GTA1 style data (G24), 24 bit in-game graphics +0 string GBST GTA2/GBH style data (STY), in-game graphics, +>4 uleshort x version %d + +## GTA audio index + +0 ulelong 0 +>4 ulelong <0x40000 +>>8 ulelong >4500 +>>>8 ulelong <45000 GTA audio index data (SDT) + +## GTA scripts + +0 ulelong 0x00080000 +>4 uleshort 0x0024 GTA2 binary main script (SCR) + +0 uleshort 0x063c GTA2 binary mission script (SCR), Residential area (ste) +0 uleshort 0x055b GTA2 binary mission script (SCR), Downtown area (wil) +0 uleshort 0x0469 GTA2 binary mission script (SCR), Industrial area (bil) + +0 string v9.6\0\0 GTA2 replay file (REP), +>8 regex/30c [a-z0-9:\ ]+\0\0 created on %s + +# GTA 3D-Era (III/VC/SA/LCS/VCS) - used by the RenderWare engine by Criterion Games + +## GTA 3D models and textures - RenderWare binary streams + +8 ulelong 0x00000310 RenderWare data, v3.1.0.0, used in GTA III on PS2, +>0 ulelong 0x00000016 texture archive (TXD) +>0 ulelong 0x00000010 3D models (DFF) +8 ulelong 0x0401ffff RenderWare data, v3.1.0.1, used in GTA III on PC/PS2, +>0 ulelong 0x00000016 texture archive (TXD) +>0 ulelong 0x00000010 3D models (DFF) +8 ulelong 0x0800ffff RenderWare data, v3.2.0.0, used in GTA III on PC, +>0 ulelong 0x00000016 texture archive (TXD) +>0 ulelong 0x00000010 3D models (DFF) +8 ulelong 0x0c00ffff RenderWare data, v3.3.0.0, +>0 ulelong 0x00000016 texture archive (TXD) +>0 ulelong 0x00000010 3D models (DFF) +8 ulelong 0x0c02ffff RenderWare data, v3.3.0.2, used in GTA III PC and GTA VC PS2, +>0 ulelong 0x00000016 texture archive (TXD) +>0 ulelong 0x00000010 3D models (DFF) +8 ulelong 0x1000ffff RenderWare data, v3.4.0.0, +>0 ulelong 0x00000016 texture archive (TXD) +>0 ulelong 0x00000010 3D models (DFF) +8 ulelong 0x1003ffff RenderWare data, v3.4.0.3, used in GTA VC PC, +>0 ulelong 0x00000016 texture archive (TXD) +>0 ulelong 0x00000010 3D models (DFF) +8 ulelong 0x1005ffff RenderWare data, v3.4.0.5, used in GTA III/VC on Android, +>0 ulelong 0x00000016 texture archive (TXD) +>0 ulelong 0x00000010 3D models (DFF) +8 ulelong 0x1400ffff RenderWare data, v3.5.0.0, used in GTA III/VC on Xbox, +>0 ulelong 0x00000016 texture archive (TXD) +>0 ulelong 0x00000010 3D models (DFF) +8 ulelong 0x1803ffff RenderWare data, v3.6.0.3, used in GTA SA, +>0 ulelong 0x00000016 texture archive (TXD) +>0 ulelong 0x00000010 3D models (DFF) + +0 string COL RenderWare collision data (COL), +>3 string L version 1, used in GTA III/VC/SA +>3 string 2 version 2, used in GTA SA +>3 string 3 version 3, used in GTA SA +>3 string 4 version 4, used in GTA SA + +## GTA items and animations + +0 string/c #\ ipl\ generated\ from\ max\ file GTA Item Placement data (IPL), used in GTA III/VC +0 string/b bnry GTA Item Placement data (IPL), used in GTA SA/IV, +>4 ulelong x %d items + +0 string ANP GTA animation data (IFP), +>3 string K version 1, used in GTA III/VC +>3 string 3 version 2, used in GTA SA + +0 string GtaSA29 GTA Replay data (REP), used in GTA SA + +## GTA text + +0 string TKEY GTA in-game text (GXT), version 2, used in GTA III +0 string TABL GTA in-game text (GXT), version 3, used in GTA VC/LS/VCS + +## GTA scripts + +0 string \x02\x00\x01 GTA script (SCM), used in GTA III/VC/SA + +## GTA archives + +0 string VER2 GTA archive (IMG), version 2, used in GTA SA, +>4 ulelong x %d items + +# GTA HD-Era (IV/V) - used by the Rockstar Advanced Game Engine (RAGE) + +## GTA models and textures - RAGE resources +# Note: GTA IV formats not yet documented - WAD, WBD, WBN, WHM, WPL + +0 ulelong 0x00695254 GTA Drawable data (WDR), model and weapon data, used in GTA IV +0 ulelong 0x00695238 GTA Windows Frag Type (WFT), vehicle models, used in GTA IV +0 ulelong 0x006953A4 GTA Ped and LOD models (WDD), used in GTA IV +0 ulelong 0x00695384 GTA Windows Texture Dictionary (WTD), used in GTA IV + +## GTA text + +4 string TABL GTA in-game text (GXT), +>0 uleshort x version %d, used in GTA SA/IV +0 string 2GXT GTA in-game text (GXT2), used in GTA V + +## GTA scripts + +0 ulelong 0x0d524353 GTA script (SCO), unencrypted, used in GTA IV, +>4 ulelong x %d code bytes, +>>8 ulelong x %d static variables, +>>>12 ulelong x %d global variables +0 ulelong 0x0e726373 GTA script (SCO), encrypted, used in GTA IV +>4 ulelong x %d code bytes, +>>8 ulelong x %d static variables, +>>>12 ulelong x %d global variables + +## GTA archives + +0 ulelong 0xa94e2a52 GTA archive (IMG), +>4 ulelong x version %d, used in GTA IV, +>>8 ulelong x %d items + +0 uleshort 0x5250 RAGE Package Format (RPF), +>2 uleshort 0x4630 version 0, used in Rockstar Table Tennis, +>>4 ulelong x %d bytes, +>>>8 ulelong x %d entries +>2 uleshort 0x4632 version 2, used in GTA IV, +>>4 ulelong x %d bytes, +>>>8 ulelong x %d entries +>2 uleshort 0x4633 version 3, used in GTA IV Audio & Midnight Club: LA, +>>4 ulelong x %d bytes, +>>>8 ulelong x %d entries +>2 uleshort 0x4634 version 4, used in Max Payne 3, +>>4 ulelong x %d bytes, +>>>8 ulelong x %d entries +>2 uleshort 0x4636 version 6, used in RDR, +>>4 ulelong x %d bytes, +>>>8 ulelong x %d entries +>2 uleshort 0x4637 version 7, used in GTA V, +>>4 ulelong x %d bytes, +>>>8 ulelong x %d entries +>2 uleshort 0x4638 version 8, used in RDR 2, +>>4 ulelong x %d bytes, +>>>8 ulelong x %d entries diff --git a/magic/Magdir/git b/magic/Magdir/git index 4087fcd8de4b..67eab32a663a 100644 --- a/magic/Magdir/git +++ b/magic/Magdir/git @@ -1,13 +1,13 @@ #------------------------------------------------------------------------------ -# $File: git,v 1.1 2019/10/04 18:46:29 christos Exp $ +# $File: git,v 1.2 2020/08/09 16:57:15 christos Exp $ # git: file(1) magic for Git objects 0 string blob\040 ->5 regex [0-9]+ Git blob %s +>5 regex [0-9a-f]+ Git blob %s 0 string tree\040 ->5 regex [0-9]+ Git tree %s +>5 regex [0-9a-f]+ Git tree %s 0 string commit\040 ->7 regex [0-9]+ Git commit %s +>7 regex [0-9a-f]+ Git commit %s diff --git a/magic/Magdir/gnome b/magic/Magdir/gnome index 2905340c7e06..7a45d1d586ef 100644 --- a/magic/Magdir/gnome +++ b/magic/Magdir/gnome @@ -1,6 +1,6 @@ #------------------------------------------------------------------------------ -# $File: gnome,v 1.6 2019/04/19 00:42:27 christos Exp $ +# $File: gnome,v 1.7 2020/06/23 16:17:08 christos Exp $ # GNOME related files # Contributed by Josh Triplett @@ -55,5 +55,5 @@ 0 string GOBJ\nMETADATA\r\n\032 G-IR binary database >16 byte x \b, v%d >17 byte x \b.%d ->20 leshort x \b, %d entries ->22 leshort x \b/%d local +>20 short x \b, %d entries +>22 short x \b/%d local diff --git a/magic/Magdir/gnu b/magic/Magdir/gnu index 29f0b05e1c08..761d657c4e84 100644 --- a/magic/Magdir/gnu +++ b/magic/Magdir/gnu @@ -1,6 +1,6 @@ #------------------------------------------------------------------------------ -# $File: gnu,v 1.22 2020/04/09 19:11:58 christos Exp $ +# $File: gnu,v 1.24 2021/04/26 15:56:00 christos Exp $ # gnu: file(1) magic for various GNU tools # # GNU nlsutils message catalog file format @@ -33,48 +33,48 @@ # size of hashing table #>20 ulelong x \b, %u hash #>20 ulelong >1 \bes -#>24 ulelong x at 0x%x -# for revsion x.0 offset of table with originals is 1Ch if directly after header +#>24 ulelong x at %#x +# for revision x.0 offset of table with originals is 1Ch if directly after header >4 ulelong&0x0000FFff =0 ->>12 ulelong !0x1C \b, at 0x%x string table +>>12 ulelong !0x1C \b, at %#x string table # but for x.1 table offset i found is 30h. That means directly after bigger header >4 ulelong&0x0000FFff >0 ->>12 ulelong !0x30 \b, at 0x%x string table +>>12 ulelong !0x30 \b, at %#x string table # The following variables are only used in .mo files with minor revision >= 1 # number of system dependent segments #>>28 ulelong x \b, %u segment #>>28 ulelong >1 \bs # offset of table describing system dependent segments -#>>32 ulelong x at 0x%x +#>>32 ulelong x at %#x # number of system dependent strings pairs >>36 ulelong x \b, %u sysdep message >>36 ulelong >1 \bs # offset of table with start offsets of original sysdep strings -#>>40 ulelong x \b, at 0x%x sysdep strings +#>>40 ulelong x \b, at %#x sysdep strings # offset of table with start offsets of translated sysdep strings -#>>44 ulelong x \b, at 0x%x sysdep translations -# >>(44.l) ulelong x 0x%x chars -# >>>&0 ulelong x at 0x%x +#>>44 ulelong x \b, at %#x sysdep translations +# >>(44.l) ulelong x %#x chars +# >>>&0 ulelong x at %#x # >>>>(&-4) string x "%s" # string table after big header -#>>48 ubequad x \b, string table 0x%llx +#>>48 ubequad x \b, string table %#llx # # 0th string length seems to be always 0 #>(12.l) ulelong x \b, %u chars -#>>&0 ulelong x at 0x%x -# if 1st string length positiv inspect offset and string +#>>&0 ulelong x at %#x +# if 1st string length positive inspect offset and string #>(12.l+8) ulelong >0 \b, %u chars -#>>&0 ulelong x at 0x%x -# if 2nd string length positiv inspect offset and string +#>>&0 ulelong x at %#x +# if 2nd string length positive inspect offset and string # >(12.l+16) ulelong >0 \b, %u chars -# >>&0 ulelong x at 0x%x +# >>&0 ulelong x at %#x # skip newline byte #>>>(&-4) ubyte =0x0A #>>>>&0 string x "%s" #>>>(&-4) ubyte !0x0A #>>>>&-1 string x '%s' # offset of table with translation strings -#>16 ulelong x \b, at 0x%x translation table +#>16 ulelong x \b, at %#x translation table # check translation 0 length and offset >(16.l) ulelong >0 >>&0 ulelong x @@ -100,11 +100,11 @@ # TODO: for big endian use same code as for little endian #>0 use \^gettext-object # DEBUG code -#>16 ubelong x \b, at 0x%x translation table -#>(16.L) ubelong x 0x%x chars -#>>&0 ubelong x at 0x%x +#>16 ubelong x \b, at %#x translation table +#>(16.L) ubelong x %#x chars +#>>&0 ubelong x at %#x # unexpected value HERE! -#>>>(&-4) ubequad x 0x%llx +#>>>(&-4) ubequad x %#llx # >4 beshort x revision %d. >6 beshort >0 \b%d, diff --git a/magic/Magdir/gpt b/magic/Magdir/gpt index 76a223c3a030..c2fd51c0dcb6 100644 --- a/magic/Magdir/gpt +++ b/magic/Magdir/gpt @@ -1,6 +1,6 @@ #------------------------------------------------------------------------------ -# $File: gpt,v 1.4 2017/03/17 21:35:28 christos Exp $ +# $File: gpt,v 1.5 2020/12/12 20:01:47 christos Exp $ # # GPT Partition table patterns. # Author: Rogier Goossens (goossens.rogier@gmail.com) @@ -12,7 +12,7 @@ # This is kept separate, so that MBR partitions are not reported as well. # (use -k if you do want them as well) -# First, detect the MBR partiton table +# First, detect the MBR partition table # If more than one GPT protective MBR partition exists, don't print anything # (the other MBR detection code will then just print the MBR partition table) 0x1FE leshort 0xAA55 diff --git a/magic/Magdir/gpu b/magic/Magdir/gpu index 62e30d0f7a25..36d712443ba0 100644 --- a/magic/Magdir/gpu +++ b/magic/Magdir/gpu @@ -1,6 +1,6 @@ #------------------------------------------------------------------------------ -# $File: gpu,v 1.2 2017/03/23 22:11:53 christos Exp $ +# $File: gpu,v 1.3 2021/04/26 15:56:00 christos Exp $ # gpu: file(1) magic for GPU input files # Standard Portable Intermediate Representation (SPIR) @@ -8,12 +8,12 @@ # Typical file extension: .spv 0 belong 0x07230203 Khronos SPIR-V binary, big-endian ->4 belong x \b, version 0x%08x ->8 belong x \b, generator 0x%08x +>4 belong x \b, version %#08x +>8 belong x \b, generator %#08x 0 lelong 0x07230203 Khronos SPIR-V binary, little-endian ->4 lelong x \b, version 0x%08x ->8 lelong x \b, generator 0x%08x +>4 lelong x \b, version %#08x +>8 lelong x \b, generator %#08x # Vulkan Trace file # Documentation: diff --git a/magic/Magdir/guile b/magic/Magdir/guile deleted file mode 100644 index 99f837133c7c..000000000000 --- a/magic/Magdir/guile +++ /dev/null @@ -1,13 +0,0 @@ - -#------------------------------------------------------------------------------ -# $File: guile,v 1.2 2019/04/19 00:42:27 christos Exp $ -# Guile file magic from <dalepsmith@gmail.com> -# https://www.gnu.org/s/guile/ -# https://git.savannah.gnu.org/gitweb/?p=guile.git;f=libguile/_scm.h;hb=HEAD#l250 - -0 string GOOF---- Guile Object ->8 string LE \b, little endian ->8 string BE \b, big endian ->11 string 4 \b, 32bit ->11 string 8 \b, 64bit ->13 regex .\.. \b, bytecode v%s diff --git a/magic/Magdir/hitachi-sh b/magic/Magdir/hitachi-sh index 18d83844515f..f64489f7fcf6 100644 --- a/magic/Magdir/hitachi-sh +++ b/magic/Magdir/hitachi-sh @@ -1,6 +1,6 @@ #------------------------------------------------------------------------------ -# $File: hitachi-sh,v 1.9 2018/08/21 12:48:41 christos Exp $ +# $File: hitachi-sh,v 1.10 2020/12/12 20:01:47 christos Exp $ # hitach-sh: file(1) magic for Hitachi Super-H # # Super-H COFF @@ -16,7 +16,7 @@ # test for unused flag bits (0x8000,0x0800,0x0400,0x0200,x0080) in f_flags >18 ubeshort&0x8E80 0 # use big endian variant of subroutine to display name+variables+flags -# for common object formated files +# for common object formatted files >>0 use \^display-coff !:strength -10 @@ -24,7 +24,7 @@ # test for unused flag bits in f_flags >18 uleshort&0x8E80 0 # use little endian variant of subroutine to -# display name+variables+flags for common object formated files +# display name+variables+flags for common object formatted files >>0 use display-coff !:strength -10 diff --git a/magic/Magdir/human68k b/magic/Magdir/human68k index b3d66ce5d089..707c74098b88 100644 --- a/magic/Magdir/human68k +++ b/magic/Magdir/human68k @@ -1,6 +1,6 @@ #------------------------------------------------------------------------------ -# $File: human68k,v 1.5 2009/09/19 16:28:09 christos Exp $ +# $File: human68k,v 1.6 2021/04/26 15:56:00 christos Exp $ # human68k: file(1) magic for Human68k (X680x0 DOS) binary formats # Magic too short! #0 string HU Human68k @@ -12,7 +12,7 @@ #>(8.L+66) string #HUPAIR hupair #>0 string HU X executable #>(8.L+74) string #LIBCV1 - linked PD LIBC ver 1 -#>4 belong >0 - base address 0x%x +#>4 belong >0 - base address %#x #>28 belong >0 not stripped #>32 belong >0 with debug information #0 beshort 0x601a Human68k Z executable diff --git a/magic/Magdir/ibm370 b/magic/Magdir/ibm370 index a49b28f5db80..dc976f8705ea 100644 --- a/magic/Magdir/ibm370 +++ b/magic/Magdir/ibm370 @@ -1,6 +1,6 @@ #------------------------------------------------------------------------------ -# $File: ibm370,v 1.10 2017/03/17 21:35:28 christos Exp $ +# $File: ibm370,v 1.11 2021/03/14 16:51:45 christos Exp $ # ibm370: file(1) magic for IBM 370 and compatibles. # # "ibm370" said that 0x15d == 0535 was "ibm 370 pure executable". @@ -46,3 +46,7 @@ 0 beshort 0535 SVR2 executable (USS/370) >12 belong >0 not stripped >24 belong >0 - version %d + +# NETDATA (https://en.wikipedia.org/wiki/NETDATA) +# -\INMR01 In EBCDIC +0 string \x60\xe0\xc9\xd5\xd4\xd9\xf0\xf1 IBM NETDATA file diff --git a/magic/Magdir/ibm6000 b/magic/Magdir/ibm6000 index 2112e71652d3..724b64d3a5eb 100644 --- a/magic/Magdir/ibm6000 +++ b/magic/Magdir/ibm6000 @@ -1,6 +1,6 @@ #------------------------------------------------------------------------------ -# $File: ibm6000,v 1.14 2019/03/07 17:21:54 christos Exp $ +# $File: ibm6000,v 1.15 2021/07/03 14:01:46 christos Exp $ # ibm6000: file(1) magic for RS/6000 and the RT PC. # 0 beshort 0x01df executable (RISC System/6000 V3.1) or obj module @@ -10,7 +10,9 @@ #>2 byte 0x50 pure #>28 belong >0 not stripped #>6 beshort >0 - version %ld +# GRR: line below is too general as it matches also TTComp archive, ASCII, 1K handled by ./archive 0 beshort 0x0104 shared library +# GRR: line below is too general as it matches also TTComp archive, ASCII, 2K handled by ./archive 0 beshort 0x0105 ctab data 0 beshort 0xfe04 structured file 0 string 0xabcdef AIX message catalog diff --git a/magic/Magdir/icc b/magic/Magdir/icc index a8b57864bf0d..15fd76b8d512 100644 --- a/magic/Magdir/icc +++ b/magic/Magdir/icc @@ -1,6 +1,6 @@ #------------------------------------------------------------------------------ -# $File: icc,v 1.6 2019/11/15 21:03:14 christos Exp $ +# $File: icc,v 1.7 2021/04/26 15:56:00 christos Exp $ # icc: file(1) magic for International Color Consortium file formats # @@ -123,9 +123,9 @@ # seconds <= 59 >>>>>34 ubeshort x \b:%.2u # vendor specific flags like 2 in HPCLJ5.ICM ->>>44 ubeshort >0 \b, 0x%x vendor flags +>>>44 ubeshort >0 \b, %#x vendor flags # profile flags bits 0-2 of least 16 used by ICC -#>>>44 ubelong >0 \b, 0x%x flags +#>>>44 ubelong >0 \b, %#x flags # icEmbeddedProfileTrue >>>44 ubelong &1 \b, embedded # icEmbeddedProfileFalse @@ -138,9 +138,9 @@ #>>>44 ubelong ^4 \b, no MCS # vendor specific device attributes 1~srgb.icc # E000D00h~CNB7QEDA.ICM C000A00h~CNB5FCAA.ICM 01040401h~CNB25PE3.ICM ->>>56 ubelong >0 \b, 0x%x vendor attribute +>>>56 ubelong >0 \b, %#x vendor attribute # ICC device attributes bits 0-7 used -#>>>60 ubelong x \b, 0x%x attribute +#>>>60 ubelong x \b, %#x attribute # http://www.color.org/icc34.h >>>60 ubelong &0x01 \b, transparent #>>>60 ubelong ^0x01 \b, reflective @@ -159,7 +159,7 @@ >>>60 ubelong &0x80 \b, self-luminous #>>>60 ubelong ^0x80 \b, non-self-luminous # rendering intent 0-3 but 7AEA5027h in EE051__1.ICM 6CB1BCh in EE061__1.ICM ->>>64 ubelong >3 \b, 0x%x rendering intent +>>>64 ubelong >3 \b, %#x rendering intent #>>>64 ubelong =0 \b, perceptual >>>64 ubelong =1 \b, relative colorimetric >>>64 ubelong =2 \b, saturation @@ -168,16 +168,16 @@ >>>71 ubequad !0xd6000100000000d3 \b, PCS # usually X~0.9642*65536=63189.8112~63190=F6D5h ; but also found # often F6D6 in gt5000r.icm, F6B8 in kodakce.icm, F6CA in RSWOP.icm ->>>>68 ubelong !0x0000f6d5 X=0x%x +>>>>68 ubelong !0x0000f6d5 X=%#x # usually Y=1.0~00010000h but Y=0 in brmsl07f.icm ->>>>72 ubelong !0x00010000 Y=0x%x +>>>>72 ubelong !0x00010000 Y=%#x # usually Z~0.8249*65536=54060.6464~54061=D32Dh ; but also found # D2F7 in hp1200c.icm, often D32C in A925A.icm, D309 in RSWOP.icm , D2F8 in kodak_dc.icm ->>>>76 ubelong !0x0000d32d Z=0x%x +>>>>76 ubelong !0x0000d32d Z=%#x # Profile ID. MD5 fingerprinting method as defined in Internet RFC 1321. ->>>84 ubequad >0 \b, 0x%llx MD5 +>>>84 ubequad >0 \b, %#llx MD5 # reserved in older versions should be zero but also found CDCDCDCDCDCDCDCD -#>>100 ubequad x \b 0x%llx reserved +#>>100 ubequad x \b %#llx reserved # tag table # 6 <= tags count <= 43 #>>>128 ubelong >43 \b, %u tags @@ -191,8 +191,8 @@ >>>>132 default x \b, no copyright tag # 1st tag #>>>132 string x \b, 1st tag %.4s -#>>>136 ubelong x 0x%x offset -#>>>140 ubelong x 0x%x len +#>>>136 ubelong x %#x offset +#>>>140 ubelong x %#x len # 2nd tag,... # look also for profileDescriptionTag "desc" >>>132 search/508 desc diff --git a/magic/Magdir/iff b/magic/Magdir/iff index 9437dd68e129..8da0350dbfac 100644 --- a/magic/Magdir/iff +++ b/magic/Magdir/iff @@ -1,6 +1,6 @@ #------------------------------------------------------------------------------ -# $File: iff,v 1.14 2015/09/07 10:03:21 christos Exp $ +# $File: iff,v 1.17 2021/02/23 01:07:32 christos Exp $ # iff: file(1) magic for Interchange File Format (see also "audio" & "images") # # Daniel Quinlan (quinlan@yggdrasil.com) -- IFF was designed by Electronic @@ -41,8 +41,10 @@ >8 string ANIM \b, ANIM animation >8 string YAFA \b, YAFA animation >8 string SSA\ \b, SSA super smooth animation +>8 string FANT \b, Fantavision animation >8 string ACBM \b, ACBM continuous image >8 string FAXX \b, FAXX fax image +>8 string STFX \b, ST-Fax image # other formats >8 string FTXT \b, FTXT formatted text >8 string CTLG \b, CTLG message catalog @@ -51,7 +53,11 @@ >8 string PTCH \b, PTCH binary patch >8 string AMFF \b, AMFF AmigaMetaFile format >8 string WZRD \b, WZRD StormWIZARD resource ->8 string DOC\ \b, DOC desktop publishing document +>8 string DOC\040 \b, DOC desktop publishing document +>8 string SWRT \b, SWRT Final Copy/Writer document +>8 string WORD \b, ProWrite document +>8 string WTXT \b, WTXT Wordworth document +>8 string WOWO \b, WOWO Wordworth document >8 string WVQA \b, Westwood Studios VQA Multimedia, >>24 leshort x %d video frames, >>26 leshort x %d x diff --git a/magic/Magdir/images b/magic/Magdir/images index e6ebc5a030f2..6ce087255570 100644 --- a/magic/Magdir/images +++ b/magic/Magdir/images @@ -1,6 +1,6 @@ #------------------------------------------------------------------------------ -# $File: images,v 1.181 2020/05/30 23:49:03 christos Exp $ +# $File: images,v 1.205 2021/10/18 13:56:29 christos Exp $ # images: file(1) magic for image formats (see also "iff", and "c-lang" for # XPM bitmaps) # @@ -30,24 +30,29 @@ # Conflict with MPEG sequences. !:strength -40 # Prevent conflicts with CRI ADX. ->(2.S-2) belong !0x28632943 +#>(2.S-2) belong !0x28632943 +# above line does not work for rgb32_top_left_rle.tga +# skip some MPEG sequence *.vob and some CRI ADX audio with improbable interleave bits +>17 ubyte&0xC0 !0xC0 # skip more garbage like *.iso by looking for positive image type >>2 ubyte >0 # skip some compiled terminfo like xterm+tmux by looking for image type less equal 33 >>>2 ubyte <34 +# skip some MPEG sequence *.vob HV001T01.EVO winnicki.mpg with unacceptable alpha channel depth 11 +>>>>17 ubyte&0x0F !11 # skip arches.3200 , Finder.Root , Slp.1 by looking for low pixel depth 1 8 15 16 24 32 ->>>>16 ubyte 1 ->>>>>0 use tga-image ->>>>16 ubyte 8 ->>>>>0 use tga-image ->>>>16 ubyte 15 ->>>>>0 use tga-image ->>>>16 ubyte 16 ->>>>>0 use tga-image ->>>>16 ubyte 24 ->>>>>0 use tga-image ->>>>16 ubyte 32 ->>>>>0 use tga-image +>>>>>16 ubyte 1 +>>>>>>0 use tga-image +>>>>>16 ubyte 8 +>>>>>>0 use tga-image +>>>>>16 ubyte 15 +>>>>>>0 use tga-image +>>>>>16 ubyte 16 +>>>>>>0 use tga-image +>>>>>16 ubyte 24 +>>>>>>0 use tga-image +>>>>>16 ubyte 32 +>>>>>>0 use tga-image # display tga bitmap image information 0 name tga-image >2 ubyte <34 Targa image data @@ -88,6 +93,7 @@ # Y origin of image. 0 normal; positive for top >10 uleshort >0 +%d # Image descriptor: bits 3-0 give the alpha channel depth, bits 5-4 give direction +# alpha depth like: 1 8 >17 ubyte&0x0F >0 - %d-bit alpha # bits 5-4 give direction. normal bottom left >17 ubyte &0x20 - top @@ -146,7 +152,7 @@ # VersionLetter >>>>>&42 ubyte >0x20 \b%c # KeyColor ->>>>&468 ulelong >0 - keycolor 0x%8.8x +>>>>&468 ulelong >0 - keycolor %#8.8x # Denominator of Pixel ratio. 0~no pixel aspect >>>>&474 uleshort >0 # Numerator @@ -158,36 +164,47 @@ >>>>>&-4 uleshort >0 - gamma %d >>>>>&-2 uleshort x \b/%d # ColorOffset -#>>>>&480 ulelong x - col offset 0x%8.8x +#>>>>&480 ulelong x - col offset %#8.8x # StampOffset -#>>>>&484 ulelong x - stamp offset 0x%8.8x +#>>>>&484 ulelong x - stamp offset %#8.8x # ScanOffset -#>>>>&488 ulelong x - scan offset 0x%8.8x +#>>>>&488 ulelong x - scan offset %#8.8x # AttributesType -#>>>>&492 ubyte x - Attributes 0x%x +#>>>>&492 ubyte x - Attributes %#x ## EndOfTGA # PBMPLUS images +# URL: https://en.wikipedia.org/wiki/Netpbm # The next byte following the magic is always whitespace. -# strength is changed to try these patterns before "x86 boot sector" +# adding 65 to strength so that Netpbm images comes before "x86 boot sector" or +# "DOS/MBR boot sector" identified by ./filesystems 0 name netpbm >3 regex/s =[0-9]{1,50}\ [0-9]{1,50} Netpbm image data >>&0 regex =[0-9]{1,50} \b, size = %s x >>>&0 regex =[0-9]{1,50} \b %s 0 search/1 P1 ->0 regex/4 P1[\040\t\f\r\n] ->>0 use netpbm ->>0 string x \b, bitmap +# test for whitespace after 2 byte magic +>2 regex/2 [\040\t\f\r\n] +# skip DROID x-fmt-164-signature-id-583.pbm with ten 0 digits +>>3 string !000000000 +>>>0 use netpbm +>>>0 string x \b, bitmap !:strength + 65 !:mime image/x-portable-bitmap +!:ext pbm +# check for character # starting a comment line +>>>3 ubyte =0x23 +>>>>4 string x %s 0 search/1 P2 >0 regex/4 P2[\040\t\f\r\n] >>0 use netpbm >>0 string x \b, greymap !:strength + 65 -!:mime image/x-portable-greymap +# american spelling gray +!:mime image/x-portable-graymap +!:ext pgm 0 search/1 P3 >0 regex/4 P3[\040\t\f\r\n] @@ -195,6 +212,7 @@ >>0 string x \b, pixmap !:strength + 65 !:mime image/x-portable-pixmap +!:ext ppm 0 string P4 >0 regex/4 P4[\040\t\f\r\n] @@ -202,6 +220,7 @@ >>0 string x \b, rawbits, bitmap !:strength + 65 !:mime image/x-portable-bitmap +!:ext pbm 0 string P5 >0 regex/4 P5[\040\t\f\r\n] @@ -209,6 +228,7 @@ >>0 string x \b, rawbits, greymap !:strength + 65 !:mime image/x-portable-greymap +!:ext pgm 0 string P6 >0 regex/4 P6[\040\t\f\r\n] @@ -216,9 +236,24 @@ >>0 string x \b, rawbits, pixmap !:strength + 65 !:mime image/x-portable-pixmap +!:ext ppm/pnm -0 string P7 Netpbm PAM image file -!:mime image/x-portable-pixmap +# URL: https://en.wikipedia.org/wiki/Netpbm#PAM_graphics_format +# Reference: http://fileformats.archiveteam.org/wiki/Portable_Arbitrary_Map +# Update: Joerg Jenderek +0 string P7 +# skip DROID fmt-405-signature-id-589.pam by looking for character like New Line +>2 ubyte !0xAB +#>2 ubyte =0x0A +>>3 search/256/b WIDTH Netpbm PAM image file, size = +!:mime image/x-portable-arbitrarymap +!:ext pam +!:strength + 65 +>>>&1 string x %s +>>>3 search/256/b HEIGHT x +>>>>&1 string x %s +# at offset 2 a New Line character (0xA) should appear +>>>2 ubyte !0x0A \b, %#x at offset 2 instead new line # From: bryanh@giraffe-data.com (Bryan Henderson) 0 string \117\072 Solitaire Image Recorder format @@ -256,16 +291,32 @@ >10 byte x \b, version %d. >11 byte x \b%d +# Fujifilm RAF RAW image files with embedded JPEG data and compressed +# or uncompressed CFA RAW data. Byte order: Big Endian. +# URL: https://libopenraw.freedesktop.org/formats/raf/ +# Useful info from http://fileformats.archiveteam.org/wiki/Fujifilm_RAF. +# File extension: RAF +# Works for both the FinePix S2 Pro and the X-T3. Anybody have some more Fuji +# raw samples available? +# -- David Dyer-Bennet <dd-b@dd-b.net> 9-Sep-2021 +0 string FUJIFILMCCD-RAW Fujifilm RAF raw image data +!:mime image/x-fuji-raf +!:ext raf +>0x10 string x \b, format version %4.4s +>0x1C string x \b, camera %s + # Tag Image File Format, from Daniel Quinlan (quinlan@yggdrasil.com) # The second word of TIFF files is the TIFF version number, 42, which has # never changed. The TIFF specification recommends testing for it. 0 string MM\x00\x2a TIFF image data, big-endian !:strength +70 !:mime image/tiff +!:ext tif,tiff >(4.L) use \^tiff_ifd 0 string II\x2a\x00 TIFF image data, little-endian !:mime image/tiff !:strength +70 +!:ext tif,tiff >(4.l) use tiff_ifd 0 name tiff_ifd @@ -312,7 +363,7 @@ >>>8 leshort 0x8798 \bJPEG2000 >>>8 leshort 0x8799 \bNikon NEF Compressed >>>8 default x ->>>>8 leshort x \b(unknown 0x%x) +>>>>8 leshort x \b(unknown %#x) >>>12 use tiff_entry >0 leshort 0x106 \b, PhotometricIntepretation= >>8 clear x @@ -325,7 +376,7 @@ >>8 leshort 6 \bYCbCr >>8 leshort 8 \bCIELab >>8 default x ->>>8 leshort x \b(unknown=0x%x) +>>>8 leshort x \b(unknown=%#x) >>12 use tiff_entry # FillOrder >0 leshort 0x10a @@ -410,7 +461,7 @@ >0 leshort 0x8825 \b, GPS-Data >>12 use tiff_entry -#>0 leshort x \b, unknown=0x%x +#>0 leshort x \b, unknown=%#x #>>12 use tiff_entry 0 string MM\x00\x2b Big TIFF image data, big-endian @@ -478,6 +529,7 @@ !:strength +80 !:mime image/gif !:apple 8BIMGIFf +!:ext gif >4 string 7a \b, version 8%s, >4 string 9a \b, version 8%s, >6 leshort >0 %d x @@ -506,7 +558,7 @@ # http://www.nationalarchives.gov.uk/pronom/fmt/930 0 search/256/bc id=imagemagick # skip bad ASCII text by following new line~0x0A or space~0x20 character -#>&0 ubyte x \b, next character 0x%x +#>&0 ubyte x \b, next character %#x # called by TriD ImageMagick Machine independent File Format bitmap >&0 ubyte&0xD5 0 MIFF image data # https://reposcope.com/mimetype/image/miff @@ -580,18 +632,31 @@ 0 string Sfff structured fax file # From: Joerg Jenderek <joerg.jen.der.ek@gmx.net> -# most files with the extension .EPA and some with .BMP +# URL: http://fileformats.archiveteam.org/wiki/Award_BIOS_logo +# Note: verified by XnView command `nconvert -fullinfo *.EPA` 0 string \x11\x06 Award BIOS Logo, 136 x 84 !:mime image/x-award-bioslogo +!:ext epa 0 string \x11\x09 Award BIOS Logo, 136 x 126 !:mime image/x-award-bioslogo +!:ext epa +# https://telparia.com/fileFormatSamples/image/epa/IO.EPA +# Note: by bitmap-awbm-v1x1009.trid.xml called "Award BIOS logo bitmap (128x126) (v1)" +# verified by RECOIL `recoil2png -o tmp.png IO.EPA; file tmp.png` +0 string \x10\x09 Award BIOS Logo, 128 x 126 +!:mime image/x-award-bioslogo +!:ext epa #0 string \x07\x1f BIOS Logo corrupted? # http://www.blackfiveservices.co.uk/awbmtools.shtml # http://biosgfx.narod.ru/v3/ # http://biosgfx.narod.ru/abr-2/ 0 string AWBM ->4 leshort <1981 Award BIOS bitmap -!:mime image/x-award-bmp +# Note: by bitmap-awbm.trid.xml called "Award BIOS logo bitmap (v2)" +>4 leshort <1981 Award BIOS Logo, version 2 +#>4 leshort <1981 Award BIOS bitmap +!:mime image/x-award-bioslogo2 +#!:mime image/x-award-bmp +!:ext epa/bmp # image width is a multiple of 4 >>4 leshort&0x0003 0 >>>4 leshort x \b, %d @@ -615,7 +680,7 @@ 0 leshort 40 # skip bad samples like GAME by looking for valid number of color planes >12 uleshort 1 Device independent bitmap graphic -!:mime image/bmp +!:mime image/x-ms-bmp !:apple ????BMPp !:ext dib >>4 lelong x \b, %d x @@ -635,12 +700,104 @@ #>>32 ulelong >0 \b, %u colors # number of important colors used, or 0 when every color is important >>36 ulelong >0 \b, %u important colors +# From: Joerg Jenderek +# URL: http://fileformats.archiveteam.org/wiki/VBM_(VDC_BitMap) +# Reference: http://csbruce.com/cbm/postings/csc19950906-1.txt +# http://mark0.net/download/triddefs_xml.7z +# defs/b/bitmap-vbm.trid.xml +# defs/b/bitmap-vbm-v3.trid.xml +# Note: called "VDC BitMap" by TrID +# verified by RECOIL `recoil2png -o tmp.png coke_can.vbm; file tmp.png` +# begin with a signature of 'B' 'M' 0xCB, followed by a version byte 2 or 3 +# Similar to the unrelated Windows BMP format +# check for VDC bitmap and then display image dimension and version +0 name bitmap-vbm +>2 ubyte 0xCB VDC bitmap +!:mime image/x-commodore-vbm +# http://recoil.sourceforge.net/formats.html +!:ext bm/vbm +# the VBM format version number: 2 or 3 +>>3 ubyte x \b, version %u +# width of the image in Hi/Lo format +>>4 ubeshort x \b, %u +# height of the image +>>6 ubeshort x x %u +# version 3 images have the following additional header information +>>3 ubyte =3 +# data-encoding type: 0~uncompressed 1~RLE-compressed +>>>8 ubyte 0 \b, uncompressed +>>>8 ubyte 1 \b, RLE-compressed +# byte code for general RLE repetitions +#>>>9 ubyte x \b, RLE repetition code 0x%x +# reserved := 0 +#>>>14 short >0 \b, reserved 0x%x +# length of comment text; 0~no comment text +#>>>16 ubeshort >0 \b, comment length %u +>>>16 pstring/H >0 \b, comment "%s" +# 0 string BM ->14 leshort 12 PC bitmap, OS/2 1.x format -!:mime image/x-ms-bmp +# check for magic and version 2 of VDC bitmap or BMP with cbSize=715=CB02 +>2 beshort 0xCB02 +>>6 short =0 +>>>0 use bitmap-bmp +# VDC bitmap height or maybe a few OS/2 BMP with nonzero "hotspot coordinates" +>>6 short !0 +>>>0 use bitmap-vbm +# check for magic and version 3 of VDC bitmap or BMP with cbSize=971=CB03 +>2 beshort 0xCB03 +# check for reserved value (=0) of VDC bitmap +>>14 short =0 +>>>0 use bitmap-vbm +# BMP with cbSize=????03CBh and dib header size != 0 +>>14 short !0 +>>>0 use bitmap-bmp +# cbSize is size of header or file size of Windows BMP bitmap +>2 default x +>>0 use bitmap-bmp +0 name bitmap-bmp +>14 lelong 12 PC bitmap, OS/2 1.x format +!:mime image/bmp +!:ext bmp >>18 leshort x \b, %d x >>20 leshort x %d ->14 leshort 64 PC bitmap, OS/2 2.x format +# number of color planes (must be 1) +#>>22 leshort !1 \b, %u color planes +# number of bits per pixel (color depth); found 4 8 +>>24 leshort x x %d +# x, y coordinates of the hotspot +>>6 uleshort >0 \b, hotspot %ux +>>>8 uleshort x \b%u +# cbSize; size of file or header like 1Ah 228C8h +>>2 ulelong x \b, cbSize %u +#>>2 ulelong x \b, cbSize 0x%8.8x +# offBits; offset to bitmap data like: +>>10 ulelong x \b, bits offset %u +# http://fileformats.archiveteam.org/wiki/BMP#OS.2F2_BMP_2.0 no examples found +>14 ulelong 48 PC bitmap, OS/2 2.x format (DIB header size=48) +>14 ulelong 24 PC bitmap, OS/2 2.x format (DIB header size=24) +# http://entropymine.com/jason/bmpsuite/bmpsuite/q/pal8os2v2-16.bmp +# Note: by bitmap-bmp-v2o.trid.xml called "Windows Bitmap (v2o)" +>14 ulelong 16 PC bitmap, OS/2 2.x format (DIB header size=16) +!:mime image/bmp +!:apple ????BMPp +!:ext bmp +# image width and height fields are unsigned integers for OS/2 +>>18 ulelong x \b, %u x +>>22 ulelong x %u +# number of bits per pixel (color depth); found 8 +>>28 uleshort >1 x %u +# x, y coordinates of the hotspot +>>6 uleshort >0 \b, hotspot %ux +>>>8 uleshort x \b%u +# number of color planes (must be 1) +#>>26 uleshort >1 \b, %u color planes +# cbSize; size of file like: 241E +>>2 ulelong x \b, cbSize %u +#>>2 ulelong x \b, cbSize 0x%x +# offBits; offset to bitmap data like: 41E +>>10 ulelong x \b, bits offset %u +#>>10 ulelong x \b, bits offset 0x%x +>14 lelong 64 PC bitmap, OS/2 2.x format !:mime image/bmp !:apple ????BMPp !:ext bmp @@ -655,30 +812,53 @@ >>26 uleshort >1 \b, %u color planes # cbSize; size of file or headers >>2 ulelong x \b, cbSize %u -#>>2 ulelong x \b, cbSize 0x%x +# BMP with cbSize 000002CBh=715 or 000003CBh=971 maybe misinterpreted as VDC bitmap +#>>2 ulelong x \b, cbSize %#x # offBits; offset to bitmap data like 56h 5Eh 8Eh 43Eh >>10 ulelong x \b, bits offset %u -#>>10 ulelong x \b, bits offset 0x%x -#>>(10.l) ubequad !0 \b, bits 0x%16.16llx +#>>10 ulelong x \b, bits offset %#x +#>>(10.l) ubequad !0 \b, bits %#16.16llx # BITMAPV2INFOHEADER adds RGB bit masks ->14 leshort 52 PC bitmap, Adobe Photoshop +>14 lelong 52 PC bitmap, Adobe Photoshop !:mime image/bmp !:apple ????BMPp !:ext bmp >>18 lelong x \b, %d x >>22 lelong x %d x +# number of bits per pixel (color depth); found 16 32 >>28 leshort x %d +# x, y coordinates of the hotspot; should be zero for Windows variant +>>6 uleshort >0 \b, hotspot %ux +>>>8 uleshort x \b%u +# cbSize; size of file like: 14A 7F42 +>>2 ulelong x \b, cbSize %u +#>>2 ulelong x \b, cbSize 0x%x +# offBits; offset to bitmap data like: 42h +>>10 ulelong x \b, bits offset %u +#>>10 ulelong x \b, bits offset 0x%x # BITMAPV3INFOHEADER adds alpha channel bit mask ->14 leshort 56 PC bitmap, Adobe Photoshop with alpha channel mask +>14 lelong 56 PC bitmap, Adobe Photoshop with alpha channel mask !:mime image/bmp !:apple ????BMPp !:ext bmp >>18 lelong x \b, %d x >>22 lelong x %d x +# number of bits per pixel (color depth); found 16 32 >>28 leshort x %d ->14 leshort 40 +# x, y coordinates of the hotspot; should be zero for Windows variant +>>6 uleshort >0 \b, hotspot %ux +>>>8 uleshort x \b%u +# cbSize; size of file like: 4E 7F46 131DE 14046h +>>2 ulelong x \b, cbSize %u +#>>2 ulelong x \b, cbSize 0x%x +# offBits; offset to bitmap data like: 46h +>>10 ulelong x \b, bits offset %u +#>>10 ulelong x \b, bits offset 0x%x +>14 lelong 40 # jump 4 bytes before end of file/header to skip fmt-116-signature-id-118.dib ->>(2.l-4) ulong x PC bitmap, Windows 3.x format +# broken for large bitmaps +#>>(2.l-4) ulong x PC bitmap, Windows 3.x format +>>14 lelong 40 PC bitmap, Windows 3.x format !:mime image/bmp !:apple ????BMPp >>>18 lelong x \b, %d x @@ -690,7 +870,16 @@ # compression method 2~RLE 4-bit/pixel implies also extension rle >>>>30 ulelong 2 x !:ext bmp/rle ->>>>30 default x x +# not RLE compressed and not 320x400 dimension +>>>>30 default x +# "small" dimensions like: 14x15 15x16 16x14 16x16 32x32 +# https://en.wikipedia.org/wiki/Favicon +>>>>>18 ulequad&0xffFFffC0ffFFffC0 =0 x +# https://www.politi-kdigital.de/favicon.ico +# http://forum.rpc1.org/favicon.ico +!:ext bmp/ico +# "big" dimensions > 63 +>>>>>18 default x x !:ext bmp # number of bits per pixel (color depth); found 1 2 4 8 16 24 32 >>>28 leshort x %d @@ -713,26 +902,45 @@ >>>50 ulelong >0 \b, %u important colors # cbSize; often size of file >>>2 ulelong x \b, cbSize %u -#>>>2 ulelong x \b, cbSize 0x%x +#>>>2 ulelong x \b, cbSize %#x # offBits; offset to bitmap data like 36h 76h BEh 236h 406h 436h 4E6h >>>10 ulelong x \b, bits offset %u -#>>>10 ulelong x \b, bits offset 0x%x -#>>>(10.l) ubequad !0 \b, bits 0x%16.16llxd ->14 leshort 124 PC bitmap, Windows 98/2000 and newer format -!:mime image/x-ms-bmp ->>18 lelong x \b, %d x ->>22 lelong x %d x ->>28 leshort x %d ->14 leshort 108 PC bitmap, Windows 95/NT4 and newer format -!:mime image/x-ms-bmp +#>>>10 ulelong x \b, bits offset %#x +#>>>(10.l) ubequad !0 \b, bits %#16.16llxd +>14 lelong 124 PC bitmap, Windows 98/2000 and newer format +!:mime image/bmp +!:ext bmp >>18 lelong x \b, %d x >>22 lelong x %d x +# color planes; must be 1 +#>>>26 uleshort >1 \b, %u color planes +# number of bits per pixel (color depth); found 4 8 16 24 32 1 (fmt-119-signature-id-121.bmp) 0 (rgb24jpeg.bmp rgb24png.bmp) >>28 leshort x %d ->14 leshort 128 PC bitmap, Windows NT/2000 format -!:mime image/x-ms-bmp +# x, y coordinates of the hotspot; should be zero for Windows variant +>>6 leshort >0 \b, hotspot %ux +>>>8 leshort x \b%u +# cbSize; size of file like: 8E AA 48A 999 247A 4F02 7F8A 3F88E B216E 1D4C8A 100008A +>>2 ulelong x \b, cbSize %u +#>>2 ulelong x \b, cbSize 0x%x +# offBits; offset to bitmap data like: 8A 47A ABABABAB (fmt-119-signature-id-121.bmp) +>>10 ulelong x \b, bits offset %u +#>>10 ulelong x \b, bits offset 0x%x +>14 lelong 108 PC bitmap, Windows 95/NT4 and newer format +!:mime image/bmp +!:ext bmp >>18 lelong x \b, %d x >>22 lelong x %d x +# number of bits per pixel (color depth); found 8 24 32 >>28 leshort x %d +# x, y coordinates of the hotspot; should be zero for Windows variant +>>6 leshort >0 \b, hotspot %ux +>>>8 leshort x \b%u +# cbSize; size of file like: 82 8A 9A 9F86 1E07A 3007A 88B7A C007A +>>2 ulelong x \b, cbSize %u +#>>2 ulelong x \b, cbSize 0x%x +# offBits; offset to bitmap data like: 7A 7E 46A +>>10 ulelong x \b, bits offset %u +#>>10 ulelong x \b, bits offset 0x%x # Update: Joerg Jenderek # URL: http://fileformats.archiveteam.org/wiki/OS/2_Icon # Reference: http://www.fileformat.info @@ -752,7 +960,7 @@ >>8 uleshort x \b%u # offBits; offset in bytes to the beginning of the bit-map pel data like 20h >>10 ulelong x \b, bits offset %u -#>>(10.l) ubequad x \b, bits 0x%16.16llx +#>>(10.l) ubequad x \b, bits %#16.16llx #0 string PI PC pointer image data #0 string CI PC color icon data 0 string CI @@ -790,16 +998,24 @@ #>>2 ulelong x \b, cbSize %x # offBits; offset to bitmap data (pixel array) like E4h 3Ah 66h 6Ah 33Ah 4A4h >>10 ulelong x \b, bits offset %u -#>>10 ulelong x \b, bits offset 0x%x -#>>(10.l) ubequad !0 \b, bits 0x%16.16llx +#>>10 ulelong x \b, bits offset %#x +#>>(10.l) ubequad !0 \b, bits %#16.16llx # dib header size: 12~Ch~OS/2 1.x 64~40h~OS/2 2.x #>>14 ulelong x \b, dib header size %u #0 string CP PC color pointer image data # URL: http://fileformats.archiveteam.org/wiki/OS/2_Pointer # Reference: http://www.fileformat.info/format/os2bmp/egff.htm 0 string CP +# skip many Corel Photo-Paint image "CPT9FILE" by checking for positive bits offset +>10 ulelong >0 # skip CPU-Z Report by checking for valid dib header sizes 12 or 64 ->14 ulelong <65 OS/2 +>>14 ulelong =12 +>>>0 use os2-ptr +>>14 ulelong =64 +>>>0 use os2-ptr +# display information of OS/2 pointer bitmaps +0 name os2-ptr +>14 ulelong x OS/2 # http://extension.nirsoft.net/PTR !:mime image/x-ibm-pointer !:ext ptr @@ -831,8 +1047,8 @@ #>>2 ulelong x \b, cbSize %x # offBits; offset to bitmap data (pixel array) like 6Ah A4h E4h 4A4h >>10 ulelong x \b, bits offset %u -#>>10 ulelong x \b, bits offset 0x%x -#>>(10.l) ubequad !0 \b, bits 0x%16.16llx +#>>10 ulelong x \b, bits offset %#x +#>>(10.l) ubequad !0 \b, bits %#16.16llx # dib header size: 12~Ch~OS/2 1.x 64~40h~OS/2 2.x #>>14 ulelong x \b, dib header size %u # Conflicts with other entries [BABYL] @@ -846,11 +1062,11 @@ #!:apple ????BMPf # cbSize; size of header like 28h 5Ch >>2 ulelong x \b, cbSize %u -#>>2 ulelong x \b, cbSize 0x%x +#>>2 ulelong x \b, cbSize %#x # offNext; offset to data like 0 48h F2h 4Eh 64h C6h D2h D6h DAh E6h EAh 348h >>6 ulelong >0 \b, data offset %u -#>>6 ulelong >0 \b, data offset 0x%x -#>>(6.l) ubequad !0 \b, data 0x%16.16llx +#>>6 ulelong >0 \b, data offset %#x +#>>(6.l) ubequad !0 \b, data %#16.16llx # dimensions of the intended device like 640 x 480 for VGA or 1024 x 768 >>10 uleshort >0 \b, display %u >>>12 uleshort >0 x %u @@ -1025,6 +1241,22 @@ # https://www.atarimax.com/jindroush.atari.org/afmtatr.html 0 leshort 0x0296 Atari ATR image +# From: Joerg Jenderek +# URL: http://fileformats.archiveteam.org/wiki/ImageLab/PrintTechnic +# Reference: http://mark0.net/download/triddefs_xml.7z/defs/b/bitmap-b_w.trid.xml +# Note: called "ImageLab bitmap" by TrID +# verfied by XnView `nconvert -fullinfo "MAEDCHEN.B&W"` +0 string B&W256 ImageLab bitmap +!:mime image/x-ilab +# https://www.xnview.com/de/image_formats/ +# GRR: add char & inside parse_ext in ../../src/apprentice.c to avoid in file version 5.40 error like: +# Magdir\images, 1090: Warning: EXTENSION type ` b_w/b&w' has bad char '&' +!:ext b_w/b&w +# Width +>6 ubeshort x \b, %u +# Height +>8 ubeshort x x %u + # XXX: # This is bad magic 0x5249 == 'RI' conflicts with RIFF and other # magic. @@ -1082,30 +1314,63 @@ # Adobe Photoshop # From: Asbjoern Sloth Toennesen <asbjorn@lila.io> -0 string 8BPS Adobe Photoshop Image +# URL: http://fileformats.archiveteam.org/wiki/PSD +# Reference: https://www.adobe.com/devnet-apps/photoshop/fileformatashtml/ +# Note: verfied by XnView `nconvert -fullinfo *.psd *.psb *.pdd` +# and ImageMagick `identify -verbose *.pdd` +0 string 8BPS +# skip DROID x-fmt-92-signature-id-277.psd by checking valid width +>18 belong >0 Adobe Photoshop !:mime image/vnd.adobe.photoshop ->4 beshort 2 (PSB) ->18 belong x \b, %d x ->14 belong x %d, ->24 beshort 0 bitmap ->24 beshort 1 grayscale ->>12 beshort 2 with alpha ->24 beshort 2 indexed ->24 beshort 3 RGB ->>12 beshort 4 \bA ->24 beshort 4 CMYK ->>12 beshort 5 \bA ->24 beshort 7 multichannel ->24 beshort 8 duotone ->24 beshort 9 lab ->12 beshort > 1 ->>12 beshort x \b, %dx ->12 beshort 1 \b, ->22 beshort x %d-bit channel ->12 beshort > 1 \bs +!:apple ????8BPS +# version: always equal to 1, but 2 for PSB +>>4 beshort 1 +# URL: http://fileformats.archiveteam.org/wiki/PhotoDeluxe +# EXTRAS/PHOTOS/DEMOPIX/ORIGINAL.PDD +>>>34 search/0xC0d7 PHUT Image (PhotoDeluxe) +!:ext pdd +>>>34 default x Image +!:ext psd +# URL: http://fileformats.archiveteam.org/wiki/PSB +>>4 beshort 2 Image (PSB) +!:ext psb +# width in pixels: 1-30000 1-300000 for PSB +>>18 belong x \b, %d x +>>14 belong x %d, +# The color mode; 0~Bitmap 1~Grayscale 2~Indexed 3~RGB 4~CMYK 7~Multichannel 9~Duotone 9~Lab +>>24 beshort 0 bitmap +>>24 beshort 1 grayscale +# the number of channels; range is 1 to 56 +>>>12 beshort 2 with alpha +>>24 beshort 2 indexed +>>24 beshort 3 RGB +>>>12 beshort 4 \bA +>>24 beshort 4 CMYK +>>>12 beshort 5 \bA +>>24 beshort 7 multichannel +>>24 beshort 8 duotone +>>24 beshort 9 lab +>>12 beshort > 1 +>>>12 beshort x \b, %dx +>>12 beshort 1 \b, +>>22 beshort x %d-bit channel +>>12 beshort > 1 \bs +# 6 reserved bytes; must be zero, but spaces inside ImageMagick input.psd +# https://download.imagemagick.org/ImageMagick/download/ImageMagick-7.0.11-11.zip +# ImageMagick-7.0.11-11\PerlMagick\t\input.psd +>>6 bequad&0xFFffFFffFFff0000 !0 \b, at offset 6 +>>>6 belong x 0x%8.8x +>>>6 beshort x \b%4.4x # XV thumbnail indicator (ThMO) +# URL: https://en.wikipedia.org/wiki/Xv_(software) +# Reference: http://fileformats.archiveteam.org/wiki/XV_thumbnail +# Update: Joerg Jenderek 0 string P7\ 332 XV thumbnail image data +#0 string P7\ 332 XV "thumbnail file" (icon) data +!:mime image/x-xv-thumbnail +# thumbnail .xvpic/foo.bar for graphic foo.bar +!:ext p7/gif/tif/xpm/jpg # NITF is defined by United States MIL-STD-2500A 0 string NITF National Imagery Transmission Format @@ -1211,10 +1476,6 @@ 0 string Paint\ Shop\ Pro\ Image\ File Paint Shop Pro Image File -# "thumbnail file" (icon) -# descended from "xv", but in use by other applications as well (Wolfram Kleff) -0 string P7\ 332 XV "thumbnail file" (icon) data - # taken from fkiss: (<yav@mte.biglobe.ne.jp> ?) 0 string KiSS KISS/GS >4 byte 16 color @@ -1273,7 +1534,22 @@ # DCX is multi-page PCX, using a simple header of up to 1024 # offsets for the respective PCX components. # From: Joerg Wunsch <joerg_wunsch@uriah.heep.sax.de> -0 lelong 987654321 DCX multi-page PCX image data +# Update: Joerg Jenderek +# URL: http://fileformats.archiveteam.org/wiki/DCX +0 lelong 987654321 DCX multi-page +# http://www.nationalarchives.gov.uk/pronom/x-fmt/348 +!:mime image/x-dcx +!:ext dcx +# The first file offset usually starts at file offset 0x1004 +# print 1 space after 0x100? offset and then handles PCX images by ./images +>4 lelong x \b, at %#x +>(4.l) indirect x +# possible 2nd PCX image +#>8 lelong !0 \b, at %#x +#>>(8.l) indirect x +# possible 3rd PCX image +#>12 lelong !0 \b, at %#x +#>>(12.l) indirect x # Simon Walton <simonw@matteworld.com> # Kodak Cineon format for scanned negatives @@ -1383,36 +1659,72 @@ >768 beshort 7 bottom to top/right to left # From: Tom Hilinski <tom.hilinski@comcast.net> -# https://www.unidata.ucar.edu/packages/netcdf/ +# https://www.unidata.ucar.edu/software/netcdf/ 0 string CDF\001 NetCDF Data Format data # 64-bit offset netcdf Classic https://www.unidata.ucar.edu/software/netcdf/docs/file_format_specifications 0 string CDF\002 NetCDF Data Format data (64-bit offset) -#----------------------------------------------------------------------- +# From: Michael Liu +# https://en.wikipedia.org/wiki/Common_Data_Format +0 belong 0xCDF30001 Common Data Format (Version 3 or later) data +!:mime application/x-cdf + +0 belong 0xCDF26002 Common Data Format (Version 2.6 or 2.7) data +!:mime application/x-cdf + +0 belong 0x0000FFFF Common Data Format (Version 2.5 or earlier) data +!:mime application/x-cdf + # Hierarchical Data Format, used to facilitate scientific data exchange # specifications at http://hdf.ncsa.uiuc.edu/ +# URL: http://fileformats.archiveteam.org/wiki/HDF +# https://en.wikipedia.org/wiki/Hierarchical_Data_Format +# Reference: https://portal.hdfgroup.org/download/attachments/52627880/HDF5_File_Format_Specification_Version-3.0.pdf 0 belong 0x0e031301 Hierarchical Data Format (version 4) data !:mime application/x-hdf +!:ext hdf/hdf4/h4 0 string \211HDF\r\n\032\n Hierarchical Data Format (version 5) data -!:mime application/x-hdf -512 string \211HDF\r\n\032\n Hierarchical Data Format (version 5) with 512 bytes user block -!:mime application/x-hdf +#!:mime application/x-hdf +!:mime application/x-hdf5 +!:ext h5/hdf5/hdf/he5 +512 string \211HDF\r\n\032\n +# skip Matlab v5 mat-file testhdf5_7.4_GLNX86.mat handled by ./mathematica +>0 string !MATLAB Hierarchical Data Format (version 5) with 512 bytes user block +#!:mime application/x-hdf +!:mime application/x-hdf5 +!:ext h5/hdf5/hdf/he5 1024 string \211HDF\r\n\032\n Hierarchical Data Format (version 5) with 1k user block -!:mime application/x-hdf +#!:mime application/x-hdf +!:mime application/x-hdf5 +!:ext h5/hdf5/hdf/he5 2048 string \211HDF\r\n\032\n Hierarchical Data Format (version 5) with 2k user block -!:mime application/x-hdf +#!:mime application/x-hdf +!:mime application/x-hdf5 +!:ext h5/hdf5/hdf/he5 4096 string \211HDF\r\n\032\n Hierarchical Data Format (version 5) with 4k user block -!:mime application/x-hdf - +#!:mime application/x-hdf +!:mime application/x-hdf5 +!:ext h5/hdf5/hdf/he5 # From: Tobias Burnus <burnus@net-b.de> # Xara (for a while: Corel Xara) is a graphic package, see # http://www.xara.com/ for Windows and as GPL application for Linux 0 string XARA\243\243 Xara graphics file +# From: Joerg Jenderek +# URL: http://fileformats.archiveteam.org/wiki/Corel_Gallery +# Reference: http://mark0.net/download/triddefs_xml.7z/defs/b/bmf-corel.trid.xml +# Note: called "Corel Binary Material Format" by TrID and +# "Corel Flow" by XnView +0 string @CorelBMF\n\rCorel\040Corporation Corel GALLERY Clipart +!:mime image/x-corel-bmf +!:ext bmf + # https://www.cartesianinc.com/Tech/ +# Reference: http://fileformats.archiveteam.org/wiki/Cartesian_Perceptual_Compression 0 string CPC\262 Cartesian Perceptual Compression image !:mime image/x-cpi +!:ext cpi/cpc # From Albert Cahalan <acahalan@gmail.com> # puredigital used it for the CVS disposable camcorder @@ -1600,7 +1912,7 @@ >>101 beshort&0xf0 0x60 \bNCOMPONENT >>101 beshort&0xf0 0x70 \bRGB >>101 beshort&0xf0 0x80 \bRGBE ->>101 beshort&0xf0 >0x80 \b(reserved 0x%x) +>>101 beshort&0xf0 >0x80 \b(reserved %#x) # From: Johan van der Knijff <johan.vanderknijff@kb.nl> # @@ -1624,25 +1936,75 @@ >>8 string x \b, "%4.4s" type # TIM images -0 lelong 0x00000010 TIM image, ->4 lelong 0x8 4-Bit, ->4 lelong 0x9 8-Bit, ->4 lelong 0x2 15-Bit, ->4 lelong 0x3 24-Bit, ->4 lelong &8 ->>(8.l+12) leshort x Pixel at (%d, ->>(8.l+14) leshort x \b%d) ->>(8.l+16) leshort x Size=%dx ->>(8.l+18) leshort x \b%d, ->>4 lelong 0x8 16 CLUT Entries at ->>4 lelong 0x9 256 CLUT Entries at ->>12 leshort x (%d, ->>14 leshort x \b%d) ->4 lelong ^8 ->>12 leshort x Pixel at (%d, ->>14 leshort x \b%d) ->>16 leshort x Size=%dx ->>18 leshort x \b%d +# URL: http://fileformats.archiveteam.org/wiki/TIM_(PlayStation_graphics) +# Reference: https://mrclick.zophar.net/TilEd/download/timgfx.txt +# Update: Joerg Jenderek +# Note: called as "PSX TIM *bpp bitmap" by bitmap-tim-*.trid.xml +# verified as "TIM PSX" by XnView `nconvert -fullinfo *.tim` and +# by RECOIL `recoil2png -o TMP.PNG input.tim; file TMP.PNG` and often +# as "PSX TIM" by ImageMagick version 7.1.0-10 command `identify *.tim` +# here signed integers are used but according to Kaitai unsigned +0 lelong 0x00000010 +# 32 Flag bits *cttt; c~CLUT flag t~type 000~4BPP 001~8BPP 010~16BPP 011~24BPP 100~Mixed +#>4 lelong x FLAGS=%#x +# 12+Size of CLUT (2Ch for 4BPP; 20Ch 40Ch 60Ch 80Ch C0Ch for 8BPP) or +# +image data size (800Ch 2000Ch 2580C for 16BPP) (02000003h for dBase memo test.dbt) +#>8 lelong x \b, 12+CLUT or data size=%#8.8x +# CLUT or data size remainder is 12 (Ch), but 03 for dBase memo test.dbt +#>8 ubyte&0x0F =0x0C \b, SIZE REMAINDER IS 12 +# skip dBase III memo test.dbt with invalid flags 22D10189h +>4 lelong&0xffFFffF0 =0 Sony PlayStation PSX image, +# file (version 5.40) labeled the above entry as "TIM image" +!:mime image/x-sony-tim +!:ext tim +#>>4 lelong&0x00000007 x \b, BPP~%u +# 4BPP and 8BPP examples exist with CLUT or without CLUT +>>4 lelong&0x07 0x0 4-Bit, +>>4 lelong&0x07 0x1 8-Bit, +# 16BPP and 24BPP examples have no CLUT +>>4 lelong 0x2 15-Bit, +>>4 lelong 0x3 24-Bit, +# no example +>>4 lelong&0x07 0x4 Mixed-Bit, +# CLUT flag set +>>4 lelong &8 +# 12 + size of CLUT like: 1000Ch 800Ch 400Ch 40Ch and 2FEh (KAGE.TIM) +#>>>(8.l+8) lelong x \b, 12+CLUT SIZE=%#8.8x +>>>(8.l+12) leshort x Pixel at (%d, +>>>(8.l+14) leshort x \b%d) Size= +# image width (to get actual width multiply by 4 for 4BPP and by 2 for 8BPP) +>>>>4 lelong 0x8 +>>>>>(8.l+16) leshort*4 x \b%d +>>>>4 lelong 0x9 +>>>>>(8.l+16) leshort*2 x \b%d +# image height like: 32 64 128 144 160 208 256 +>>>(8.l+18) leshort x \bx%d, +>>>4 lelong 0x8 16 CLUT Entries at +>>>4 lelong 0x9 256 CLUT Entries at +>>>12 leshort x (%d, +>>>14 leshort x \b%d) +# no Color LookUp Table (CLUT) +>>4 lelong ^8 +# image orgin X Y +>>>12 leshort x Pixel at (%d, +>>>14 leshort x \b%d) Size= +# real image width = multiply by 4 (4BPP) 2 (8BPP) 1 (16BPP) 2/3 (24BPP) +>>>>4 lelong 0x0 +>>>>>16 leshort*4 x \b%d +>>>>4 lelong 0x1 +>>>>>16 leshort*2 x \b%d +>>>>4 lelong 0x2 +>>>>>16 leshort x \b%d +>>>>4 lelong 0x3 +# GRR: NOT working +#>>>>>16 leshort*2/3 x \b%d +>>>>>16 leshort x \b2/3*%d +# mixed format width not explained! +>>>>4 lelong 0x4 +>>>>>16 leshort x \b%d +# image height like: 64 240 256 +>>>18 leshort x \bx%d +# TIM image data # MDEC streams 0 lelong 0x80010160 MDEC video stream, @@ -1984,8 +2346,9 @@ # Supercompression enum. 0 name khronos-ktx2-supercompression ->0 lelong 1 Basis Universal +>0 lelong 1 BasisLZ >0 lelong 2 Zstandard +>0 lelong 3 ZLIB # Vulkan format identifier. # NOTE: Formats prohibited from KTX2 are commented out. @@ -2567,3 +2930,134 @@ >4 byte 0 Apple QuickTake 150 Raw Image >4 byte >0 Apple QuickTake 200 Raw Image >0 use quicktake + +# From: Joerg Jenderek +# URL: http://fileformats.archiveteam.org/wiki/Corel_Photo-Paint_image +# Reference: http://blog.argasinski.eu/wp-content/uploads/2011/08/cpt-specification-0.01.pdf +0 string CPT +>4 string FILE Corel Photo-Paint image, version +# version like 7, 9 or 8 +>>3 ubyte x %c, +!:mime image/x-corel-cpt +!:ext cpt +# if blocks_array_offset available jump blockNumber*8 bytes +>>0x34 ulelong >0 +>>>(0x28.l*8) ubyte x +# jump additional stored blocks_array_offset bytes forward to object block +>>>>&(0x34.l-1) ulelong x %u +# object height in pixels +>>>>>&0 ulelong x x %u +# if no blocks_array_offset available jump blockNumber*8 bytes +>>0x34 ulelong =0 +>>>(0x28.l*8) ubyte x +# jump additional 0x13C bytes forward to object block +>>>>&0x13B ulelong x %u +>>>>>&0 ulelong x x %u +# image color model used +>>0x8 ulelong x +>>>0x8 ulelong 0x1 RGB 24 bits +>>>0x8 ulelong 0x3 CMYK 24 bits +>>>0x8 ulelong 0x5 greyscale 8 bits +>>>0x8 ulelong 0x6 black and white 1 bit +>>>0x8 ulelong 0xA RGB 8 bits +# palette_length number of colors * 3 in case of 8-bit RGB paletted image +# 0 otherwise. Allowed values: 0 or [1..256] * 3 +#>>0xC ulelong >0 \b, palette length %u +>>>>0xC ulelong/3 <256 \b, %u colors +>>>0x8 ulelong 0xB LAB +>>>0x8 ulelong 0xC RGB 48 bits +>>>0x8 ulelong 0xE greyscale 16 bits +# this should not happen +>>>0x8 default x color model +>>>>0x8 ulelong x %#x +# bit 1 in CPT file flags: UCS-2 file comment present +>>0x31 ubyte &0x02 +# look for comment marker +>>>0x100 search/0xc9d \4\2\0\0 +# UCS-2 file comment +>>>>&0 lestring16 x "%s" +# if no UCS-2 is present show ANSI file comment[112] if available +>>0x31 ubyte&0x02 =0 +>>>0x3C string >\0 "%-.112s" +# reserved seems to be always 0 +#>>0x10 ulelong >0 \b, reserved1 %u +# horizontal real dpi = dpi_h * 25.4 / 10**6 +>>0x18 ulelong x \b, %u micro dots/mm +# image vertical DPI in CPT DPI unit +#>>0x1C ulelong x \b, %u micro dots/mm +# reserved seems to be always 0 +#>>0x20 ulelong >0 \b, reserved2 %u +#>>0x24 ulelong >0 \b, reserved3 %u +# blocks_count; number of CPT_Block blocks. Allowed values: > 0 +>>0x28 ulelong x \b, %u block +# plural s +>>0x28 ulelong !1 \bs +# CPT file flags +# lower byte of CPT file flags: 0x94~CPT9FILE 0x01~often CPT7FILE 0x8C~CPT8FILE +#>>0x30 ubyte x \b, lower flags %#x +# upper byte of CPT file flags: +#>>0x31 ubyte >0 \b, upper flags %#x +# bit 2 in CPT file flags: unknown +#>>0x31 ubyte &0x04 \b, with UNKNOWN +# bits 3-7 in CPT file flags: unknown, seem to be often 0 +# show unusual flag combinations +>>0x31 ubyte&0xFC >0 +>>>0x30 uleshort x \b, flags %#4.4x +# reserved seems to be always 0 +#>>0x32 uleshort >0 \b, reserved4 %#x +# blocks_array_offset is always 0 for CPT7 and CPT8 files created by PP7-PP8 +# typical values like: 13Ch 154h 43Ch 4F0h DA8h +>>0x34 ulelong x \b, array offset %#x +# reserved seems to be often 0 +>>0x38 ulelong >0 \b, reserved5 %#x +# possible next master block +#>>0x100 ubequad !0 \b, next block=%#llx... +# bit 0: ICC profile block present +>>0x31 ubyte &0x01 \b, with ICC profile +# check for characteristic string acsp of color profile for DEBUGGING +#>>>0x178 string x icc=%.4s +# display ICC/ICM color profile by ./icc +#>>>0x154 use color-profile + +# Type: Crunch compressed texture. +# From: David Korth <gerbilsoft@gerbilsoft.com> +# References: +# - https://github.com/BinomialLLC/crunch/blob/44c8402e24441c7524ca364941fd224ab3b971e9/inc/crn_decomp.h#L267 +0 ubelong 0x4878004A Crunch compressed texture: +>0x0C ubeshort x %u x +>0x0E ubeshort x %u +>0x12 ubyte 0 \b, DXT1 +>0x12 ubyte 1 \b, DXT3 +>0x12 ubyte 2 \b, DXT5 +>0x12 ubyte 3 \b, DXT5 CCxY +>0x12 ubyte 4 \b, DXT5 xGxR +>0x12 ubyte 5 \b, DXT5 xGBR +>0x12 ubyte 6 \b, DXT5 AGBR +>0x12 ubyte 7 \b, DXn XY +>0x12 ubyte 8 \b, DXn YX +>0x12 ubyte 9 \b, DXT5 Alpha +>0x12 ubyte 10 \b, ETC1 +>0x10 ubyte >1 \b, %u images +>0x11 ubyte >1 \b, %u faces +# TODO: Flags at 0x13? (ubeshort) + +# Type: BasisLZ compressed texture. +# From: David Korth <gerbilsoft@gerbilsoft.com> +# References: +# - https://github.com/BinomialLLC/basis_universal/blob/master/spec/basis_spec.txt +0 uleshort 0x4273 +>0x04 uleshort 0x4D BasisLZ +>>0x02 uleshort x v%x compressed texture: +>>0x14 ubyte 0 ETC1S +>>0x14 ubyte 1 UASTC 4x4 +>>0x0E ulelong&0xFFFFFF >1 \b, %u slices +>>0x11 ulelong&0xFFFFFF >1 \b, %u images +>>0x15 uleshort&0x02 2 \b, Y-flipped + +# MIME registration: https://www.iana.org/assignments/media-types/model/e57 +# Sample files: http://www.libe57.org/data.html +# Reference implementation: http://www.libe57.org/ +# https://www.ri.cmu.edu/pub_files/2011/1/2011-huber-e57-v3.pdf +0 string ASTM-E57 ASTM E57 three-dimensional model +!:mime model/e57 +!:ext e57 diff --git a/magic/Magdir/intel b/magic/Magdir/intel index ba25d983411a..531dd6548ddb 100644 --- a/magic/Magdir/intel +++ b/magic/Magdir/intel @@ -1,6 +1,6 @@ #------------------------------------------------------------------------------ -# $File: intel,v 1.18 2020/04/18 16:19:03 christos Exp $ +# $File: intel,v 1.20 2021/04/26 15:56:00 christos Exp $ # intel: file(1) magic for x86 Unix # # Various flavors of x86 UNIX executable/object (other than Xenix, which @@ -37,7 +37,7 @@ # ./intel (version 5.25) label labeled the next entry as "80386 COFF executable" # SGI labeled the next entry as "iAPX 386 executable" --Dan Quinlan 0 leshort =0514 -# use subroutine to display name+flags+variables for common object formated files +# use subroutine to display name+flags+variables for common object formatted files >0 use display-coff #>12 lelong >0 not stripped # no hint found, that at offset 22 is version @@ -118,7 +118,7 @@ # length, in bytes, of the entire DSDT (including the header) >>4 ulelong x \b, %u bytes # entire table must sum to zero -#>>9 ubyte x \b, checksum 0x%x +#>>9 ubyte x \b, checksum %#x # vendor ID for the ASL Compiler like: INTL MSFT ... >>28 string >\0 \b, created by %.4s # revision number of the ASL Compiler like: 20051117 20140724 20190703 20200110 ... diff --git a/magic/Magdir/jpeg b/magic/Magdir/jpeg index 52c9ad36203e..522f8d34f07a 100644 --- a/magic/Magdir/jpeg +++ b/magic/Magdir/jpeg @@ -1,6 +1,6 @@ #------------------------------------------------------------------------------ -# $File: jpeg,v 1.32 2018/10/01 18:58:29 christos Exp $ +# $File: jpeg,v 1.36 2021/08/28 12:30:52 christos Exp $ # JPEG images # SunOS 5.5.1 had # @@ -9,11 +9,19 @@ # # both of which turn into "JPEG image data" here. # -0 beshort 0xffd8 JPEG image data +0 belong 0xffd8fff7 JPEG-LS image data +!:mime image/jls +!:ext jls +>0 use jpeg + +0 belong&0xffffff00 0xffd8ff00 JPEG image data !:mime image/jpeg !:apple 8BIMJPEG !:strength *3 !:ext jpeg/jpg/jpe/jfif +>0 use jpeg + +0 name jpeg >6 string JFIF \b, JFIF standard # The following added by Erik Rossen <rossen@freesurf.ch> 1999-09-06 # in a vain attempt to add image size reporting for JFIF. Note that these @@ -91,7 +99,7 @@ >>0 beshort&0xFFE0 !0xFFE0 >>>(2.S+2) use jpeg_segment -#>0 beshort x unknown 0x%x +#>0 beshort x unknown %#x #>>(2.S+2) use jpeg_segment # HSI is Handmade Software's proprietary JPEG encoding scheme @@ -124,3 +132,14 @@ >>4 lelong%2 0 JPEG-XR !:mime image/jxr !:ext jxr + +# JPEG XL +# From: Ian Tester +0 string \xff\x0a JPEG XL codestream +!:mime image/jxl +!:ext jxl + +# JPEG XL (transcoded JPEG file) +0 string \x00\x00\x00\x0cJXL\x20\x0d\x0a\x87\x0a JPEG XL container +!:mime image/jxl +!:ext jxl diff --git a/magic/Magdir/lammps b/magic/Magdir/lammps new file mode 100644 index 000000000000..5424383db80f --- /dev/null +++ b/magic/Magdir/lammps @@ -0,0 +1,64 @@ +#------------------------------------------------------------------------------ +# $File: lammps,v 1.1 2021/03/14 16:24:18 christos Exp $ +# + +# Magic file patterns for use with file(1) for the +# LAMMPS molecular dynamics simulation software. +# https://lammps.sandia.gov +# +# Updated: 2021-03-14 by akohlmey@gmail.com + +# Binary restart file for the LAMMPS MD code +0 string LammpS\ RestartT LAMMPS binary restart file +>0x14 long x (rev %d), +>>0x20 string x Version %s, +>>>0x10 lelong 0x0001 Little Endian +>>>0x10 lelong 0x1000 Big Endian + +# Atom style binary dump file for the LAMMPS MD code +# written on a little endian machine +0 lequad -8 +>0x08 string DUMPATOM LAMMPS atom style binary dump +>>0x14 long x (rev %d), +>>>0x10 lelong 0x0001 Little Endian, +>>>>0x18 lequad x First time step: %lld + +# written on a big endian machine +0 bequad -8 +>0x08 string DUMPATOM LAMMPS atom style binary dump +>>0x14 belong x (rev %d), +>>>0x10 lelong 0x1000 Big Endian, +>>>>0x18 bequad x First time step: %lld + +# Atom style binary dump file for the LAMMPS MD code +# written on a little endian machine +0 lequad -10 +>0x08 string DUMPCUSTOM LAMMPS custom style binary dump +>>0x16 lelong x (rev %d), +>>>0x12 lelong 0x0001 Little Endian, +>>>>0x1a lequad x First time step: %lld + +# written on a big endian machine +0 bequad -10 +>0x08 string DUMPCUSTOM LAMMPS custom style binary dump +>>0x16 belong x (rev %d), +>>>0x12 lelong 0x1000 Big Endian, +>>>>0x1a bequad x First time step: %lld + +# LAMMPS log file +0 string LAMMPS\ ( LAMMPS log file +>8 regex/16 [0-9]+\ [A-Za-z]+\ [0-9]+ written by version %s + +# Data file written either by LAMMPS, msi2lmp or VMD/TopoTools +0 string LAMMPS\ data\ file LAMMPS data file +>0x12 string CGCMM\ style written by TopoTools +>0x12 string msi2lmp written by msi2lmp +>0x11 string via\ write_data written by LAMMPS + +# LAMMPS data file written by OVITO +0 string #\ LAMMPS\ data\ file LAMMPS data file +>0x13 string written\ by\ OVITO written by OVITO + +# LAMMPS text mode dump file +0 string ITEM:\ TIMESTEP LAMMPS text mode dump, +>15 regex/16 [0-9]+ First time step: %s diff --git a/magic/Magdir/lif b/magic/Magdir/lif index a7a0a8abe776..89d7a8611624 100644 --- a/magic/Magdir/lif +++ b/magic/Magdir/lif @@ -1,8 +1,49 @@ #------------------------------------------------------------------------------ -# $File: lif,v 1.8 2009/09/19 16:28:10 christos Exp $ +# $File: lif,v 1.10 2021/04/26 15:56:00 christos Exp $ # lif: file(1) magic for lif # # (Daniel Quinlan <quinlan@yggdrasil.com>) # -0 beshort 0x8000 lif file +# Modified by: Joerg Jenderek +# URL: https://www.hp9845.net/9845/projects/hpdir/ +# https://github.com/bug400/lifutils +# Reference: https://www.hp9845.net/9845/downloads/manuals/LIF_excerpt_64941-90906_flpRef_Jan84.pdf +# Note: called by TrID "HP Logical Interchange Format disk image" +0 beshort 0x8000 +# GRR: line above is too general as it catches also compressed DEGAS low-res bitmap *.pc1 +# skip many compressed DEGAS low-res bitmap *.pc1 by test for unused bytes +>14 beshort =0 +# skip MUNCHIE.PC1 BOARD.PC1 ENEMIES.PC1 by test for low version number +>>20 ubeshort <0x0100 +# skip DEGAS MUNCHIE.PC1 BOARD.PC1 ENEMIES.PC1 by test for ASCII like volume name +#>>>2 ubelong >0x2020201F +>>>0 use lif-file +0 name lif-file +# LIF ID +>0 beshort x lif file +!:mime application/x-lif-disk +# lif used by Tony Duell LIF utilities; enhanced version by Joachim Siebold use also dat; hpi used by hpdir +!:ext lif/hpi/dat +# volume label; A-Z 0-9 _ ; default are 6 spaces +>2 string x "%.6s" +# version number; 0 for systems without extensions or 1 for model 64000 +>20 ubeshort x \b, version %u +# LIF identifier; 010000 for system 3000 +>12 beshort !0x1000 \b, LIF identifier %#x +# directory start address in units like: 2 +>8 ubelong x \b, directory +>8 ubelong !2 start address %u +# length of directory like: 2 4 7 10 12 14 (for model 64000) 16 18 20 24 30 50 57 77 80 +>16 ubelong x length %u +# level 1 extensions +>20 beshort =0 +>>24 ubequad !0 \b, for extensions %#llx... +>20 beshort >0 +>>24 ubequad !0 \b, extensions %#llx... +# word 21-126 reserved for extensions and future use; set to nil +>42 ubequad !0 \b, RESERVED %#llx +# lif first file name for standard directory; 0xffff... means uninitialized +>8 ubelong 2 +>>512 string <\xff\xff \b, 1st file %-.10s + diff --git a/magic/Magdir/linux b/magic/Magdir/linux index e7d0a15607e2..f5216087f0cf 100644 --- a/magic/Magdir/linux +++ b/magic/Magdir/linux @@ -1,6 +1,6 @@ #------------------------------------------------------------------------------ -# $File: linux,v 1.72 2020/06/07 21:56:13 christos Exp $ +# $File: linux,v 1.79 2021/04/26 15:56:00 christos Exp $ # linux: file(1) magic for Linux files # # Values for Linux/i386 binaries, from Daniel Quinlan <quinlan@yggdrasil.com> @@ -83,20 +83,20 @@ # format v1, supported since 1998 0 name linux-swap ->0x400 lelong 1 little endian, version %u, ->>0x404 lelong x size %u pages, ->>0x408 lelong x %u bad pages, ->0x400 belong 1 big endian, version %u, ->>0x404 belong x size %u pages, ->>0x408 belong x %u bad pages, ->0x41c string \0 no label, ->0x41c string >\0 LABEL=%s, ->0x40c belong x UUID=%08x ->0x410 beshort x \b-%04x ->0x412 beshort x \b-%04x ->0x414 beshort x \b-%04x ->0x416 belong x \b-%08x ->0x41a beshort x \b%04x +>0x400 lelong 1 little endian, version %u, +>>0x404 lelong x size %u pages, +>>0x408 lelong x %u bad pages, +>0x400 belong 1 big endian, version %u, +>>0x404 belong x size %u pages, +>>0x408 belong x %u bad pages, +>0x41c string \0 no label, +>0x41c string >\0 LABEL=%s, +>0x40c ubelong x UUID=%08x +>0x410 ubeshort x \b-%04x +>0x412 ubeshort x \b-%04x +>0x414 ubeshort x \b-%04x +>0x416 ubelong x \b-%08x +>0x41a ubeshort x \b%04x 0xff6 string SWAPSPACE2 Linux swap file, 4k page size, >0 use linux-swap @@ -154,8 +154,8 @@ >>>>(526.s+0x200) string >\0 version %s, >>498 leshort 1 RO-rootFS, >>498 leshort 0 RW-rootFS, ->>508 leshort >0 root_dev 0x%X, ->>502 leshort >0 swap_dev 0x%X, +>>508 leshort >0 root_dev %#X, +>>502 leshort >0 swap_dev %#X, >>504 leshort >0 RAMdisksize %u KB, >>506 leshort 0xFFFF Normal VGA >>506 leshort 0xFFFE Extended VGA @@ -191,8 +191,8 @@ >497 leshort !0 x86 kernel >>504 leshort >0 RAMdisksize=%u KB ->>502 leshort >0 swap=0x%X ->>508 leshort >0 root=0x%X +>>502 leshort >0 swap=%#X +>>508 leshort >0 root=%#X >>>498 leshort 1 \b-ro >>>498 leshort 0 \b-rw >>506 leshort 0xFFFF vga=normal @@ -239,14 +239,14 @@ # From: Kevin Cernekee <cernekee@gmail.com> # Update: Joerg Jenderek 0x24 lelong 0x016f2818 Linux kernel ARM boot executable zImage -# There are three posible situations: LE, BE with LE bootloader and pure BE. +# There are three possible situations: LE, BE with LE bootloader and pure BE. # In order to aid telling these apart a new endian flag was added. In order # to support kernels before the flag and BE with LE bootloader was added we'll # do a negative check against the BE variant of the flag when we see a LE magic. >0x30 belong !0x04030201 (little-endian) ->0x30 belong 0x04030201 (big-endian) # raspian "kernel7.img", Vu+ Ultimo4K "kernel_auto.bin" !:ext img/bin +>0x30 belong 0x04030201 (big-endian) 0x24 belong 0x016f2818 Linux kernel ARM boot executable zImage (big-endian) ############################################################################ @@ -438,17 +438,16 @@ # Documentation/devicetree/booting-without-of.txt # From Christoph Biedl 0 belong 0xd00dfeed -# structure and strings must be within blob +# structure must be within blob, strings are omitted to handle devicetrees > 1M >&(8.L) byte x ->>&(12.L) byte x ->>>20 belong >1 Device Tree Blob version %d ->>>>4 belong x \b, size=%d ->>>>20 belong >1 ->>>>>28 belong x \b, boot CPU=%d ->>>>20 belong >2 ->>>>>32 belong x \b, string block size=%d ->>>>20 belong >16 ->>>>>36 belong x \b, DT structure block size=%d +>>20 belong >1 Device Tree Blob version %d +>>>4 belong x \b, size=%d +>>>20 belong >1 +>>>>28 belong x \b, boot CPU=%d +>>>20 belong >2 +>>>>32 belong x \b, string block size=%d +>>>20 belong >16 +>>>>36 belong x \b, DT structure block size=%d # glibc locale archive as defined in glibc locale/locarchive.h 0 lelong 0xde020109 locale archive @@ -518,3 +517,21 @@ 0 search/1024 /dts-v1/ Device Tree File (v1) # beat c code !:strength +14 + + +# e2fsck undo file +# David Gilman <davidgilman1@gmail.com> +0 string E2UNDO02 e2fsck undo file, version 2 +>44 lelong x \b, undo file is +>>44 lelong&1 0 not finished +>>44 lelong&1 1 finished +>48 lelong x \b, undo file features: +>>48 lelong&1 0 lacks filesystem offset +>>48 lelong&1 1 has filesystem offset +>>>64 lequad x at %#llx + +# ansible vault (does not really belong here) +0 string $ANSIBLE_VAULT; Ansible Vault +>&0 regex [0-9]*\.[0-9]* \b, version %s +>>&0 string ; +>>>&0 regex [A-Z0-9]* \b, encryption %s diff --git a/magic/Magdir/lisp b/magic/Magdir/lisp index d32cc101a90a..c854fb7c74be 100644 --- a/magic/Magdir/lisp +++ b/magic/Magdir/lisp @@ -1,6 +1,6 @@ #------------------------------------------------------------------------------ -# $File: lisp,v 1.26 2019/04/19 00:42:27 christos Exp $ +# $File: lisp,v 1.27 2020/08/14 19:23:39 christos Exp $ # lisp: file(1) magic for lisp programs # # various lisp types, from Daniel Quinlan (quinlan@yggdrasil.com) @@ -60,6 +60,9 @@ !:apple EMAxTEXT !:ext elc +# Files produced by GNU/Emacs pdumper +0 string DUMPEDGNUEMACS GNU/Emacs pdumper image + # Files produced by CLISP Common Lisp From: Bruno Haible <haible@ilog.fr> 0 string (SYSTEM::VERSION\040' CLISP byte-compiled Lisp program (pre 2004-03-27) 0 string (|SYSTEM|::|VERSION|\040' CLISP byte-compiled Lisp program text diff --git a/magic/Magdir/locoscript b/magic/Magdir/locoscript new file mode 100644 index 000000000000..87771ccdf9e6 --- /dev/null +++ b/magic/Magdir/locoscript @@ -0,0 +1,12 @@ + +#------------------------------------------------------------------------------ +# $File: locoscript,v 1.1 2021/01/03 20:56:25 christos Exp $ +# locoscript: file(1) magic for LocoScript documents and related files +# +# See http://fileformats.archiveteam.org/wiki/LocoScript +0 string JOY\x01\x01 LocoScript 1 document +0 string JOY\x01\x02 LocoScript 2 document +0 string JOY\x01\x04 LocoScript 3 document +0 string JOY\x01\x06 LocoScript 4 document +0 string DOC\x01\x01 LocoScript PC document +0 string DOC\x01\x03 LocoScript Professional document diff --git a/magic/Magdir/lua b/magic/Magdir/lua index 0e47c2f9122a..ab17374534de 100644 --- a/magic/Magdir/lua +++ b/magic/Magdir/lua @@ -1,6 +1,6 @@ #------------------------------------------------------------------------------ -# $File: lua,v 1.7 2019/04/19 00:42:27 christos Exp $ +# $File: lua,v 1.8 2020/10/08 23:23:56 christos Exp $ # lua: file(1) magic for Lua scripting language # URL: https://www.lua.org/ # From: Reuben Thomas <rrt@sc3d.org>, Seo Sanghyeon <tinuviel@sparcs.kaist.ac.kr> @@ -17,6 +17,15 @@ # Lua bytecode 0 string \033Lua Lua bytecode, +# 2.4 uses 0x23 as its version byte because it shares the format +# with 2.3 (which was never released publicly). +>4 byte 0x23 version 2.4 +>4 byte 0x25 version 2.5/3.0 +>4 byte 0x31 version 3.1 +>4 byte 0x32 version 3.2 +>4 byte 0x40 version 4.0 >4 byte 0x50 version 5.0 >4 byte 0x51 version 5.1 >4 byte 0x52 version 5.2 +>4 byte 0x53 version 5.3 +>4 byte 0x54 version 5.4 diff --git a/magic/Magdir/mach b/magic/Magdir/mach index c1bec073480f..7eb98ff34e39 100644 --- a/magic/Magdir/mach +++ b/magic/Magdir/mach @@ -1,6 +1,6 @@ #------------------------------------------------------------ -# $File: mach,v 1.23 2015/10/15 21:51:22 christos Exp $ +# $File: mach,v 1.29 2021/04/26 15:56:00 christos Exp $ # Mach has two magic numbers, 0xcafebabe and 0xfeedface. # Unfortunately the first, cafebabe, is shared with # Java ByteCode, so they are both handled in the file "cafebabe". @@ -11,8 +11,11 @@ # it's also separate from the "64-bit libraries" bit in the # upper 8 bits of the CPU subtype +# Reference: https://opensource.apple.com/source/cctools/cctools-949.0.1/ +# include/mach-o/loader.h +# display CPU type as string like: i386 x86_64 ... armv7 armv7k ... 0 name mach-o-cpu ->0 belong&0x01000000 0 +>0 belong&0xff000000 0 # # 32-bit ABIs. # @@ -51,37 +54,37 @@ >>>>4 belong&0x00fffff0 0x30 pentium_2_m3 >>>>4 belong&0x00fffff0 0x40 pentium_2_m0x40 >>>>4 belong&0x00fffff0 0x50 pentium_2_m5 ->>>>4 belong&0x00fffff0 >0x50 pentium_2_m0x%x +>>>>4 belong&0x00fffff0 >0x50 pentium_2_m%#x >>>4 belong&0x0000000f 7 celeron ->>>>4 belong&0x00fffff0 0x00 \b_m0x%x ->>>>4 belong&0x00fffff0 0x10 \b_m0x%x ->>>>4 belong&0x00fffff0 0x20 \b_m0x%x ->>>>4 belong&0x00fffff0 0x30 \b_m0x%x ->>>>4 belong&0x00fffff0 0x40 \b_m0x%x ->>>>4 belong&0x00fffff0 0x50 \b_m0x%x +>>>>4 belong&0x00fffff0 0x00 \b_m%#x +>>>>4 belong&0x00fffff0 0x10 \b_m%#x +>>>>4 belong&0x00fffff0 0x20 \b_m%#x +>>>>4 belong&0x00fffff0 0x30 \b_m%#x +>>>>4 belong&0x00fffff0 0x40 \b_m%#x +>>>>4 belong&0x00fffff0 0x50 \b_m%#x >>>>4 belong&0x00fffff0 0x60 >>>>4 belong&0x00fffff0 0x70 \b_mobile ->>>>4 belong&0x00fffff0 >0x70 \b_m0x%x +>>>>4 belong&0x00fffff0 >0x70 \b_m%#x >>>4 belong&0x0000000f 8 pentium_3 >>>>4 belong&0x00fffff0 0x00 >>>>4 belong&0x00fffff0 0x10 \b_m >>>>4 belong&0x00fffff0 0x20 \b_xeon ->>>>4 belong&0x00fffff0 >0x20 \b_m0x%x +>>>>4 belong&0x00fffff0 >0x20 \b_m%#x >>>4 belong&0x0000000f 9 pentiumM >>>>4 belong&0x00fffff0 0x00 ->>>>4 belong&0x00fffff0 >0x00 \b_m0x%x +>>>>4 belong&0x00fffff0 >0x00 \b_m%#x >>>4 belong&0x0000000f 10 pentium_4 >>>>4 belong&0x00fffff0 0x00 >>>>4 belong&0x00fffff0 0x10 \b_m ->>>>4 belong&0x00fffff0 >0x10 \b_m0x%x +>>>>4 belong&0x00fffff0 >0x10 \b_m%#x >>>4 belong&0x0000000f 11 itanium >>>>4 belong&0x00fffff0 0x00 >>>>4 belong&0x00fffff0 0x10 \b_2 ->>>>4 belong&0x00fffff0 >0x10 \b_m0x%x +>>>>4 belong&0x00fffff0 >0x10 \b_m%#x >>>4 belong&0x0000000f 12 xeon >>>>4 belong&0x00fffff0 0x00 >>>>4 belong&0x00fffff0 0x10 \b_mp ->>>>4 belong&0x00fffff0 >0x10 \b_m0x%x +>>>>4 belong&0x00fffff0 >0x10 \b_m%#x >>>4 belong&0x0000000f >12 ia32 family=%d >>>>4 belong&0x00fffff0 0x00 >>>>4 belong&0x00fffff0 >0x00 model=%x @@ -139,13 +142,13 @@ >>>4 belong&0x00ffffff 6 \b_604 >>>4 belong&0x00ffffff 7 \b_604e >>>4 belong&0x00ffffff 8 \b_620 ->>>4 belong&0x00ffffff 9 \b_650 +>>>4 belong&0x00ffffff 9 \b_750 >>>4 belong&0x00ffffff 10 \b_7400 >>>4 belong&0x00ffffff 11 \b_7450 >>>4 belong&0x00ffffff 100 \b_970 >>>4 belong&0x00ffffff >100 subarchitecture=%d >>0 belong&0x00ffffff >18 architecture=%d ->0 belong&0x01000000 0x01000000 +>0 belong&0xff000000 0x01000000 # # 64-bit ABIs. # @@ -171,6 +174,15 @@ >>0 belong&0x00ffffff 12 arm64 >>>4 belong&0x00ffffff 0 >>>4 belong&0x00ffffff 1 \bv8 +>>>4 belong&0x00ffffff 2 \be +>>>>7 ubyte&0xff >0 (caps: +>>>>7 ubyte&0xff <0x80 %#02x +>>>>7 ubyte&0xc0 0x80 PAC +>>>>>7 ubyte&0x3f x \b%02d +>>>>7 ubyte&0xc0 0xc0 PAK +>>>>>7 ubyte&0x3f x \b%02d +>>>>7 ubyte&0xff x \b) +>>>4 belong&0x00ffffff >2 subarchitecture=%d >>0 belong&0x00ffffff 13 64-bit architecture=%d >>0 belong&0x00ffffff 14 64-bit architecture=%d >>0 belong&0x00ffffff 15 64-bit architecture=%d @@ -192,51 +204,91 @@ >>>4 belong&0x00ffffff 100 \b_970 >>>4 belong&0x00ffffff >100 subarchitecture=%d >>0 belong&0x00ffffff >18 64-bit architecture=%d - +>0 belong&0xff000000 0x02000000 +# +# 64_32-bit ABIs. +# +>>0 belong&0x00ffffff 0 64_32-bit architecture=%d +>>0 belong&0x00ffffff 1 64_32-bit architecture=%d +>>0 belong&0x00ffffff 2 64_32-bit architecture=%d +>>0 belong&0x00ffffff 3 64_32-bit architecture=%d +>>0 belong&0x00ffffff 4 64_32-bit architecture=%d +>>0 belong&0x00ffffff 5 64_32-bit architecture=%d +>>0 belong&0x00ffffff 6 64_32-bit architecture=%d +>>0 belong&0x00ffffff 7 64_32-bit architecture=%d +>>0 belong&0x00ffffff 8 64_32-bit architecture=%d +>>0 belong&0x00ffffff 9 64_32-bit architecture=%d +>>0 belong&0x00ffffff 10 64_32-bit architecture=%d +>>0 belong&0x00ffffff 11 64_32-bit architecture=%d +>>0 belong&0x00ffffff 12 64_32-bit arm +>>>4 belong&0x00ffffff 0 +>>>4 belong&0x00ffffff 1 \bv8 +>>>4 belong&0x00ffffff >1 subarchitecture=%d +>>0 belong&0x00ffffff 13 64_32-bit architecture=%d +>>0 belong&0x00ffffff 14 64_32-bit architecture=%d +>>0 belong&0x00ffffff 15 64_32-bit architecture=%d +>>0 belong&0x00ffffff 16 64_32-bit architecture=%d +>>0 belong&0x00ffffff 17 64_32-bit architecture=%d +>>0 belong&0x00ffffff 18 64_32-bit architecture=%d +>>0 belong&0x00ffffff >18 64_32-bit architecture=%d 0 name mach-o-be >0 byte 0xcf 64-bit >4 use mach-o-cpu >12 belong 1 object +# GRR: Does not work for Mach-O with 2 architectures; instead display oo +#!:ext o +!:ext o/ >12 belong 2 executable +# the executables normally have no file extension like perl, +# but exceptions like perl5.18 perl5.16 +!:ext 16/18/ >12 belong 3 fixed virtual memory shared library >12 belong 4 core >12 belong 5 preload executable >12 belong 6 dynamically linked shared library +# GRR: Does not work for Mach-O with 2 architectures; instead display dylibdylib +#!:ext dylib +!:ext dylib/ >12 belong 7 dynamic linker >12 belong 8 bundle +# normally name extension bundle; but exceptions like: AMDil_r700.dylib +!:ext bundle/dylib/ >12 belong 9 dynamically linked shared library stub >12 belong 10 dSYM companion file >12 belong 11 kext bundle >12 belong >11 >>12 belong x filetype=%d >24 belong >0 \b, flags:< ->>24 belong &0x0000001 \bNOUNDEFS ->>24 belong &0x0000002 \b|INCRLINK ->>24 belong &0x0000004 \b|DYLDLINK ->>24 belong &0x0000008 \b|BINDATLOAD ->>24 belong &0x0000010 \b|PREBOUND ->>24 belong &0x0000020 \b|SPLIT_SEGS ->>24 belong &0x0000040 \b|LAZY_INIT ->>24 belong &0x0000080 \b|TWOLEVEL ->>24 belong &0x0000100 \b|FORCE_FLAT ->>24 belong &0x0000200 \b|NOMULTIDEFS ->>24 belong &0x0000400 \b|NOFIXPREBINDING ->>24 belong &0x0000800 \b|PREBINDABLE ->>24 belong &0x0001000 \b|ALLMODSBOUND ->>24 belong &0x0002000 \b|SUBSECTIONS_VIA_SYMBOLS ->>24 belong &0x0004000 \b|CANONICAL ->>24 belong &0x0008000 \b|WEAK_DEFINES ->>24 belong &0x0010000 \b|BINDS_TO_WEAK ->>24 belong &0x0020000 \b|ALLOW_STACK_EXECUTION ->>24 belong &0x0040000 \b|ROOT_SAFE ->>24 belong &0x0080000 \b|SETUID_SAFE ->>24 belong &0x0100000 \b|NO_REEXPORTED_DYLIBS ->>24 belong &0x0200000 \b|PIE ->>24 belong &0x0400000 \b|DEAD_STRIPPABLE_DYLIB ->>24 belong &0x0800000 \b|HAS_TLV_DESCRIPTORS ->>24 belong &0x1000000 \b|NO_HEAP_EXECUTION ->>24 belong &0x2000000 \b|APP_EXTENSION_SAFE +>>24 belong &0x00000001 \bNOUNDEFS +>>24 belong &0x00000002 \b|INCRLINK +>>24 belong &0x00000004 \b|DYLDLINK +>>24 belong &0x00000008 \b|BINDATLOAD +>>24 belong &0x00000010 \b|PREBOUND +>>24 belong &0x00000020 \b|SPLIT_SEGS +>>24 belong &0x00000040 \b|LAZY_INIT +>>24 belong &0x00000080 \b|TWOLEVEL +>>24 belong &0x00000100 \b|FORCE_FLAT +>>24 belong &0x00000200 \b|NOMULTIDEFS +>>24 belong &0x00000400 \b|NOFIXPREBINDING +>>24 belong &0x00000800 \b|PREBINDABLE +>>24 belong &0x00001000 \b|ALLMODSBOUND +>>24 belong &0x00002000 \b|SUBSECTIONS_VIA_SYMBOLS +>>24 belong &0x00004000 \b|CANONICAL +>>24 belong &0x00008000 \b|WEAK_DEFINES +>>24 belong &0x00010000 \b|BINDS_TO_WEAK +>>24 belong &0x00020000 \b|ALLOW_STACK_EXECUTION +>>24 belong &0x00040000 \b|ROOT_SAFE +>>24 belong &0x00080000 \b|SETUID_SAFE +>>24 belong &0x00100000 \b|NO_REEXPORTED_DYLIBS +>>24 belong &0x00200000 \b|PIE +>>24 belong &0x00400000 \b|DEAD_STRIPPABLE_DYLIB +>>24 belong &0x00800000 \b|HAS_TLV_DESCRIPTORS +>>24 belong &0x01000000 \b|NO_HEAP_EXECUTION +>>24 belong &0x02000000 \b|APP_EXTENSION_SAFE +>>24 belong &0x04000000 \b|NLIST_OUTOFSYNC_WITH_DYLDINFO +>>24 belong &0x08000000 \b|SIM_SUPPORT +>>24 belong &0x80000000 \b|DYLIB_IN_CACHE >>24 belong x \b> # diff --git a/magic/Magdir/macintosh b/magic/Magdir/macintosh index 218a844dbefd..905e4d6e1500 100644 --- a/magic/Magdir/macintosh +++ b/magic/Magdir/macintosh @@ -1,6 +1,6 @@ #------------------------------------------------------------------------------ -# $File: macintosh,v 1.30 2019/12/14 20:40:26 christos Exp $ +# $File: macintosh,v 1.32 2021/04/26 15:56:00 christos Exp $ # macintosh description # # BinHex is the Macintosh ASCII-encoded file format (see also "apple") @@ -17,7 +17,7 @@ 0 search/2652/b (This\ file\ >&0 use binhex 0 name binhex -# keep splitted search string format similar like in version 5.37 +# keep split search string format similar like in version 5.37 >0 string must\ be\ converted\ with\ BinHex\ BinHex binary text, version # http://www.macdisk.com/binhexen.php3 !:apple BNHQTEXT @@ -141,7 +141,7 @@ !:ext bin/macbin # THIS SHOULD NEVER HAPPEN! Maybe another file type is misidetified as MacBinary #>1 ubyte >63 \b, name length %u too BIG! -#>122 ubeshort x \b, version 0x%x +#>122 ubeshort x \b, version %#x # Finder flags if not 0 # >73 byte !0 \b, flags 0x # >73 byte =0 @@ -164,21 +164,21 @@ # 77 beshort # horiz posn in window #>77 beshort !0 \b, h.pos %u # 79 beshort # window or folder ID ->79 ubeshort !0 \b, ID 0x%x +>79 ubeshort !0 \b, ID %#x # protected flag ->81 byte !0 \b, protected 0x%x +>81 byte !0 \b, protected %#x # length of comment after resource >99 ubeshort !0 \b, comment length %u # char. code of file name ->106 ubyte !0 \b, char. code 0x%x +>106 ubyte !0 \b, char. code %#x # still more Finder flags ->107 ubyte !0 \b, more flags 0x%x +>107 ubyte !0 \b, more flags %#x # length of total files when unpacked only used when pack and unpack on the fly >116 ubelong !0 \b, total length %u # 120 beshort # length of add'l header >120 ubeshort !0 \b, 2nd header length %u # 124 beshort # checksum -#>124 ubeshort !0 \b, CRC 0x%x +#>124 ubeshort !0 \b, CRC %#x # creation date in seconds since MacOS epoch start. So 1 Jan 1970 ~ 7C25B080 >91 beldate-0x7C25B080 x \b, %s # THIS SHOULD NEVER HAPPEN! Maybe another file type is misidetified or time overflow @@ -204,7 +204,7 @@ # Afterwards resource fork if length of resource segment not zero >87 ubelong !0 # calculate resource fork offset ->>83 ubelong+128 x \b, at 0x%x +>>83 ubelong+128 x \b, at %#x # length of resource segment >>87 ubelong !0 %u bytes >>(83.S+128) ubequad x resource diff --git a/magic/Magdir/mail.news b/magic/Magdir/mail.news index 006fe923a860..074cfb191456 100644 --- a/magic/Magdir/mail.news +++ b/magic/Magdir/mail.news @@ -1,5 +1,5 @@ #------------------------------------------------------------------------------ -# $File: mail.news,v 1.25 2019/06/21 20:06:05 christos Exp $ +# $File: mail.news,v 1.28 2021/09/11 19:20:15 christos Exp $ # mail.news: file(1) magic for mail and news # # Unfortunately, saved netnews also has From line added in some news software. @@ -24,6 +24,8 @@ !:mime message/news 0 string/t From: news or mail text !:mime message/rfc822 +0 string/t Date: news or mail text +!:mime message/rfc822 0 string/t Article saved news text !:mime message/news # Reference: http://quimby.gnus.org/notes/BABYL @@ -75,3 +77,10 @@ >12 belong =1 version 1, big-endian >12 lelong =1 version 1, little-endian >12 belong x version %d, network-endian + +# Dovecot mail server, version 2.2 and later. +# Dovecot mailing list: dovecot@dovecot.org +# File format spec: https://wiki.dovecot.org/Design/Dcrypt/#File_format +# From: Stephen Gildea +0 string CRYPTED\003\007 Dovecot encrypted message +>9 byte x \b, dcrypt version %d diff --git a/magic/Magdir/map b/magic/Magdir/map index 460746bab227..2e8d0797d319 100644 --- a/magic/Magdir/map +++ b/magic/Magdir/map @@ -1,7 +1,7 @@ #------------------------------------------------------------------------------ -# $File: map,v 1.8 2019/12/01 22:46:23 christos Exp $ +# $File: map,v 1.9 2021/04/26 15:56:00 christos Exp $ # map: file(1) magic for Map data # @@ -40,7 +40,7 @@ >0 ubyte x Garmin !:mime application/x-garmin-map # If non-zero, every byte of the entire .img file is to be XORed with this value ->0 ubyte !0 \b, 0x%x XORed +>0 ubyte !0 \b, %#x XORed # goto block before FAT >(0x40.b*512) ubyte x # 1st fat name "DLLINFO TXT" only found for vpm @@ -54,7 +54,7 @@ >>&512 string !DLLINFO\ TXT map !:ext img # 9 zeros ->1 ubelong !0 \b, zeroes 0x%x +>1 ubelong !0 \b, zeroes %#x # Map's version major >8 ubyte x v%u # Map's version minor @@ -72,12 +72,12 @@ # Update month (0-11) >0xA ubyte x \b-%.2u # All zeroes ->0xc uleshort !0 \b, zeroes 0x%x +>0xc uleshort !0 \b, zeroes %#x # Mapsource flag, 1 - file created by Mapsource, 0 - Garmin map visible in Basecamp and Homeport -#>0xE ubyte !0 \b, Mapsource flag 0x%x +#>0xE ubyte !0 \b, Mapsource flag %#x >0xE ubyte 1 \b, Mapsource # Checksum, sum of all bytes modulo 256 should be 0 -#>0xF ubyte x \b, Checksum 0x%x +#>0xF ubyte x \b, Checksum %#x # Signature: DSKIMG 0x00 or DSDIMG 0x00 for demo map >0x10 string !DSKIMG \b, signature "%.7s" >0x39 use garmin-date @@ -99,20 +99,20 @@ # MBR signature >0x1FE leshort !0xAA55 \b, invalid MBR # 512 zeros ->0x200 uquad !0 \b, zeroes 0x%llx +>0x200 uquad !0 \b, zeroes %#llx # First sub-file offset (absolute); sometimes NO/UNKNOWN sub file! ->0x40C ulelong >0 \b, at 0x%x +>0x40C ulelong >0 \b, at %#x # sub-file Header length -#>>(0x40C.l) uleshort x \b, header len 0x%x +#>>(0x40C.l) uleshort x \b, header len %#x >>(0x40C.l) uleshort x %u bytes # sub-file Type[10] like "GARMIN RGN" "GARMIN TRE", "GARMIN TYP", etc. >>(0x40C.l+2) ubyte >0x1F >>>(0x40C.l+2) ubyte <0xFF >>>>(0x40C.l+2) string x "%.10s" # 0x00 for most maps, 0x80 for locked maps (City Nav, City Select, etc.) ->>>>(0x40C.l+13) ubyte >0 \b, locked 0x%x +>>>>(0x40C.l+13) ubyte >0 \b, locked %#x # Block sequence numbers like 0000 0100 0200 ... FFFF -# >0x420 ubequad >0 \b, seq. 0x%16.16llx +# >0x420 ubequad >0 \b, seq. %#16.16llx # >>0x428 ubequad >0 \b%16.16llx # >>>0x430 ubequad >0 \b%16.16llx # >>>>0x438 ubequad >0 \b%16.16llx @@ -147,12 +147,12 @@ # ... xth FAT block # # 314 zeros but not in vpm and also gmaptz.img ->0x84 uquad !0 \b, at 0x84 0x%llx +>0x84 uquad !0 \b, at 0x84 %#llx # display FileAllocationTable block entry in garmin map 0 name garmin-fat >0 ubyte x \b; # sub file part; 0x0003 seems to be garbage ->0x10 uleshort !0 next 0x%4.4x +>0x10 uleshort !0 next %#4.4x >0x10 uleshort =0 # fat flag 0~dummy block 1~true sub file >>0 ubyte !1 flag %u @@ -164,7 +164,7 @@ # size of sub file >>>0xC ulelong x \b, %u bytes # 32-bit block sequence numbers -#>>>0x20 ubequad x \b, seq. 0x%16.16llx +#>>>0x20 ubequad x \b, seq. %#16.16llx # display date stored inside Garmin maps like yyyy-mm-dd h:mm:ss 0 name garmin-date @@ -207,38 +207,38 @@ !:mime application/x-garmin-nod !:ext nod >>>0x0E use garmin-date -#>>>0x15 ulelong x \b, at 0x%x -#>>>0x19 ulelong x 0x%x bytes NOD1 -#>>>0x25 ulelong x \b, at 0x%x -#>>>0x29 ulelong x 0x%x bytes NOD2 -#>>>0x31 ulelong x \b, at 0x%x -#>>>0x35 ulelong x 0x%x bytes NOD3 +#>>>0x15 ulelong x \b, at %#x +#>>>0x19 ulelong x %#x bytes NOD1 +#>>>0x25 ulelong x \b, at %#x +#>>>0x29 ulelong x %#x bytes NOD2 +#>>>0x31 ulelong x \b, at %#x +#>>>0x35 ulelong x %#x bytes NOD3 # URL: http://www.pinns.co.uk/osm/net.html # routable highways (length, direction, allowed speed,house address information) >>9 string NET highways !:mime application/x-garmin-net !:ext net -#>>>0x15 ulelong x \b, at 0x%x -#>>>0x19 ulelong x 0x%x bytes NET1 +#>>>0x15 ulelong x \b, at %#x +#>>>0x19 ulelong x %#x bytes NET1 #>>>0x22 ulelong >0 -#>>>>0x1E ulelong x \b, at 0x%x -#>>>>0x22 ulelong x 0x%x bytes NET2 +#>>>>0x1E ulelong x \b, at %#x +#>>>>0x22 ulelong x %#x bytes NET2 #>>>0x2B ulelong >0 -#>>>>0x27 ulelong x \b, at 0x%x -#>>>>0x2B ulelong x 0x%x bytes NET3 +#>>>>0x27 ulelong x \b, at %#x +#>>>>0x2B ulelong x %#x bytes NET3 # URL: https://wiki.openstreetmap.org/wiki/OSM_Map_On_Garmin/LBL_Subfile_Format >>9 string LBL labels !:mime application/x-garmin-lbl !:ext lbl >>>(0.s) string x %s # Label coding type 6h 9h and ah ->>>0x1E ubyte x \b, coding type 0x%x -#>>>0x15 ulelong x \b, at 0x%x -#>>>0x19 ulelong x 0x%x bytes LBL1 -#>>>0x1F ulelong x \b, at 0x%x -#>>>0x23 ulelong x 0x%x bytes LBL2 -#>>>0x2D ulelong x \b, at 0x%x -#>>>0x31 ulelong x 0x%x bytes LBL3 +>>>0x1E ubyte x \b, coding type %#x +#>>>0x15 ulelong x \b, at %#x +#>>>0x19 ulelong x %#x bytes LBL1 +#>>>0x1F ulelong x \b, at %#x +#>>>0x23 ulelong x %#x bytes LBL2 +#>>>0x2D ulelong x \b, at %#x +#>>>0x31 ulelong x %#x bytes LBL3 # URL: https://wiki.openstreetmap.org/wiki/OSM_Map_On_Garmin/SRT_Subfile_Format # A lookup table of the chars in the map's codepage, and their collating sequence >>9 string SRT sort table @@ -256,16 +256,16 @@ # or http://www.openstreetmap.org/ >>>>&1 string x %s >>>0x0E use garmin-date -#>>>0x21 ulelong x \b, at 0x%x -#>>>0x25 ulelong x 0x%x bytes TRE1 -#>>>0x29 ulelong x \b, at 0x%x -#>>>0x2D ulelong x 0x%x bytes TRE2 -#>>>0x31 ulelong x \b, at 0x%x -#>>>0x35 ulelong x 0x%x bytes TRE3 +#>>>0x21 ulelong x \b, at %#x +#>>>0x25 ulelong x %#x bytes TRE1 +#>>>0x29 ulelong x \b, at %#x +#>>>0x2D ulelong x %#x bytes TRE2 +#>>>0x31 ulelong x \b, at %#x +#>>>0x35 ulelong x %#x bytes TRE3 # Copyright record size #>>>0x39 uleshort x \b, copyright record size %u # Map ID ->>>0x74 ulelong x \b, ID 0x%x +>>>0x74 ulelong x \b, ID %#x # URL: https://www.gpspower.net/garmin-tutorials/353310-basecamp-installing-free-desktop-map.html # For road traffic information service (RDS/TMS/TMC). Commonly seen in City Navigator maps >>9 string TRF traffic, @@ -285,11 +285,11 @@ # character set 1252 65001~UTF8 >>>0x15 uleshort x \b, code page %u # POIs -#>>>0x17 ulelong x \b, at 0x%x -#>>>0x1B ulelong x 0x%x bytes TYP1 +#>>>0x17 ulelong x \b, at %#x +#>>>0x1B ulelong x %#x bytes TYP1 # extra pois -#>>>0x5B ulelong x \b, at 0x%x -#>>>0x5F ulelong x 0x%x bytes TYP8 +#>>>0x5B ulelong x \b, at %#x +#>>>0x5F ulelong x %#x bytes TYP8 # URL: https://wiki.openstreetmap.org/wiki/OSM_Map_On_Garmin/RGN_Subfile_Format # http://www.pinns.co.uk/osm/RGN.html # region data used by the Garmin software @@ -297,24 +297,24 @@ !:mime application/x-garmin-rgn !:ext rgn # POIs,Indexed POIs,Polylines or Polygons or first map level -#>>>0x15 ulelong x \b, at 0x%x -#>>>0x19 ulelong x 0x%x bytes RGN1 +#>>>0x15 ulelong x \b, at %#x +#>>>0x19 ulelong x %#x bytes RGN1 # polygons with extended types #>>>0x21 ulelong >0 -#>>>>0x1D ulelong x \b, at 0x%x -#>>>>0x21 ulelong x 0x%x bytes RGN2 +#>>>>0x1D ulelong x \b, at %#x +#>>>>0x21 ulelong x %#x bytes RGN2 # polylines with extended types #>>>0x3D ulelong >0 -#>>>>0x39 ulelong x \b, at 0x%x -#>>>>0x3D ulelong x 0x%x bytes RGN3 +#>>>>0x39 ulelong x \b, at %#x +#>>>>0x3D ulelong x %#x bytes RGN3 # extended POIs #>>>0x59 ulelong >0 -#>>>>0x55 ulelong x \b, at 0x%x -#>>>>0x59 ulelong x 0x%x bytes RGN3 +#>>>>0x55 ulelong x \b, at %#x +#>>>>0x59 ulelong x %#x bytes RGN3 #>>9 default x unknown map type # Header length; GMP:31h 35h 3Dh,MDR:11Eh 238h 2C4h 310h,NOD:3Fh 7Fh,NET:64h, # LBL:2A9h,SRT:1Dh 25h 27h,TRE:CFh 135h,TRF:5Ah,TYP:5Bh 6Eh 7Ch AEh,RGN:7Dh ->>0 uleshort x \b, header length 0x%x +>>0 uleshort x \b, header length %#x # URL: https://www.memotech.franken.de/FileFormats/ # Reference: https://www.memotech.franken.de/FileFormats/Garmin_RGN_Format.pdf @@ -357,7 +357,7 @@ # display information of Garmin RGN record 0 name garmin-entry # record length: 2 for Data, for Application often 1Bh sometimes 1Dh, "big" for Region -#>0 ulelong x \b, length 0x%x +#>0 ulelong x \b, length %#x # data record (ID='D') with version content like 0064h~1.0 >4 ubyte =0x44 >>5 uleshort !0x0064 \b; Data @@ -382,11 +382,11 @@ # delay in ms: like 0, 500 >>7 ulelong !0 \b, %u ms # region size (is record length - 10) -#>>11 ulelong x \b, length 0x%x +#>>11 ulelong x \b, length %#x # region content like: # "KpGr"~recursiv embedded,"GARMIN BITMAP"~Garmin Bitmap *.srf, "PK"~ZIP archive #>>15 string x \b, content "%s" ->>15 ubequad x \b, content 0x%llx... +>>15 ubequad x \b, content %#llx... # This does NOT WORK! #>>15 indirect x \b; contains >4 default x \b; other diff --git a/magic/Magdir/maple b/magic/Magdir/maple index 44ab2842b604..80cf9f29a114 100644 --- a/magic/Magdir/maple +++ b/magic/Magdir/maple @@ -1,20 +1,72 @@ #------------------------------------------------------------------------------ -# $File: maple,v 1.8 2017/03/17 21:35:28 christos Exp $ +# $File: maple,v 1.10 2021/08/30 13:31:25 christos Exp $ # maple: file(1) magic for maple files # "H. Nanosecond" <aldomel@ix.netcom.com> # Maple V release 4, a multi-purpose math program # # maple library .lib -0 string \000MVR4\nI MapleVr4 library +# URL: https://en.wikipedia.org/wiki/Maple_(software) +# Reference: http://mark0.net/download/triddefs_xml.7z/defs/l/lib-maple-v-r4.trid.xml +# Update: Joerg Jenderek +0 string \000MVR4\nI Maple Vr4 library +#!:mime application/octet-stream +!:mime application/x-maple-lib +!:ext lib + +# URL: https://en.wikipedia.org/wiki/Maple_(software) +# Reference: http://mark0.net/download/triddefs_xml.7z/defs/l/lib-maple-v-r5.trid.xml +# From: Joerg Jenderek +0 string \000MVR5\n Maple Vr5 library +#!:mime application/octet-stream +!:mime application/x-maple-lib +!:ext lib + +# From: Joerg Jenderek +0x400 string M7R0\nI Maple Vr7 library +#!:mime application/octet-stream +!:mime application/x-maple-lib +!:ext lib +# null terminated library name like: C:\Maple12/Cliffordlib\maple.lib ../Maplets/Tutors.lib +>5 string x %s +# probably library name padding with nil or points (0x2E) +#>0xF8 uquad x \b, PADDING 0x%16.16llx +# null terminated strings like: Exterior Clifford FunctionArithmetics +# like: 1 20 40 +>0x115 ulelong x \b, %u string +# plural s +>0x115 ulelong >1 \bs +>0x119 string x 1st '%s' +# probably second name section padding with nil or points (0x2E) +#>0x3F0 uquad x \b, 2nd PADDING 0x%16.16llx +# line feed separated ASCII string with maximal 79 length +#>0x407 string x \b, section "%s" +>0x454 ubyte !0x0a \b, at 0x454 0x%x # .ind # no magic for these :-( # they are compiled indexes for maple files # .hdb -0 string \000\004\000\000 Maple help database +# Update: Joerg Jenderek +# URL: https://www.maplesoft.com/support/help/maple/view.aspx?path=Formats/HDB +# Reference: http://mark0.net/download/triddefs_xml.7z/defs/h/hdb-maple.trid.xml +# Note: This format was replaced in Maple 18 by the Maple Help format (*.help) +0 string \000\004\000\000 +# skip xBASE Compound Index file *.CDX by looking for version +>1028 string version Maple help database +# length of string version +#>>1024 ulelong !7 \b, at 0x400 unexpected %u +#!:mime application/octet-stream +!:mime application/x-maple-hdb +!:ext hdb +>1028 default x +# skip more xBASE Compound Index file *.CDX by looking for keyword Maple +# like hsum.hdb +>>4 search/0xCC41 Maple Maple help database +!:mime application/x-maple-hdb +!:ext hdb # .mhp # this has the form <PACKAGE=name> diff --git a/magic/Magdir/mathematica b/magic/Magdir/mathematica index e76957eea43a..77903b5fe8c3 100644 --- a/magic/Magdir/mathematica +++ b/magic/Magdir/mathematica @@ -1,6 +1,6 @@ #------------------------------------------------------------------------------ -# $File: mathematica,v 1.9 2017/03/17 21:35:28 christos Exp $ +# $File: mathematica,v 1.13 2021/07/14 09:06:24 christos Exp $ # mathematica: file(1) magic for mathematica files # "H. Nanosecond" <aldomel@ix.netcom.com> # Mathematica a multi-purpose math program @@ -13,7 +13,7 @@ !:ext mb # .ma -# multiple possibilites: +# multiple possibilities: 0 string (*^\n\n::[\011frontEndVersion\ =\ Mathematica notebook #>41 string >\0 %s @@ -24,7 +24,7 @@ #0 string (*^\n\n::[\011Information Mathematica notebook version 2.x #>675 string >\0 %s #doesn't work well -# there may be 'cr' instread of 'nl' in some does this matter? +# there may be 'cr' instead of 'nl' in some does this matter? # generic: 0 string (*^\r\r::[\011 Mathematica notebook version 2.x @@ -73,9 +73,90 @@ ######################### # MatLab v5 -0 string MATLAB Matlab v5 mat-file +# URL: http://fileformats.archiveteam.org/wiki/MAT +# Reference: https://www.mathworks.com/help/pdf_doc/matlab/matfile_format.pdf +# first 116 bytes of header contain text in human-readable form +0 string MATLAB Matlab v +#>11 string/T x \b, at 11 "%.105s" +#!:mime application/octet-stream +!:mime application/x-matlab-data +!:ext mat +# https://de.mathworks.com/help/matlab/import_export/mat-file-versions.html +# level of the MAT-file like: 5.0 7.0 or maybe 7.3 +#>7 string x LEVEL "%.3s" +>7 ubyte =0x35 \b5 mat-file +>7 ubyte !0x35 +>>7 string x \b%.3s mat-file >126 short 0x494d (big endian) ->>124 beshort x version 0x%04x +>>124 beshort x version %#04x >126 short 0x4d49 (little endian) ->>124 leshort x version 0x%04x - +# 0x0100 for level 5.0 and 0x0200 for level 7.0 +>>124 leshort x version %#04x +# test again so that default clause works +>126 short x +# created by MATLAB include Platform sometimes without leading comma (0x2C) or missing +# like: GLNX86 PCWIN PCWIN64 SOL2 Windows\0407 nt posix +>>20 search/2 Platform:\040 \b, platform +>>>&0 string x %-0.2s +>>>&2 ubyte !0x2C \b%c +>>>>&0 ubyte !0x2C \b%c +>>>>>&0 ubyte !0x2C \b%c +>>>>>>&0 ubyte !0x2C \b%c +>>>>>>>&0 ubyte !0x2C \b%c +>>>>>>>>&0 ubyte !0x2C \b%c +>>>>>>>>>&0 ubyte !0x2C \b%c +# examples without Platform tag like one_by_zero_char.mat +>>20 default x +>>>11 string x "%s" +# created by MATLAB include time like: Fri Feb 20 15:26:59 2009 +>34 search/9/c created\040on:\040 \b, created +>>&0 string x %-.24s +# MatLab v4 +# From: Joerg Jenderek +# check for valid imaginary flag of Matlab matrix version 4 +13 ushort 0 +# check for valid ASCII matrix name +>20 ubyte >0x1F +# skip some CD-ROM filesystem like test-hfs.iso by looking for valid big endian type flag +>>0 ubelong&0xFFffFF00 0x00000300 +>>>0 use matlab4 +# no example for 8-bit and 16-bit integers matrix +>>0 ubelong&0xFFffFF00 0x00000400 +>>>0 use matlab4 +>>0 ulelong x +# skip big endian variant by looking for valid low lttle endian type flag +>>0 ulelong <53 +>>>0 use \^matlab4 +# display information of Matlab v4 mat-file +0 name matlab4 Matlab v4 mat-file +#!:mime application/octet-stream +!:mime application/x-matlab-data +!:ext mat +# 20-byte header with 5 long integers that contains information describing certain attributes of the Matrix +# type flag decimal MOPT; maximal 4052=FD4h; maximal 52=34h for little endian +#>0 ubelong x \b, type flag %u +#>0 ubelong x (%#x) +# M: 0~little endian 1~Big Endian 2~VAX D-float 3~VAX G-float 4~Cray +#>0 ubelong/1000 x \b, M=%u +>0 ubelong/1000 0 (little endian) +>0 ubelong/1000 1 (big endian) +>0 ubelong/1000 2 (VAX D-float) +>0 ubelong/1000 3 (VAX G-float) +>0 ubelong/1000 4 (Cray) +# namlen; the length of the matrix name +#>16 ubelong x \b, name length %u +# nul terminated matrix name like: fit_params testmatrix testsparsecomplex teststringarray +#>20 string x \b, MATRIX NAME="%s" +>16 pstring/L x %s +# T indicates the matrix type: 0~numeric 1~text 2~sparse +#>0 ubelong%10 x \b, T=%u +>0 ubelong%10 0 \b, numeric +>0 ubelong%10 1 \b, text +>0 ubelong%10 2 \b, sparse +# mrows; number of rows in the matrix like: 1 3 8 +>4 ubelong x \b, rows %u +# ncols; number of columns in the matrix like: 1 3 4 5 9 43 +>8 ubelong x \b, columns %u +# imagf; imaginary flag; 1~matrix has an imaginary part 0~only real data +>12 ubelong !0 \b, imaginary +# real; Real part of the matrix consists of mrows * ncols numbers diff --git a/magic/Magdir/measure b/magic/Magdir/measure index c99cac841125..42e7186484c8 100644 --- a/magic/Magdir/measure +++ b/magic/Magdir/measure @@ -1,6 +1,6 @@ #------------------------------------------------------------------------------ -# $File: measure,v 1.2 2018/06/23 16:13:15 christos Exp $ +# $File: measure,v 1.3 2021/03/25 17:30:10 christos Exp $ # measure: file(1) magic for measurement data # DIY-Thermocam raw data @@ -37,3 +37,8 @@ >>9600 default x (Lepton 2.x), >>>9600 use diy-thermocam-parser +# Becker & Hickl Photon Counting (PMS) data file +# format documentation: https://www.becker-hickl.com/wp-content/uploads/2018/11/opm-pms400-v01.pdf (page 57) +(0x02.l) string *IDENTIFICATION Becker & Hickl PMS Data File +>0x12 short x (%d data blocks) +!:ext sdt diff --git a/magic/Magdir/misctools b/magic/Magdir/misctools index cef1da5f4e5f..4292e2b0401a 100644 --- a/magic/Magdir/misctools +++ b/magic/Magdir/misctools @@ -1,22 +1,37 @@ #----------------------------------------------------------------------------- -# $File: misctools,v 1.18 2019/04/19 00:42:27 christos Exp $ +# $File: misctools,v 1.20 2021/05/25 15:13:55 christos Exp $ # misctools: file(1) magic for miscellaneous UNIX tools. # 0 search/1 %%!! X-Post-It-Note text 0 string/c BEGIN:VCALENDAR vCalendar calendar file !:mime text/calendar -# updated by Joerg Jenderek at Apr 2015 -# Extension: .vcf +# updated by Joerg Jenderek at Apr 2015, May 2021 # https://en.wikipedia.org/wiki/VCard -0 string/c BEGIN:VCARD vCard visiting card +# URL: http://fileformats.archiveteam.org/wiki/VCard +# https://datatracker.ietf.org/doc/html/rfc6350 +# the value is case-insensitive +0 string/c begin:vcard +# skip DROID fmt-395-signature-id-634.vcf +>13 string !VERSION:END vCard visiting card # deprecated #!:mime text/x-vcard !:mime text/vcard +!:apple ????vCrd +!:ext vcf/vcard # VERSION must come right after BEGIN for 3.0 or 4.0 except in 2.1 , where it can be anywhere ->12 search/14000/c VERSION: +# Joerg_Jenderek_67.vcf +>>12 search/0x113b4/c version: # VERSION 2.1 , 3.0 or 4.0 ->>&0 string x \b, version %-.3s +>>>&0 string x \b, version %-.3s +>>>&0 string !2.1 +>>>>13 string !VERSION: \b, 2nd line does not start with VERSION: +# downcase violates RFC 6350, but some "bad" software produce such vcards +>>0 string !BEGIN \b, not up case +# http://ftp.mozilla.org/pub/thunderbird/candidates/ +# 78.10.1-candidates/build1/source/thunderbird-78.10.1.source.tar.xz +# thunderbird-78.10.1/comm/mailnews/import/test/unit/resources/basic_vcard_addressbook.vcf +>>11 beshort !0x0D0A \b, lines not separated by CRLF # Summary: Libtool library file # Extension: .la @@ -41,18 +56,18 @@ !:ext dmp/mdmp # The high-order word is an internal value that is implementation specific. # The low-order word is MINIDUMP_VERSION 0xA793 ->4 ulelong&0x0000FFFF !0xA793 \b, version 0x%4.4x +>4 ulelong&0x0000FFFF !0xA793 \b, version %#4.4x # NumberOfStreams 8,9,10,13 >8 ulelong x \b, %d streams # StreamDirectoryRva 0x20 ->12 ulelong !0x20 \b, 0x%8.8x RVA +>12 ulelong !0x20 \b, %#8.8x RVA # CheckSum 0 ->16 ulelong !0 \b, CheckSum 0x%8.8x +>16 ulelong !0 \b, CheckSum %#8.8x # Reserved or TimeDateStamp >20 ledate x \b, %s # https://msdn.microsoft.com/en-us/library/windows/desktop/ms680519%28v=vs.85%29.aspx # Flags MINIDUMP_TYPE enumeration type 0 0x121 0x800 ->24 ulelong x \b, 0x%x type +>24 ulelong x \b, %#x type # >24 ulelong >0 \b; include # >>24 ulelong &0x00000001 \b data sections, # >>24 ulelong &0x00000020 \b list of unloaded modules, diff --git a/magic/Magdir/modem b/magic/Magdir/modem index c7a53ee436fe..6eb21136e462 100644 --- a/magic/Magdir/modem +++ b/magic/Magdir/modem @@ -1,6 +1,6 @@ #------------------------------------------------------------------------------ -# $File: modem,v 1.9 2019/04/19 00:42:27 christos Exp $ +# $File: modem,v 1.10 2021/04/26 15:56:00 christos Exp $ # modem: file(1) magic for modem programs # # From: Florian La Roche <florian@knorke.saar.de> @@ -59,7 +59,7 @@ # 0 string RMD1 raw modem data >4 string >\0 (%s / ->20 short >0 compression type 0x%04x) +>20 short >0 compression type %#04x) # # portable voice format 1 diff --git a/magic/Magdir/motorola b/magic/Magdir/motorola index e19a9075621f..af93720f2968 100644 --- a/magic/Magdir/motorola +++ b/magic/Magdir/motorola @@ -1,6 +1,6 @@ #------------------------------------------------------------------------------ -# $File: motorola,v 1.11 2014/04/30 21:41:02 christos Exp $ +# $File: motorola,v 1.12 2021/04/26 15:56:00 christos Exp $ # motorola: file(1) magic for Motorola 68K and 88K binaries # # 68K @@ -60,7 +60,7 @@ >22 belong &0x01 fastload flag, >22 belong &0x02 may be loaded to alternate RAM, >22 belong &0x04 malloc may be from alternate RAM, ->22 belong x flags: 0x%X, +>22 belong x flags: %#X, >26 beshort 0 no relocation tab >26 beshort !0 + relocation tab >30 string SFX [Self-Extracting LZH SFX archive] diff --git a/magic/Magdir/mozilla b/magic/Magdir/mozilla index bc6b6a66b91e..32f3bb7e9c46 100644 --- a/magic/Magdir/mozilla +++ b/magic/Magdir/mozilla @@ -1,6 +1,6 @@ #------------------------------------------------------------------------------ -# $File: mozilla,v 1.10 2019/04/19 00:42:27 christos Exp $ +# $File: mozilla,v 1.12 2021/04/26 15:56:00 christos Exp $ # mozilla: file(1) magic for Mozilla XUL fastload files # (XUL.mfasl and XPC.mfasl) # URL: https://www.mozilla.org/ @@ -14,7 +14,7 @@ # Reference: https://github.com/avih/dejsonlz4/archive/master.zip/ # dejsonlz4-master\src\dejsonlz4.c # Note: mostly JSON compressed with a non-standard LZ4 header -# can be unpacked by dejsonlz4 but not lz4 programm. +# can be unpacked by dejsonlz4 but not lz4 program. 0 string mozLz40\0 Mozilla lz4 compressed data !:mime application/x-lz4+json # mozlz4 extension seems to be used for search/store, while jsonlz4 for bookmarks @@ -22,7 +22,7 @@ # decomp_size >8 ulelong x \b, originally %u bytes # lz4 data -#>12 ubequad x \b, lz4 data 0x%16.16llx +#>12 ubequad x \b, lz4 data %#16.16llx # From: Joerg Jenderek # URL: https://en.wikipedia.org/wiki/Firefox_4 diff --git a/magic/Magdir/msdos b/magic/Magdir/msdos index 7ddbb30fbbe0..c586210218bf 100644 --- a/magic/Magdir/msdos +++ b/magic/Magdir/msdos @@ -1,6 +1,6 @@ #------------------------------------------------------------------------------ -# $File: msdos,v 1.137 2020/03/20 17:20:19 christos Exp $ +# $File: msdos,v 1.152 2021/10/12 18:26:10 christos Exp $ # msdos: file(1) magic for MS-DOS files # @@ -47,7 +47,7 @@ # Tests for various EXE types. # -# Many of the compressed formats were extraced from IDARC 1.23 source code. +# Many of the compressed formats were extracted from IDARC 1.23 source code. # 0 string/b MZ # All non-DOS EXE extensions have the relocation table more than 0x40 bytes into the file. @@ -55,7 +55,9 @@ !:mime application/x-dosexec # Windows and later versions of DOS will allow .EXEs to be named with a .COM # extension, mostly for compatibility's sake. -!:ext exe/com +# URL: https://en.wikipedia.org/wiki/Personal_NetWare#VLM +# Reference: https://mark0.net/download/triddefs_xml.7z/defs/e/exe-vlm-msg.trid.xml +!:ext exe/com/vlm # These traditional tests usually work but not always. When test quality support is # implemented these can be turned on. #>>0x18 leshort 0x1c (Borland compiler) @@ -68,7 +70,7 @@ >>(0x3c.l+24) leshort 0x020b \b32+ executable >>(0x3c.l+24) leshort 0x0107 ROM image >>(0x3c.l+24) default x Unknown PE signature ->>>&0 leshort x 0x%x +>>>&0 leshort x %#x >>(0x3c.l+22) leshort&0x2000 >0 (DLL) >>(0x3c.l+92) leshort 1 # Native PEs include ntoskrnl.exe, hal.dll, smss.exe, autochk.exe, and all the @@ -107,7 +109,7 @@ >>(0x3c.l+92) leshort 14 (XBOX) >>(0x3c.l+92) leshort 15 (Windows boot application) >>(0x3c.l+92) default x (Unknown subsystem ->>>&0 leshort x 0x%x) +>>>&0 leshort x %#x) >>(0x3c.l+4) leshort 0x14c Intel 80386 >>(0x3c.l+4) leshort 0x166 MIPS R4000 >>(0x3c.l+4) leshort 0x168 MIPS R10000 @@ -139,7 +141,7 @@ >>(0x3c.l+4) leshort 0xaa64 Aarch64 >>(0x3c.l+4) leshort 0xc0ee MSIL >>(0x3c.l+4) default x Unknown processor type ->>>&0 leshort x 0x%x +>>>&0 leshort x %#x >>(0x3c.l+22) leshort&0x0200 >0 (stripped to external PDB) >>(0x3c.l+22) leshort&0x1000 >0 system file >>(0x3c.l+24) leshort 0x010b @@ -289,7 +291,7 @@ >>>&1 string x for DOS, Win or OS/2, emx %s >>&(&0x42.l-3) byte x >>>&0x26 string UPX \b, UPX compressed -# and yet another guess: small .text, and after large .data is unusal, could be 32lite +# and yet another guess: small .text, and after large .data is unusual, could be 32lite >>&0x2c search/0xa0 .text >>>&0x0b lelong <0x2000 >>>>&0 lelong >0x6000 \b, 32lite compressed @@ -362,12 +364,93 @@ >>49824 leshort =1 \b, 1 file >>49824 leshort >1 \b, %u files +# Summary: OS/2 LX Library and device driver (no DOS stub) +# From: Joerg Jenderek +# URL: http://en.wikipedia.org/wiki/EXE +# Reference: http://www.textfiles.com/programming/FORMATS/lxexe.txt +# https://github.com/open-watcom/open-watcom-v2/blob/master/bld/watcom/h/exeflat.h +# Note: by dll-os2-no-dos-stub.trid.xml called "OS/2 Dynamic Link Library (no DOS stub)" +# TODO: unify with DOS stub variant (MZ magic) +0 string/b LX +>2 ushort =0 +>>0 use lx-executable +# no examples found for big endian variant +>2 ushort =0x0101 +>>0 use \^lx-executable +0 name lx-executable +# similar looking like variant with MS-DOS stub (MZ magic): "MS-DOS executable, LX" +#>0x00 uleshort x executable, +# signature OSF_FLAT_LX_SIGNATURE~0x584C~LX OSF_FLAT_SIGNATURE~0x454C~LE +>0x00 uleshort =0x584c LX +>0x00 uleshort =0x454C LE +>0x00 uleshort x executable +#!:mime application/x-msdownload +!:mime application/x-lx-executable +# byte order: 00h~little-endian non-zero=1~big-endian +#>0x02 ubyte =0 (little-endian) +>0x02 ubyte !0 (big-endian) +# FOR DEBUGGING! +# word order: 00h~little-endian non-zero=1~big-endian +#>0x03 ubyte =0 \b, little-endian word order +#>0x03 ubyte !0 \b, big-endian word order +# cpu_type; CPU type like: 1~286 2~386 3~486 4 20h~i860 21h~Intel N11 40h~MIPS R2000,R3000 41h~MIPS R6000 42h~MIPS R4000 +#>0x08 uleshort x \b, CPU %u +# os_type; target operating system like: 0~unknown 1~OS/2 2~Windows 3~DOS 4.x 4~Windows 386 +#>0x0A leshort x \b, OS %u +# flags; module type flags +#>0x10 ulelong x \b, FLAGS %#8.8x +# 00000002h ~Reserved for system use +#>0x10 ulelong &0x00000002 \b, 2h reserved +# OSF_INIT_INSTANCE=00000004h ~Per-Process Library Initialization; setting this bit for EXE file is invalid +#>0x10 ulelong &0x00000004 \b, per-process library Initialization +# OSF_INTERNAL_FIXUPS_DONE=00000010h ~Internal fixups for the module have been applied +#>0x10 ulelong &0x00000010 \b, int. fixup +# OSF_EXTERNAL_FIXUPS_DONE=00000020h ~External fixups for the module have been applied +#>0x10 ulelong &0x00000020 \b, ext. fixup +# OSF_NOT_PM_COMPATIBLE=00000100h ~Incompatible with PM windowing +#>0x10 ulelong&0x00000100 =0x00000100 \b, incompatible with PM windowing +# OSF_PM_COMPATIBLE=00000200h ~Compatible with PM windowing +#>0x10 ulelong&0x00000200 =0x00000200 \b, compatible with PM windowing +# bit 17; device driver +#>0x10 ulelong&0x00020000 >0 \b, device driver +# Per-process Library Termination; setting this bit for EXE file is invalid +#>0x10 ulelong&0x40000000 =0x40000000 \b, per-process library termination +>0x0a leshort 1 for OS/2 +# no example found +>0x0a leshort 3 for DOS +# http://www.ctyme.com/intr/rb-2939.htm#Table1610 +# library by module type mask 00038000h (bits 15-17); +# 0h ~exectable Program module +>0x10 ulelong&0x00038000 =0x00000000 (program) +#!:ext exe +# OSF_IS_DLL=8000h ~Library module (DLL) +>0x10 ulelong&0x00038000 >0x00000000 +# OSF_PHYS_DEVICE=00020000h ~device driver +>>0x10 ulelong&0x00020000 >0 (device driver) +!:ext sys +# if not device driver it is library (DLL) +>>0x10 ulelong&0x00020000 =0 (library) +!:ext dll +# bits 8-10; OSF_PM_APP=300h in flags ~Uses PM windowing API; either it is GUI or console +>0x10 ulelong&0x00000300 =0x00000300 (GUI) +>0x10 ulelong&0x00000300 !0x00000300 (console) +# CPU type +>0x08 uleshort 1 i80286 +# all inspected examples +>0x08 uleshort 2 i80386 +>0x08 uleshort 3 i80486 +>0x08 uleshort 4 i80586 +# 21h Intel "N11" or compatible +# 40h MIPS Mark I ( R2000, R3000) or compatible +# 41h MIPS Mark II ( R6000 ) or compatible +# 42h MIPS Mark III ( R4000 ) or compatible + # added by Joerg Jenderek of https://www.freedos.org/software/?prog=kc # and https://www.freedos.org/software/?prog=kpdos # for FreeDOS files like KEYBOARD.SYS, KEYBRD2.SYS, KEYBRD3.SYS, *.KBD 0 string/b KCF FreeDOS KEYBoard Layout collection # only version=0x100 found ->3 uleshort x \b, version 0x%x +>3 uleshort x \b, version %#x # length of string containing author,info and special characters >6 ubyte >0 #>>6 pstring x \b, name=%s @@ -378,42 +461,54 @@ # for FreeDOS *.KL files 0 string/b KLF FreeDOS KEYBoard Layout file # only version=0x100 or 0x101 found ->3 uleshort x \b, version 0x%x +>3 uleshort x \b, version %#x # stringlength >5 ubyte >0 >>8 string x \b, name=%-.2s 0 string \xffKEYB\ \ \ \0\0\0\0 >12 string \0\0\0\0`\004\360 MS-DOS KEYBoard Layout file -# DOS device driver updated by Joerg Jenderek at May 2011,Mar 2017 +# DOS device driver updated by Joerg Jenderek at May 2011,Mar 2017,Aug 2020 +# URL: http://fileformats.archiveteam.org/wiki/DOS_device_driver +# Reference: http://www.delorie.com/djgpp/doc/rbinter/it/46/16.html # https://amaus.net/static/S100/IBM/software/DOS/DOS%20techref/CHAPTER.009 0 ulequad&0x07a0ffffffff 0xffffffff ->0 use msdos-driver +# skip OS/2 INI ./os2 +>4 ubelong !0x14000000 +>>0 use msdos-driver 0 name msdos-driver DOS executable ( #!:mime application/octet-stream !:mime application/x-dosdriver # also found FreeDOS print driver SPOOL.DEV and disc compression driver STACLOAD.BIN -!:ext sys/dev/bin ->40 search/7 UPX! \bUPX compressed +# and IBM Token-Ring adapter IBMTOK.DOS. Why and when DOS instead SYS is used? +# PROTMAN.DOS ELNKPL.DOS +!:ext sys/dev/bin/dos +# 1 space char after "UPX compressed" to get phrase like "UPX compressed character device" +>40 search/7 UPX! \bUPX compressed # DOS device driver attributes >4 uleshort&0x8000 0x0000 \bblock device driver # character device >4 uleshort&0x8000 0x8000 \b ->>4 uleshort&0x0008 0x0008 \bclock +# 1 space char after "clock" to get phrase like "clock character device driver CLOCK$" +>>4 uleshort&0x0008 0x0008 \bclock # fast video output by int 29h ->>4 uleshort&0x0010 0x0010 \bfast +# 1 space char after "fast" to get phrase like "fast standard input/output character device driver" +>>4 uleshort&0x0010 0x0010 \bfast # standard input/output device ->>4 uleshort&0x0003 >0 \bstandard +# 1 space char after "standard" to get phrase like "standard input/output character device driver" +>>4 uleshort&0x0003 >0 \bstandard >>>4 uleshort&0x0001 0x0001 \binput >>>4 uleshort&0x0003 0x0003 \b/ ->>>4 uleshort&0x0002 0x0002 \boutput +# 1 space char after "output" to get phrase like "input/output character device driver" +>>>4 uleshort&0x0002 0x0002 \boutput >>4 uleshort&0x8000 0x8000 \bcharacter device driver >0 ubyte x # upx compressed device driver has garbage instead of real in name field of header >>40 search/7 UPX! >>40 default x # leading/trailing nulls, zeros or non ASCII characters in 8-byte name field at offset 10 are skipped ->>>12 ubyte >0x2E \b +# 1 space char before device driver name to get phrase like "device driver PROTMAN$" +>>>12 ubyte >0x2E \b >>>>10 ubyte >0x20 >>>>>10 ubyte !0x2E >>>>>>10 ubyte !0x2A \b%c @@ -456,6 +551,7 @@ >4 uleshort&0x8000 0x0000 >>4 uleshort&0x4842 >0 \bsupport >0 ubyte x \b) +>0 ulelong !0xffffffff with pointer %#x # DOS driver cmd640x.sys has 0x12 instead of 0xffffffff for pointer field to next device header 0 ulequad 0x0513c00000000012 >0 use msdos-driver @@ -464,6 +560,7 @@ >0 use msdos-driver 0 ulequad 0x007f00000000ffff >0 use msdos-driver +# https://www.uwe-sieber.de/files/cfg_echo.zip 0 ulequad 0x001600000000ffff >0 use msdos-driver # DOS drivers LS120.SYS, MKELS120.SYS use reserved bits of attribute field @@ -471,6 +568,12 @@ >0 use msdos-driver 0 ulequad 0x07bd08c2ffffffff >0 use msdos-driver +# 3Com EtherLink 3C501 CID\SERVER\IBMLS\IBM500D1\DLSNETDR.ZIP\ELNK.DOS +0 ulequad 0x027ac0c0ffffffff +>0 use msdos-driver +# IBM Streamer CID\SERVER\IBMLS\IBM500D1\DLSNETDR.ZIP\IBMMPC.DOS +0 ulequad 0x00228880ffffffff +>0 use msdos-driver # updated by Joerg Jenderek # GRR: line below too general as it catches also @@ -558,35 +661,48 @@ # syslinux version (4.x) # "COM executable (COM32R)" or "Syslinux COM32 module" by TrID >>>1 lelong 0x21CD4CFe \b, relocatable) -# remaining are DOS COM executables starting with assembler instruction MOV -# like FreeDOS BANNER*.COM FINDDISK.COM GIF2RAW.COM WINCHK.COM -# MS-DOS SYS.COM RESTART.COM -# SYSLINUX.COM (version 1.40 - 2.13) -# GFXBOOT.COM (version 3.75) -# COPYBS.COM POWEROFF.COM INT18.COM +# Hajin Jang <hajin_jang@worksmobile.com>: +# Disable simplest COM signature to prevent false positive on some EUC-KR text files. +## remaining are DOS COM executables starting with assembler instruction MOV +## like FreeDOS BANNER*.COM FINDDISK.COM GIF2RAW.COM WINCHK.COM +## MS-DOS SYS.COM RESTART.COM +## SYSLINUX.COM (version 1.40 - 2.13) +## GFXBOOT.COM (version 3.75) +## COPYBS.COM POWEROFF.COM INT18.COM >>1 default x COM executable for DOS !:mime application/x-dosexec -#!:mime application/x-ms-dos-executable -#!:mime application/x-msdos-program +##!:mime application/x-ms-dos-executable +##!:mime application/x-msdos-program !:ext com +# URL: https://en.wikipedia.org/wiki/UPX +# Reference: https://github.com/upx/upx/archive/v3.96.zip/upx-3.96/ +# src/stub/src/i086-dos16.com.S +# Update: Joerg Jenderek +# assembler instructions: cmp sp, offset sp_limit 0 string/b \x81\xfc +#>2 uleshort x \b, sp_limit=%#x +# assembler instructions: jump above +2; int 0x20; mov cx, offset bytes_to_copy >4 string \x77\x02\xcd\x20\xb9 ->>36 string UPX! FREE-DOS executable (COM), UPX compressed +#>9 uleshort x \b, [bytes_to_copy]=%#x +# at different offsets assembler instructions: push di; jump decomp_start_n2b +>0x1e search/3 \x57\xe9 +#>>&0 uleshort x \b, decomp_start_n2b=%#x +# src/stub/src/include/header.S; UPX_MAGIC_LE32 +>>&2 string UPX! FREE-DOS executable (COM), UPX !:mime application/x-dosexec +# UPX compressed *.CPI; See ./fonts +>>>&21 string =FONT compressed DOS code page font +!:ext cpx +>>>&21 string !FONT compressed !:ext com +# compressed size? +#>>>&14 uleshort+152 x \b, %u bytes +# uncompressed len +>>>&12 uleshort x \b, uncompressed %u bytes 252 string Must\ have\ DOS\ version DR-DOS executable (COM) !:mime application/x-dosexec !:ext com -# added by Joerg Jenderek at Oct 2008 -# GRR search is not working -#34 search/2 UPX! FREE-DOS executable (COM), UPX compressed -34 string UPX! FREE-DOS executable (COM), UPX compressed -!:mime application/x-dosexec -!:ext com -35 string UPX! FREE-DOS executable (COM), UPX compressed -!:mime application/x-dosexec -!:ext com # GRR search is not working #2 search/28 \xcd\x21 COM executable for MS-DOS #WHICHFAT.cOM @@ -616,7 +732,11 @@ !:mime application/x-dosexec !:ext com #HELP.COm EDIT.coM -18 string \xcd\x21 COM executable for MS-DOS +18 string \xcd\x21 +# not printable before it? +>17 byte >32 +>>17 byte <126 +>>17 default x COM executable for MS-DOS !:mime application/x-dosexec !:ext com #NWRPLTRM.COm @@ -687,7 +807,7 @@ # reserved; must be zero #>>6 ulelong !0 \b, reserved %u # block pointer to the block containing optional file manager information -#>>0x1C uleshort x \b, at 0x%x info block +#>>0x1C uleshort x \b, at %#x info block # jump to File manager information block >>(0x1C.s*128) uleshort x # test for valid information start; maybe also 0012h @@ -717,7 +837,7 @@ # number of blocks used in the file; seems to be 0 for Word 4.0 and Write 3.0 >>0x6A uleshort >0 \b, %u blocks # bit field for corrected text areas -#>>0x6C uleshort x \b, 0x%x bit field +#>>0x6C uleshort x \b, %#x bit field # text of document; some times start with 4 non printable characters like CR LF >>128 ubyte x \b, >>>128 ubyte >0x1F @@ -821,7 +941,7 @@ >>>>6 uleshort !0x0004 formatting data !:ext fXX # main revision number ->>>>4 uleshort x \b, revision 0x%x +>>>>4 uleshort x \b, revision %#x >>>6 uleshort =0x0004 \b, cell range # active cellcoord range (start row, page,column ; end row, page, column) # start values normally 0~1st sheet A1 @@ -835,9 +955,9 @@ >>>>12 uleshort x \b%d, >>>>15 ubyte x \b%d # Lotus Multi Byte Character Set (1~cp850,2~cp851,...,16~japan,...,31~??) ->>>>20 ubyte >1 \b, character set 0x%x +>>>>20 ubyte >1 \b, character set %#x # flags ->>>>21 ubyte x \b, flags 0x%x +>>>>21 ubyte x \b, flags %#x >>>6 uleshort !0x0004 # record type (FONTNAME=00AEh) >>>>30 search/29 \0\xAE @@ -855,7 +975,7 @@ !:strength -1 # skip Windows cursors with image height <256 and keep Lotus with low opcode 0001-0083h >7 ubyte 0 -# skip Windows cursors with image width 256 and keep Lotus with positiv opcode +# skip Windows cursors with image width 256 and keep Lotus with positive opcode >>6 ubyte >0 Lotus # !:mime application/x-123 !:mime application/vnd.lotus-1-2-3 @@ -911,10 +1031,10 @@ # (version 5.26) labeled the entry as "Lotus 1-2-3" >>>4 default x unknown worksheet or configuration !:ext cnf ->>>>4 uleshort x \b, revision 0x%x +>>>>4 uleshort x \b, revision %#x # 2nd record for most worksheets describes cells range >>>6 use lotus-cells -# 3nd record for most japan worksheets describes cells range +# 3rd record for most japan worksheets describes cells range >>>(8.s+10) use lotus-cells # check and then display Lotus worksheet cells range 0 name lotus-cells @@ -1037,7 +1157,7 @@ #>3 ubyte x \b, reserved %x #>8 ulelong x \b, image size %d # offset of PNG or DIB image -#>12 ulelong x \b, offset 0x%x +#>12 ulelong x \b, offset %#x # PNG header (\x89PNG) >(12.l) ubelong =0x89504e47 # 1 space char after "with" to get phrase "with PNG image" by magic in ./images @@ -1166,6 +1286,9 @@ 0 string NG\0\001 # only value 0x100 found at offset 2 >2 ulelong 0x00000100 Norton Guide +!:mime application/x-norton-guide +# often like NORTON.NG but some times like NC.HLP +!:ext ng/hlp # Title[40] >>8 string >\0 "%-.40s" #>>6 uleshort x \b, MenuCount=%u @@ -1173,6 +1296,66 @@ >>48 string >\0 \b, %-.66s >>114 string >\0 %-.66s +# URL: https://en.wikipedia.org/wiki/Norton_Commander +# Reference: http://mark0.net/download/triddefs_xml.7z/defs/m/msg-nc-eng.trid.xml +# From: Joerg Jenderek +# Note: Message file is used by executable with same main name. +# Only tested with version 5.50 (english) and 2.01 (Windows) +0 string Abort +# \0 or i +#>5 ubyte x %x +# skip ASCII Abort text by looking for error message like in NCVIEW.MSG +>6 search/7089 Non-DOS\ disk Norton Commander module message +!:mime application/x-norton-msg +!:ext msg + +# URL: http://www.antonis.de/dos/dos-tuts/mpdostip/html/nwdostip.htm +# Reference: https://mark0.net/download/triddefs_xml.7z/defs/m/msg-netware-dos.trid.xml +# From: Joerg Jenderek +0 string DOS\ Client\ Message\ File: Novell DOS client message +#!:mime application/octet-stream +#!:mime application/x-novell-msg +!:ext msg +# look for second letter instead space character +>26 ubyte >0x20 +# digit 1 or often main or program name like: IPXODI.COM TASKID pnwtrap DOSRqstr +>>25 ubyte !0x20 %c +>>>26 ubyte !0x20 \b%c +>>>>27 ubyte !0x20 \b%c +>>>>>28 ubyte !0x20 \b%c +>>>>>>29 ubyte !0x20 \b%c +>>>>>>>30 ubyte !0x20 \b%c +>>>>>>>>31 ubyte !0x20 \b%c +>>>>>>>>>32 ubyte !0x20 \b%c +>>>>>>>>>>33 ubyte !0x20 \b%c +>>>>>>>>>>>34 ubyte !0x20 \b%c +>>>>>>>>>>>>35 ubyte !0x20 \b%c +>>>>>>>>>>>>>36 ubyte !0x20 \b%c +# followed by string like: 0 v.10 V1.20 +# +# followed by ,\040Tran +>28 search/14 ,\040Tran +# probably translated version string like: 0 v1.00 +>>&0 string x \b, tran version %s +# followed by Ctrl-J Ctrl-Z +>>>&0 ubyte !0xa \b, terminated by %#2.2x +>>>>&0 ubyte x \b%2.2x +# Ctrl-Z +>0x65 ubyte !0x1A \b, at 0x65 %#x +# one +>0x66 ubyte !0x01 \b, at 0x66 %#x +# URL: https://en.wikipedia.org/wiki/NetWare +# Reference: http://mark0.net/download/triddefs_xml.7z/defs/d/dat-novell-msg.trid.xml +# ftp://ftp.iitb.ac.in/LDP/en/NLM-HOWTO/NLM-HOWTO-single.html +# From: Joerg Jenderek +0 string Novell\ Message\ Librarian\ Data\ File Novell message librarian data +#>35 string Version\ 1.00 +#>49 string COPYRIGHT\ (c)\ 1985\ by\ Novell,\ Inc. +#>83 string \ \ All\ Rights\ Reserved +#!:mime application/octet-stream +#!:mime application/x-novell-msg +!:ext msg +#!:ext msg/dat # 4DOS help (.HLP) files added by Joerg Jenderek from source TPHELP.PAS # of https://www.4dos.info/ # pointer,HelpID[8]=4DHnnnmm @@ -1234,7 +1417,7 @@ # member Macromedia Flash data *.swf implies IncrediMail skin like in im2.ims >>0x2c search/211/c .swf\0 skin !:ext ims -# member anim.im3 implies IncrediMail animation like in letter_fold.ima +# member anim.im3 implies IncrediMail animation like in letter_fold.ima >>0x2c search/92/c anim.im3\0 animation !:ext ima # other IncrediMail cab archive @@ -1270,7 +1453,7 @@ !:mime application/vnd.ms-cab-compressed !:ext msu >>>&-1 default x -# look at point charcter of 1st archive member name for file name extension +# look at point character of 1st archive member name for file name extension >>>>&-1 search/255 . # http://www.pptfaq.com/FAQ00164_What_is_a_PPZ_file-.htm # PPZ were created using Pack & Go feature of PowerPoint versions 97 - 2002 @@ -1329,7 +1512,7 @@ #>4 belong !0 \b, reserved1 %x #>12 belong !0 \b, reserved2 %x # offset of the first CFFILE entry coffFiles: minimal 2Ch ->16 ulelong x \b, at 0x%x +>16 ulelong x \b, at %#x >(16.l) use cab-file # at least also 2nd member >28 uleshort >1 @@ -1339,12 +1522,12 @@ >>>>&0 use cab-file #>20 belong !0 \b, reserved %x # Cabinet file format version. Currently, versionMajor = 1 and versionMinor = 3 ->24 ubeshort !0x0301 \b version 0x%x +>24 ubeshort !0x0301 \b version %#x # number of CFFOLDER entries >26 uleshort >1 \b, %u cffolders # cabinet file option indicators 1~PREVIOUS, 2~NEXT, 4~reserved fields # only found for flags 0 1 2 3 4 not 7 ->30 uleshort >0 \b, flags 0x%x +>30 uleshort >0 \b, flags %#x # Cabinet files have a 16-bit cabinet setID field that is designed for application use. # default is zero, however, the -i option of cabarc can be used to set this field >32 uleshort >0 \b, ID %u @@ -1395,30 +1578,30 @@ # display folder structure CFFOLDER information like compression of cabinet 0 name cab-folder # offset of the CFDATA block in this folder -#>0 ulelong x \b, coffCabStart 0x%x +#>0 ulelong x \b, coffCabStart %#x # number of CFDATA blocks in folder >4 uleshort x \b, %u datablock # plural s >4 uleshort >1 \bs # compression typeCompress: 0~None 1~MSZIP 0x1503~LZX:21 0x1003~LZX:16 0x0f03~LZX:15 ->6 uleshort x \b, 0x%x compression +>6 uleshort x \b, %#x compression # optional per-folder reserved area -#>8 ubequad x \b, abReserve 0x%llx +#>8 ubequad x \b, abReserve %#llx # display member structure CFFILE information like member name of cabinet 0 name cab-file -# cbFile is uncompressed size of file in bytes +# cbFile is uncompressed size of file in bytes #>0 ulelong x \b, cbFile %u # uoffFolderStart is uncompressed offset of file in folder -#>4 ulelong >0 \b, uoffFolderStart 0x%x +#>4 ulelong >0 \b, uoffFolderStart %#x # iFolder is index into the CFFOLDER area. 0 indicates first folder in cabinet # define ifoldCONTINUED_FROM_PREV (0xFFFD) # define ifoldCONTINUED_TO_NEXT (0xFFFE) # define ifoldCONTINUED_PREV_AND_NEXT (0xFFFF) ->8 uleshort >0 \b, iFolder 0x%x +>8 uleshort >0 \b, iFolder %#x # date stamp for file -#>10 uleshort x \b, date 0x%x +#>10 uleshort x \b, date %#x # time stamp for file -#>12 uleshort x \b, time 0x%x +#>12 uleshort x \b, time %#x # attribs is attribute flags for file # define _A_RDONLY (0x01) file is read-only # define _A_HIDDEN (0x02) file is hidden @@ -1428,7 +1611,7 @@ # define _A_EXEC (0x40) run after extraction # define _A_NAME_IS_UTF (0x80) szName[] contains UTF # define UNKNOWN (0x0100) undocumented or accident -#>14 uleshort x \b, attribs 0x%x +#>14 uleshort x \b, attribs %#x >14 uleshort >0 + >>14 uleshort &0x0001 \bR >>14 uleshort &0x0002 \bH @@ -1471,7 +1654,7 @@ # for further information. 0 ulelong 1 >40 string \ EMF Windows Enhanced Metafile (EMF) image data ->>44 ulelong x version 0x%x +>>44 ulelong x version %#x 0 string/b \224\246\056 Microsoft Word Document @@ -1516,7 +1699,8 @@ 0 string Jetsam0 Mallard BASIC Jetsam index data # DOS backup 2.0 to 3.2 - +# URL: http://fileformats.archiveteam.org/wiki/BACKUP_(MS-DOS) +# Reference: http://www.ibiblio.org/pub/micro/pc-stuff/freedos/files/dos/restore/brtecdoc.htm # backupid.@@@ # plausibility check for date @@ -1526,6 +1710,7 @@ # actually 121 nul bytes >>>0x7 string \0\0\0\0\0\0\0\0 >>>>0x1 ubyte x DOS 2.0 backup id file, sequence %d +#!:mime application/octet-stream !:ext @@@ >>>>0x0 ubyte 0xff \b, last disk @@ -1548,7 +1733,7 @@ # but sometimes garbage according to Ralf Quint. So can not be used as test #>0x54 string \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0 # first char of full file name is DOS (5Ch) or UNIX (2Fh) path separator -# only DOS variant found. UNIX variant according to V32SLASH.TXT in archive PD0315.EXE +# only DOS variant found. UNIX variant according to V32SLASH.TXT in archive PD0315.EXE >>>>>5 ubyte&0x8C 0x0C # ./msdos (version 5.30) labeled the entry as # "DOS 2.0 backed up file %s, split file, sequence %d" or @@ -1559,7 +1744,9 @@ >>>>>>>1 uleshort x sequence %d of # full file name with path but without drive letter and colon stored from 0x05 til 0x52 >>>>>>0x5 string x file %s +#!:mime application/octet-stream # backup name is original filename +#!:ext doc/exe/rar/zip #!:ext * # magic/Magdir/msdos, 1169: Warning: EXTENSION type ` *' has bad char '*' # file: line 1169: Bad magic entry ' *' diff --git a/magic/Magdir/msooxml b/magic/Magdir/msooxml index 620d5e132f04..06f244fa132c 100644 --- a/magic/Magdir/msooxml +++ b/magic/Magdir/msooxml @@ -1,6 +1,6 @@ #------------------------------------------------------------------------------ -# $File: msooxml,v 1.13 2019/11/27 13:12:55 christos Exp $ +# $File: msooxml,v 1.16 2021/08/16 10:06:55 christos Exp $ # msooxml: file(1) magic for Microsoft Office XML # From: Ralf Brown <ralf.brown@gmail.com> @@ -19,29 +19,32 @@ !:mime application/vnd.openxmlformats-officedocument.presentationml.presentation >0 string xl/ Microsoft Excel 2007+ !:mime application/vnd.openxmlformats-officedocument.spreadsheetml.sheet -0 string visio/ Microsoft Visio 2013+ +>0 string visio/ Microsoft Visio 2013+ !:mime application/vnd.ms-visio.drawing.main+xml +>0 string AppManifest.xaml Microsoft Silverlight Application +!:mime application/x-silverlight-app # start by checking for ZIP local file header signature 0 string PK\003\004 !:strength +10 # make sure the first file is correct >0x1E use msooxml ->0x1E regex \\[Content_Types\\]\\.xml|_rels/\\.rels|docProps +>0x1E default x +>>0x1E regex \\[Content_Types\\]\\.xml|_rels/\\.rels|docProps # skip to the second local file header # since some documents include a 520-byte extra field following the file # header, we need to scan for the next header ->>(18.l+49) search/6000 PK\003\004 +>>>(18.l+49) search/6000 PK\003\004 # now skip to the *third* local file header; again, we need to scan due to a # 520-byte extra field following the file header ->>>&26 search/6000 PK\003\004 +>>>>&26 search/6000 PK\003\004 # and check the subdirectory name to determine which type of OOXML # file we have. Correct the mimetype with the registered ones: # https://technet.microsoft.com/en-us/library/cc179224.aspx ->>>>&26 use msooxml ->>>>&26 default x +>>>>>&26 use msooxml +>>>>>&26 default x # OpenOffice/Libreoffice orders ZIP entry differently, so check the 4th file ->>>>>&26 search/6000 PK\003\004 ->>>>>>&26 use msooxml ->>>>>>&26 default x Microsoft OOXML +>>>>>>&26 search/6000 PK\003\004 +>>>>>>>&26 use msooxml +>>>>>>>&26 default x Microsoft OOXML >>>>>&26 default x Microsoft OOXML diff --git a/magic/Magdir/msx b/magic/Magdir/msx index 69df6416fe7c..60e16569e24f 100644 --- a/magic/Magdir/msx +++ b/magic/Magdir/msx @@ -138,8 +138,8 @@ >>>>>>>>>>>>>>>0x002D ubyte 2 \b, version=MSX2+ >>>>>>>>>>>>>>>0x002D ubyte 3 \b, version=MSX Turbo-R >>>>>>>>>>>>>>>0x002D ubyte >3 \b, version=Unknown MSX %d version ->>>>>>>>>>>>>>>0x0006 ubyte x \b, VDP.DR=0x%2x ->>>>>>>>>>>>>>>0x0007 ubyte x \b, VDP.DW=0x%2x +>>>>>>>>>>>>>>>0x0006 ubyte x \b, VDP.DR=%#2x +>>>>>>>>>>>>>>>0x0007 ubyte x \b, VDP.DW=%#2x >>>>>>>>>>>>>>>0x002B ubyte&0xF 0 \b, charset=Japanese >>>>>>>>>>>>>>>0x002B ubyte&0xF 1 \b, charset=International >>>>>>>>>>>>>>>0x002B ubyte&0xF 2 \b, charset=Korean @@ -188,32 +188,32 @@ # MSX extension ROMs 0 string/b AB >2 uleshort 0x0010 MSX ROM ->>2 uleshort x \b, init=0x%4x ->>4 uleshort >0 \b, stahdl=0x%4x ->>6 uleshort >0 \b, devhdl=0x%4x ->>8 uleshort >0 \b, bas=0x%4x +>>2 uleshort x \b, init=%#4x +>>4 uleshort >0 \b, stahdl=%#4x +>>6 uleshort >0 \b, devhdl=%#4x +>>8 uleshort >0 \b, bas=%#4x >2 uleshort 0x4010 MSX ROM ->>2 uleshort x \b, init=0x%04x ->>4 uleshort >0 \b, stahdl=0x%04x ->>6 uleshort >0 \b, devhdl=0x%04x ->>8 uleshort >0 \b, bas=0x%04x +>>2 uleshort x \b, init=%#04x +>>4 uleshort >0 \b, stahdl=%#04x +>>6 uleshort >0 \b, devhdl=%#04x +>>8 uleshort >0 \b, bas=%#04x >2 uleshort 0x8010 MSX ROM ->>2 uleshort x \b, init=0x%04x ->>4 uleshort >0 \b, stahdl=0x%04x ->>6 uleshort >0 \b, devhdl=0x%04x ->>8 uleshort >0 \b, bas=0x%04x +>>2 uleshort x \b, init=%#04x +>>4 uleshort >0 \b, stahdl=%#04x +>>6 uleshort >0 \b, devhdl=%#04x +>>8 uleshort >0 \b, bas=%#04x 0 string/b AB\0\0 >6 uleshort 0 >>4 uleshort >0x400F MSX-BASIC extension ROM ->>>4 uleshort >0 \b, stahdl=0x%04x ->>>6 uleshort >0 \b, devhdl=0x%04x +>>>4 uleshort >0 \b, stahdl=%#04x +>>>6 uleshort >0 \b, devhdl=%#04x >>>0x1C string OPLL \b, MSX-Music >>>>0x18 string PAC2 \b (external) >>>>0x18 string APRL \b (internal) 0 string/b AB\0\0\0\0 >6 uleshort >0x400F MSX device BIOS ->>6 uleshort >0 \b, devhdl=0x%04x +>>6 uleshort >0 \b, devhdl=%#04x 0 string/b AB @@ -233,38 +233,38 @@ >>>>>>0x12 ubyte x \b%d >>>>>>0x13 ubyte/16 x \b%d >>>>>>0x13 ubyte&0xF x \b%d ->>>>>2 uleshort x \b, init=0x%04x ->>>>>4 uleshort >0 \b, stahdl=0x%04x ->>>>>6 uleshort >0 \b, devhdl=0x%04x ->>>>>8 uleshort >0 \b, bas=0x%04x +>>>>>2 uleshort x \b, init=%#04x +>>>>>4 uleshort >0 \b, stahdl=%#04x +>>>>>6 uleshort >0 \b, devhdl=%#04x +>>>>>8 uleshort >0 \b, bas=%#04x >>>2 uleshort 0 >>>>4 uleshort 0 >>>>>6 uleshort 0 ->>>>>>8 uleshort >0 MSX BASIC program in ROM, bas=0x%04x +>>>>>>8 uleshort >0 MSX BASIC program in ROM, bas=%#04x 0x4000 string/b AB >0x4002 uleshort >0x400F >>0x400A string \0\0\0\0\0\0 MSX ROM with nonstandard page order ->>>0x4002 uleshort x \b, init=0x%04x ->>>0x4004 uleshort >0 \b, stahdl=0x%04x ->>>0x4006 uleshort >0 \b, devhdl=0x%04x ->>>0x4008 uleshort >0 \b, bas=0x%04x +>>>0x4002 uleshort x \b, init=%#04x +>>>0x4004 uleshort >0 \b, stahdl=%#04x +>>>0x4006 uleshort >0 \b, devhdl=%#04x +>>>0x4008 uleshort >0 \b, bas=%#04x 0x8000 string/b AB >0x8002 uleshort >0x400F >>0x800A string \0\0\0\0\0\0 MSX ROM with nonstandard page order ->>>0x8002 uleshort x \b, init=0x%04x ->>>0x8004 uleshort >0 \b, stahdl=0x%04x ->>>0x8006 uleshort >0 \b, devhdl=0x%04x ->>>0x8008 uleshort >0 \b, bas=0x%04x +>>>0x8002 uleshort x \b, init=%#04x +>>>0x8004 uleshort >0 \b, stahdl=%#04x +>>>0x8006 uleshort >0 \b, devhdl=%#04x +>>>0x8008 uleshort >0 \b, bas=%#04x 0x3C000 string/b AB >0x3C008 string \0\0\0\0\0\0\0\0 MSX MegaROM with nonstandard page order ->>0x3C002 uleshort x \b, init=0x%04x ->>0x3C004 uleshort >0 \b, stahdl=0x%04x ->>0x3C006 uleshort >0 \b, devhdl=0x%04x ->>0x3C008 uleshort >0 \b, bas=0x%04x +>>0x3C002 uleshort x \b, init=%#04x +>>0x3C004 uleshort >0 \b, stahdl=%#04x +>>0x3C006 uleshort >0 \b, devhdl=%#04x +>>0x3C008 uleshort >0 \b, bas=%#04x # MSX BIN file #0 byte 0xFE diff --git a/magic/Magdir/neko b/magic/Magdir/neko deleted file mode 100644 index 6bedc22a5a38..000000000000 --- a/magic/Magdir/neko +++ /dev/null @@ -1,12 +0,0 @@ - -#------------------------------------------------------------ -# $File: neko,v 1.2 2019/04/19 00:42:27 christos Exp $ - -# From: Mikhail Gusarov <dottedmag@dottedmag.net> -# NekoVM (https://nekovm.org/) bytecode -0 string NEKO NekoVM bytecode ->4 lelong x (%d global symbols, ->8 lelong x %d global fields, ->12 lelong x %d bytecode ops) -!:mime application/x-nekovm-bytecode - diff --git a/magic/Magdir/netware b/magic/Magdir/netware index c3f57e83819a..089a243644df 100644 --- a/magic/Magdir/netware +++ b/magic/Magdir/netware @@ -1,7 +1,11 @@ #------------------------------------------------------------------------------ -# $File: netware,v 1.4 2009/09/19 16:28:11 christos Exp $ +# $File: netware,v 1.5 2020/09/04 16:30:51 christos Exp $ # netware: file(1) magic for NetWare Loadable Modules (NLMs) # From: Mads Martin Joergensen <mmj@suse.de> +# URL: https://en.wikipedia.org/wiki/NetWare_Loadable_Module 0 string NetWare\ Loadable\ Module NetWare Loadable Module +#!:mime application/octet-stream +!:ext nlm + diff --git a/magic/Magdir/nim-lang b/magic/Magdir/nim-lang new file mode 100644 index 000000000000..bc2cf987c7d3 --- /dev/null +++ b/magic/Magdir/nim-lang @@ -0,0 +1,29 @@ + +#------------------------------------------------------------------------------ +# $File: nim-lang,v 1.3 2021/07/06 12:34:06 christos Exp $ +# nim-lang: file(1) magic for nim +# URL: https://nim-lang.org/ + +0 search/8192 import +>&0 search/64 os +>>&0 use nim1 +>&0 default x +>>&0 search/64 osproc +>>>&0 use nim1 +>>&0 default x +>>>&0 search/64 strutils +>>>>&0 use nim1 + +0 name nim1 +>&0 search/8192 proc +>>&0 use nim2 +>&0 default x +>>&0 search/8192 template +>>>&0 use nim2 +>>&0 default x +>>>&0 search/8192 let +>>>>&0 use nim2 + +0 name nim2 +>&0 search/8192 when Nim source code +!:ext nim diff --git a/magic/Magdir/ole2compounddocs b/magic/Magdir/ole2compounddocs index 7b16a5fa8aea..a5e60a821b5e 100644 --- a/magic/Magdir/ole2compounddocs +++ b/magic/Magdir/ole2compounddocs @@ -1,6 +1,6 @@ #------------------------------------------------------------------------------ -# $File: ole2compounddocs,v 1.8 2020/03/28 23:10:30 christos Exp $ +# $File: ole2compounddocs,v 1.12 2021/09/04 16:00:38 christos Exp $ # Microsoft OLE 2 Compound Documents : file(1) magic for Microsoft Structured # storage (https://en.wikipedia.org/wiki/Compound_File_Binary_Format) # Additional tests for OLE 2 Compound Documents should be under this recipe. @@ -10,7 +10,7 @@ # https://digital-preservation.github.io/droid/ # skip droid skeleton like fmt-39-signature-id-128.doc by valid version >0x1A ushort !0xABAB OLE 2 Compound Document -#>0x1C uleshort x \b, endnian 0x%4.4x +#>0x1C uleshort x \b, endnian %#4.4x # big endian not tested >>0x1C ubeshort =0xfffe \b, big-endian >>>546 string jbjb : Microsoft Word Document @@ -26,25 +26,25 @@ # Minor Version 32h=50 3Bh=59 3Eh=62 >>>0x18 uleshort x \b.%u # SecID of first sector of the directory stream is often 1 but high like 3144h ->>>48 ulelong x \b, SecID 0x%x +>>>48 ulelong x \b, SecID %#x # Sector Shift Exponent in short-stream container stream: 6~64 bytes >>>32 uleshort !6 \b, exponent of short stream %u # total number of sectors used for the FAT >>>44 ulelong >1 \b, %u FAT sectors # SecID of first sector of the short-sector allocation table (Mini FAT) # or -2 (End Of ChainSecID) if not extant ->>>60 ulelong !0xffFFffFE \b, Mini FAT start sector 0x%x +>>>60 ulelong !0xffFFffFE \b, Mini FAT start sector %#x # total number of sectors used for the short-sector allocation table >>>64 ulelong !1 \b, %u Mini FAT sector # plural s >>>>64 ulelong >1 \bs # SecID of first sector of the master sector allocation table (DIFAT) # or -2 (End Of Chain SecID) if no additional sectors used ->>>68 ulelong !0xffFFffFE \b, DIFAT start sector 0x%x +>>>68 ulelong !0xffFFffFE \b, DIFAT start sector %#x # total number of sectors used for the master sector allocation table (DIFAT) >>>72 ulelong >0 \b, %u DIFAT sectors # First part of the master sector allocation table (DIFAT) containing 109 SecIDs -#>>>76 ubequad x \b, DIFAT=0x%16.16llx +#>>>76 ubequad x \b, DIFAT=%#16.16llx #>>>84 ubequad x \b%16.16llx... # pointer to root entry only works with standard configuration for SecID ~< 800h # Red-Carpet-presentation-1.0-1.sdd sg10.sdv 2000_GA_Annual_Review_Data.xls @@ -87,8 +87,8 @@ # https://wikileaks.org/ciav7p1/cms/page_13762814.html # https://m.blog.naver.com/superman4u/40047693679 # https://misc.daniel-marschall.de/projects/guid_analysis/guid.txt -# http://www.windowstricks.in/online-windows-guid-converter -#>80 ubequad !0 \b, clsid 0x%16.16llx +# https://toolslick.com/conversion/data/guid +#>80 ubequad !0 \b, clsid %#16.16llx #>>88 ubequad x \b%16.16llx # test for "Root Entry" inside directory by type 5 value >66 ubyte 5 @@ -210,6 +210,15 @@ >>>>256 lestring16 Thumbnail : Corel PrintHouse image !:mime application/x-corel-cph !:ext cph +# URL: http://fileformats.archiveteam.org/wiki/Corel_Gallery +# Note: format since Gallery 2; sometimes called Corel Multimedia Manager Album +# third directory entry name _INFO_ +>>>>256 lestring16 _INFO_ : Corel Gallery +# second directory entry name _ITEM_ or _DATA_ +# later directory entry names: _ALBUM_ _THUMBNAIL_ +#!:mime application/x-ole-storage +!:mime application/x-corel-gal +!:ext gal # # URL: https://en.wikipedia.org/wiki/Hangul_(word_processor) # Note: "HWP Document File" signature found in FileHeader @@ -231,7 +240,7 @@ >>>>128 lestring16 Current\ User : SoftMaker # third directory entry name SMNativeObjData >>>>>256 lestring16 SMNativeObjData -# 5th directory entry nane PowerPoint +# 5th directory entry name PowerPoint >>>>>>512 lestring16 PowerPoint PowerPoint presentation or template !:mime application/vnd.ms-powerpoint !:ext ppt/pps/pot @@ -251,6 +260,12 @@ >>>>>>128 lestring16 Pictures with pictures # remaining null clsid >>>>128 default x : UNKNOWN +# second directory entry name like VisioDocument Control000 +>>>>>128 lestring16 x with names %.20s +# third directory entry like WordDocument +>>>>>256 lestring16 x %.20s +# forth +>>>>>384 lestring16 x %.20s !:mime application/x-ole-storage # look for known clsid GUID # - Visio documents @@ -315,7 +330,7 @@ !:mime application/vnd.ms-excel # https://www.macdisk.com/macsigen.php XLS5 for Excel 5 !:apple ????XLS9 -# 3nd directory entry name +# 3rd directory entry name >>>>256 lestring16 _VBA_PROJECT_CUR addin !:ext xla/ # 4th directory entry name @@ -365,6 +380,21 @@ !:mime application/vnd.ms-works !:apple ????AWWP !:ext wps +# From: Joerg Jenderek +# URL: https://en.wikipedia.org/wiki/Microsoft_Works +# Reference: http://fileformats.archiveteam.org/wiki/Microsoft_Compound_File +# Note: probably version 6 and 7 +# organize pictures like JPFG images in streams __cf1 with names like +# 001.JPG, 002.JPG ... in streams __fname +>>88 ubequad 0xa1c800c04f612452 : Microsoft +>>>80 ubequad 0xc0c7266eb98cd311 Works portfolio +# 2nd directory entry name PfOrder, 3rd __LastID and 4th __SizeUsed +#!:mime application/x-ole-storage +# https://www.iana.org/assignments/media-types/application/vnd.ms-works +!:mime application/vnd.ms-works +# https://extension.nirsoft.net/wsb +# like: wsbsamp.wsb WORKS2003_CD:\MSWorks\Common\Sammlung.wsb +!:ext wsb #?? # URL: http://fileformats.archiveteam.org/wiki/Microsoft_Publisher >>88 ubequad 0x00c0000000000046 : Microsoft @@ -395,6 +425,25 @@ !:mime application/vnd.ms-project !:ext mpp # +# URL: http://fileformats.archiveteam.org/wiki/WordPerfect +# Reference: http://fileformats.archiveteam.org/wiki/Microsoft_Compound_File +# https://github.com/OneWingedShark/WordPerfect/ +# blob/master/doc/SDK_Help/FileFormats/WPFF_DocumentStructure.htm +# From: Joerg Jenderek +# Note: internal version x.2 or 2.2 like in embedded ole6-PerfectOffice_MAIN.wpd +# 3rd directory entry name PerfectOffice_OBJECT and 2nd PerfectOffice_MAIN, +# which contains WordPerfect document \xffWPC signature handled by ./wordprocessors +>>88 ubequad 0x19370000929679cd : WordPerfect 7 +>>>80 ubequad 0xff739851ad2d2002 Document +!:mime application/vnd.wordperfect +#!:apple ????WPC? +# https://fossies.org/linux/wp2latex/test/ole6.wpd +!:ext wpd +#>>>>0 search/0xc01/s \xffWPC \b, WPC SIGNATURE +# inspect embedded WordPerfect document by ./wordprocessors with 1 space at end +#>>>>>&0 indirect x \b; contains +# GRR: the above expression does not work correctly +# # URL: http://fileformats.archiveteam.org/wiki/SHW_(Corel) #??? >>88 ubequad 0x99ae04021c007002 : WordPerfect @@ -514,6 +563,6 @@ # remaining non null clsid >>88 default x : UNKNOWN !:mime application/x-ole-storage ->>>80 ubequad !0 \b, clsid 0x%16.16llx +>>>80 ubequad !0 \b, clsid %#16.16llx >>>88 ubequad x \b%16.16llx diff --git a/magic/Magdir/os2 b/magic/Magdir/os2 index ace69cb34b23..02f27fa6b075 100644 --- a/magic/Magdir/os2 +++ b/magic/Magdir/os2 @@ -1,6 +1,6 @@ #------------------------------------------------------------------------------ -# $File: os2,v 1.10 2017/03/17 21:35:28 christos Exp $ +# $File: os2,v 1.13 2021/04/26 15:56:00 christos Exp $ # os2: file(1) magic for OS/2 files # @@ -25,6 +25,8 @@ #>5 string >\ (Local file) <%s> # >>>>> OS/2 INF/HLP <<<<< (source: Daniel Dissett ddissett@netcom.com) +# URL: http://fileformats.archiveteam.org/wiki/INF/HLP_(OS/2) +# Reference: http://www.edm2.com/0308/inf.html # Carl Hauser (chauser.parc@xerox.com) and # Marcus Groeber (marcusg@ph-cip.uni-koeln.de) # list the following header format in inf02a.doc: @@ -41,9 +43,142 @@ # int16 unknown2; // unknown purpose # 0 string HSP\x01\x9b\x00 OS/2 INF +!:mime application/x-os2-inf +!:ext inf >107 string >0 (%s) 0 string HSP\x10\x9b\x00 OS/2 HLP +!:mime application/x-os2-hlp +!:ext hlp >107 string >0 (%s) +# From: Joerg Jenderek +# URL: http://fileformats.archiveteam.org/wiki/MSG_(OS/2) +# Reference: https://github.com/OS2World/UTIL-SYSTEM-MKMSGF/blob/master/mkmsgf.h +# Note: created by MKMSGF.EXE. Text source can be recreated by E_MSGF +# example like OS001H.MSG +0 string \xffMKMSGF\0 OS/2 help message +!:mime application/x-os2-msg +!:ext msg +# identifier[3] like: DOS NET REX SYS ... +>8 string x '%.3s' +# msgnumber: number of messages +>11 uleshort x \b, %u messages +# firstmsgnumber; number of the first message like: some times 0 often 1 169 1000 3502 +>13 uleshort >1 \b, 1st number %u +# offset16bit; 1~Index table has 16-bit offsets (files<64k) 0~Index table has 32-bit offsets +>15 ubyte =0 \b, 32-bit +#>15 ubyte =1 \b, 16-bit +# version; file version: 2~new 0~old +>16 uleshort !2 \b, version %u +# indextaboffset; offset of index table: 1F~after header 0~no index table for version 0? +>18 uleshort >0 +>>18 uleshort !0x1f \b, at %#x index +# 32-bit offset +>>15 ubyte =0 +# offset with message table +>>>(18.s) ulelong x \b, at %#x +# 1st message +# http://www.os2museum.com/files/docs/os210ptk/os2-1.0-ptk-tools-1988.pdf +# message type: E~Error H~Help I~Information P~Prompt W~Warning ? +>>>>(&-4.l) ubyte x %c-type +>>>>>&0 string x %s +# 16-bit offset +>>15 ubyte =1 +# msgnum; message number +>>>(18.s) uleshort x \b, number %u +# msgindex; offset of message from begin of file +>>>(18.s+2) uleshort x at %#x +# message type E H I P W ? +>>>>(&-2.s) ubyte x %c-type +# skip newline carriage return +>>>>>&0 ubeshort =0x0D0a +>>>>>>&0 string x %s +>>>>>&0 ubeshort !0x0D0a +>>>>>>&-2 string x %s +# for version 0 index table apparently at offset 1F +>16 uleshort 0 +>>15 ubyte 1 +# 1st message 16-bit +>>>0x1F uleshort x \b, at %#x +# message type: E~Error H~Help I~Information P~Prompt W~Warning ? +>>>>(0x1F.s) ubyte x %c-type +>>>>>&0 string x %s +# 2nd message 16-bit +>>>0x21 uleshort x \b, at %#x +>>>>(0x21.s) ubyte x %c-type +>>>>>&0 string x %s +# 3rd message 16-bit +>>>0x23 uleshort x \b, at %#x +>>>>(0x23.s) ubyte x %c-type +>>>>>&0 string x %s +# version 0 32-bit +>>15 ubyte 0 +# 1st message 32-bit +>>>0x1f ulelong x \b, at %#x +>>>>(0x1F.l) ubyte x %c-type +>>>>>&0 string x %s +# 2nd message 32-bit +>>>0x23 ulelong x \b, at %#x +>>>>(0x23.l) ubyte x %c-type +>>>>>&0 string x %s +# 3rd message 32-bit +>>>0x27 ulelong x \b, AT %#x +>>>>(0x27.l) ubyte x %c-type +>>>>>&0 string x %s +# countryinfo; offset of country info block: 0 for version 0 +>20 uleshort !0 \b, at %#x countryinfo +# nextcoutryinfo +>>22 uleshort >0 \b, at %#x next +# reserved[5]; Must be 0 +>>25 ulelong !0 \b, RESERVED %#x +>>(20.s) use os2-msg-info +# display country info block of MKMSGF message file +0 name os2-msg-info +# bytesperchar; bytes per char: 1~SBCS 2~DBCS +>0 ubyte >1 \b, %u bytes/char +# reserved; Not known +>1 uleshort !0 \b, reserved %#x +# langfamilyID; language family ID like: 0~? 1~Arabic ... 7~German ... 9~English ... 34~Slovene +>3 uleshort >0 \b, language %u +# langversionID; like: 7_1~German 7_2~Swiss German 12_1~French 12_3~Canadian French +>>5 uleshort x \b_%u +# langfamilyID too high. This should not happen +>3 uleshort >34 (invalid language) +# codepagesnumber; number of codepages like: 1 2 ... 16 +>7 uleshort x \b, %u code page +# plural s +>7 uleshort >1 \bs +# too many number of codepages. This should not happen +>7 uleshort >16 (Too many) +# codepages[16]; codepages list like 437 850 ... +>7 uleshort <17 +# 1st code page +>>9 uleshort >0 %u +# possible 2nd code page number +>>>7 uleshort >1 +>>>>11 uleshort x %u +# filename[260]; name of file like: dbaseos2.msg dde4c01e.msg os2ldr.mgr xdfh.msg ... +>41 string x \b, %s + # OS/2 INI (this is a guess) 0 string \xff\xff\xff\xff\x14\0\0\0 OS/2 INI +!:mime application/x-os2-ini +!:ext ini + +# From: Joerg Jenderek +# URL: http://warpin.netlabs.org/ +# Reference: http://mark0.net/download/triddefs_xml.7z/defs/a/ark-wpi.trid.xml +# Note: called by TrID "WarpIN Installer" +# probably magic at the beginning +0 ubelong =0x770402BE WarpIN Installer +#>4 ubelong =0x03000000 +#!:mime application/octet-stream +!:mime application/x-os2-wpi +!:ext wpi +# creator program name like: "reserved" or "WIC x.y.z" +>0x106 string x \b, created by %s +# name like: "reserved" or "OS/2 Netlabs" +>0x146 string x \b, '%s' +# name like: "N/A" "http://warpin.netlabs.org" +>0x186 string x \b, URL %s + diff --git a/magic/Magdir/pcjr b/magic/Magdir/pcjr new file mode 100644 index 000000000000..c3ab7a25fdf4 --- /dev/null +++ b/magic/Magdir/pcjr @@ -0,0 +1,8 @@ + +#------------------------------------------------------------------------------ +# $File: pcjr,v 1.1 2021/01/09 15:09:58 christos Exp $ +# pcjr: file(1) magic for PCjr Cartridge image file format +# From: Francis Laniel <laniel_francis@privacyrequired.com> +0 string PCjr +>0x80 beshort 0x55aa PCjr Cartridge image +>0x200 beshort 0x55aa PCjr Cartridge image diff --git a/magic/Magdir/pdf b/magic/Magdir/pdf index e386f454a593..38de3cff9b9f 100644 --- a/magic/Magdir/pdf +++ b/magic/Magdir/pdf @@ -1,15 +1,18 @@ #------------------------------------------------------------------------------ -# $File: pdf,v 1.12 2020/01/30 01:48:44 christos Exp $ +# $File: pdf,v 1.16 2021/07/30 11:47:07 christos Exp $ # pdf: file(1) magic for Portable Document Format # 0 name pdf ->8 search/512 /Filter/FlateDecode/ (password protected) +>8 search /Count +>>&0 regex [0-9]+ \b, %s pages +>8 search/512 /Filter/FlateDecode/ (zip deflate encoded) 0 string %PDF- PDF document !:mime application/pdf !:strength +60 +!:ext pdf >5 byte x \b, version %c >7 byte x \b.%c >0 use pdf @@ -17,6 +20,7 @@ 0 string \012%PDF- PDF document !:mime application/pdf !:strength +60 +!:ext pdf >6 byte x \b, version %c >8 byte x \b.%c >0 use pdf @@ -24,6 +28,7 @@ 0 string \xef\xbb\xbf%PDF- PDF document (UTF-8) !:mime application/pdf !:strength +60 +!:ext pdf >6 byte x \b, version %c >8 byte x \b.%c >0 use pdf @@ -33,12 +38,14 @@ 0 string %FDF- FDF document !:mime application/vnd.fdf !:strength +60 +!:ext pdf >5 byte x \b, version %c >7 byte x \b.%c 0 search/256 %PDF- PDF document !:mime application/pdf !:strength +60 +!:ext pdf >&0 byte x \b, version %c >&2 byte x \b.%c >0 use pdf diff --git a/magic/Magdir/pgf b/magic/Magdir/pgf index b5a251efdf38..8318ce133804 100644 --- a/magic/Magdir/pgf +++ b/magic/Magdir/pgf @@ -1,6 +1,6 @@ #------------------------------------------------------------------------------ -# $File: pgf,v 1.2 2017/03/17 21:35:28 christos Exp $ +# $File: pgf,v 1.3 2021/02/23 00:51:10 christos Exp $ # pgf: file(1) magic for Progressive Graphics File (PGF) # # <http://www.libpgf.org/uploads/media/PGF_Details_01.pdf> @@ -25,7 +25,7 @@ >>20 byte 1 gray scale, >>20 byte 2 indexed color, >>20 byte 3 RGB color, ->>20 byte 4 CYMK color, +>>20 byte 4 CMYK color, >>20 byte 5 HSL color, >>20 byte 6 HSB color, >>20 byte 7 multi-channel, @@ -34,7 +34,7 @@ >>20 byte 10 gray scale 16, >>20 byte 11 RGB color 48, >>20 byte 12 LAB color 48, ->>20 byte 13 CYMK color 64, +>>20 byte 13 CMYK color 64, >>20 byte 14 deep multi-channel, >>20 byte 15 duo tone 16, >>20 byte 17 RGBA color, diff --git a/magic/Magdir/pgp b/magic/Magdir/pgp index 069c82eb8bef..d81883868b41 100644 --- a/magic/Magdir/pgp +++ b/magic/Magdir/pgp @@ -1,54 +1,11 @@ #------------------------------------------------------------------------------ -# $File: pgp,v 1.21 2020/03/20 17:11:05 christos Exp $ +# $File: pgp,v 1.25 2021/04/26 15:56:00 christos Exp $ # pgp: file(1) magic for Pretty Good Privacy + +# Handling of binary PGP keys is in pgp-binary-keys. # see https://lists.gnupg.org/pipermail/gnupg-devel/1999-September/016052.html # -# Update: Joerg Jenderek -# Note: verified by `gpg -v --debug 0x02 --list-packets < PUBRING263_10.PGP` -#0 byte 0x99 MAYBE PGP 0x99 -0 byte 0x99 -# 99h~10;0110;01~2=old packet type;tag 6=Public-Key Packet;1=two-octet length -# A two-octet body header encodes packet lengths of 192~00C0h - 8383~20BFh -#>1 ubeshort x \b, body length 0x%.4x -# skip Basic.Image Beauty.320 Pic.Icons by looking for low version number -#>3 ubyte x \b, V=%u -#>3 ubyte <5 VERSION OK ->3 ubyte <5 -# next packet type often b4h~(tag 13)~User ID Packet, b0h~(tag 12)~Trust packet -#>>(1.S+3) ubyte x \b, next packet type 0x%x -# skip 9900-v4.bin 9902-v4.bin by looking for valid second packet type (bit 7=1) -#>>(1.S+3) ubyte >0x7F TYPE OK, ->>(1.S+3) ubyte >0x7F -# old versions 2,3 implies Pretty Good Privacy ->>>3 ubyte <4 PGP key public ring (v%u) -!:mime application/pgp-keys -!:ext pgp/ASD ->>>>4 beldate x created %s -# days that this key is valid. If this number is zero, then it does not expire ->>>>8 ubeshort >0 \b, %u days valid ->>>>8 ubeshort =0 \b, not expire -# display key algorithm 1~RSA (Encrypt or Sign) ->>>>10 use key_algo -# Multiprecision Integers (MPI) size ->>>>11 ubeshort x %u bits -# MPI ->>>>13 ubequad x MPI=0x%16.16llx... -# new version implies Pretty Good Privacy (PGP) >= 5.0 or Gnu Privacy Guard (GPG) ->>>3 ubyte >3 PGP/GPG key public ring (v%u) -!:mime application/pgp-keys -!:ext pgp/gpg/pkr/asd ->>>>4 beldate x created %s -# display key algorithm 17~DSA ->>>>8 use key_algo -# Multiprecision Integers (MPI) size ->>>>9 ubeshort x %u bits ->>>>11 ubequad x MPI=0x%16.16llx... - -0 beshort 0x9501 PGP key security ring -!:mime application/x-pgp-keyring -0 beshort 0x9500 PGP key security ring -!:mime application/x-pgp-keyring 0 beshort 0xa600 PGP encrypted data #!:mime application/pgp-encrypted #0 string -----BEGIN\040PGP text/PGP armored data @@ -404,7 +361,7 @@ # we branch into the proper key size # signatures defined as x{keysize} ->0 name pgpkey +0 name pgpkey >0 string \x01\xd8 1024b >>2 use x1024 >0 string \x01\xeb 1024b @@ -582,8 +539,6 @@ # PGP RSA (e=65537) secret (sub-)key header -0 byte 0x95 PGP Secret Key - ->1 use pgpkey 0 byte 0x97 PGP Secret Sub-key - >1 use pgpkey 0 byte 0x9d @@ -591,9 +546,9 @@ # secret subkey packet (tag 7) with same structure as secret key packet (tag 5) # skip Fetus.Sys16 CALIBUS.MAIN OrbFix.Sys16.Ex by looking for positive len >1 ubeshort >0 -#>1 ubeshort x \b, body length 0x%x +#>1 ubeshort x \b, body length %#x # next packet type often 88h,89h~(tag 2)~Signature Packet -#>>(1.S+3) ubyte x \b, next packet type 0x%x +#>>(1.S+3) ubyte x \b, next packet type %#x # skip Dragon.SHR DEMO.INIT by looking for positive version >>3 ubyte >0 # skip BUISSON.13 GUITAR1 by looking for low version number @@ -609,7 +564,7 @@ >>>>>11 ubeshort x %db >>>>>4 beldate x created on %s - # old versions use 2 additional bytes after time stamp -#>>>>>8 ubeshort x 0x%x +#>>>>>8 ubeshort x %#x # display key algorithm 1~RSA Encrypt|Sign - 21~Diffie-Hellman >>>>>10 use key_algo >>>>>(11.S/8) ubequad x diff --git a/magic/Magdir/pgp-binary-keys b/magic/Magdir/pgp-binary-keys new file mode 100644 index 000000000000..1ce76d907b07 --- /dev/null +++ b/magic/Magdir/pgp-binary-keys @@ -0,0 +1,388 @@ + +#------------------------------------------------------------------------------ +# $File: pgp-binary-keys,v 1.2 2021/04/26 15:56:00 christos Exp $ +# pgp-binary-keys: This file handles pgp binary keys. +# +# An PGP certificate or message doesn't have a fixed header. Instead, +# they are sequences of packets: +# +# https://tools.ietf.org/html/rfc4880#section-4.3 +# +# whose order conforms to a grammar: +# +# https://tools.ietf.org/html/rfc4880#section-11 +# +# Happily most packets have a few fields that are constrained, which +# allow us to fingerprint them with relatively high certainty. +# +# A PGP packet is described by a single byte: the so-called CTB. The +# high-bit is always set. If bit 6 is set, then it is a so-called +# new-style CTB; if bit 6 is clear, then it is a so-called old-style +# CTB. Old-style CTBs have only four bits of type information; bits +# 1-0 are used to describe the length. New-style CTBs have 6 bits of +# type information. +# +# Following the CTB is the packet's length in bytes. If we blindly +# advance the file cursor by this amount past the end of the length +# information we come to the next packet. +# +# Data Structures +# =============== +# +# New Style CTB +# ------------- +# +# https://tools.ietf.org/html/rfc4880#section-4.2.2 +# +# 76543210 +# ||\----/ +# || tag +# |always 1 +# always 1 +# +# Tag bits 7 and 6 set +# 0 0xC0 -- Reserved - a packet tag MUST NOT have this value +# 1 0xC1 -- Public-Key Encrypted Session Key Packet +# 2 0xC2 -- Signature Packet +# 3 0xC3 -- Symmetric-Key Encrypted Session Key Packet +# 4 0xC4 -- One-Pass Signature Packet +# 5 0xC5 -- Secret-Key Packet +# 6 0xC6 -- Public-Key Packet +# 7 0xC7 -- Secret-Subkey Packet +# 8 0xC8 -- Compressed Data Packet +# 9 0xC9 -- Symmetrically Encrypted Data Packet +# 10 0xCA -- Marker Packet +# 11 0xCB -- Literal Data Packet +# 12 0xCC -- Trust Packet +# 13 0xCD -- User ID Packet +# 14 0xCE -- Public-Subkey Packet +# 17 0xD1 -- User Attribute Packet +# 18 0xD2 -- Sym. Encrypted and Integrity Protected Data Packet +# 19 0xD3 -- Modification Detection Code Packet +# 60 to 63 -- Private or Experimental Values +# +# The CTB is followed by the length header, which is densely encoded: +# +# if length[0] is: +# 0..191: one byte length (length[0]) +# 192..223: two byte length ((length[0] - 192) * 256 + length[2] + 192 +# 224..254: four byte length (big endian interpretation of length[1..5]) +# 255: partial body encoding +# +# The partial body encoding is similar to HTTP's chunk encoding. It +# is only allowed for container packets (SEIP, Compressed Data and +# Literal). +# +# Old Style CTB +# ------------- +# +# https://tools.ietf.org/html/rfc4880#section-4.2.1 +# +# CTB: +# +# 76543210 +# ||\--/\/ +# || | length encoding +# || tag +# |always 0 +# always 1 +# +# Tag: +# +# Tag bit 7 set, bits 6, 1, 0 clear +# 0 0x80 -- Reserved - a packet tag MUST NOT have this value +# 1 0x84 -- Public-Key Encrypted Session Key Packet +# 2 0x88 -- Signature Packet +# 3 0x8C -- Symmetric-Key Encrypted Session Key Packet +# 4 0x90 -- One-Pass Signature Packet +# 5 0x94 -- Secret-Key Packet +# 6 0x98 -- Public-Key Packet +# 7 0x9C -- Secret-Subkey Packet +# 8 0xA0 -- Compressed Data Packet +# 9 0xA4 -- Symmetrically Encrypted Data Packet +# 10 0xA8 -- Marker Packet +# 11 0xAC -- Literal Data Packet +# 12 0xB0 -- Trust Packet +# 13 0xB4 -- User ID Packet +# 14 0xB8 -- Public-Subkey Packet +# +# Length encoding: +# +# Value +# 0 1 byte length (following byte is the length) +# 1 2 byte length (following two bytes are the length) +# 2 4 byte length (following four bytes are the length) +# 3 indeterminate length: natural end of packet, e.g., EOF +# +# An indeterminate length is only allowed for container packets +# (SEIP, Compressed Data and Literal). +# +# Certificates +# ------------ +# +# We check the first three packets to determine if a sequence of +# OpenPGP packets is likely to be a certificate. The grammar allows +# the following prefixes: +# +# [Primary Key] [SIG] (EOF or another certificate) +# [Primary Key] [SIG] [User ID] [SIG]... +# [Primary Key] [SIG] [User Attribute] [SIG]... +# [Primary Key] [SIG] [Subkey] [SIG]... +# [Primary Key] [User ID] [SIG]... +# [Primary Key] [User Attribute] [SIG]... +# [Primary Key] [Subkey] [SIG]... +# +# Any number of marker packets are also allowed between each packet, +# but they are not normally used and we don't currently check for +# them. +# +# The keys and subkeys may be public or private. +# + +# Key packets and signature packets are versioned. There are two +# packet versions that we need to worry about in practice: v3 and v4. +# v4 packets were introduced in RFC 2440, which was published in 1998. +# It also deprecated v3 packets. There are no actively used v3 +# certificates (GnuPG removed the code to support them in November +# 2014). But there are v3 keys lying around and it is useful to +# identify them. The next version of OpenPGP will introduce v5 keys. +# The document has not yet been standardized so changes are still +# possible. But, for our purposes, it appears that v5 data structures +# will be identical to v4 data structures modulo the version number. +# +# https://tools.ietf.org/html/rfc2440 +# https://lists.gnupg.org/pipermail/gnupg-announce/2014q4/000358.html +# https://www.ietf.org/id/draft-ietf-openpgp-rfc4880bis-09.html#name-key-material-packet + + + + +# The first packet has to be a public key or a secret key. +# +# New-Style Public Key +0 ubyte =0xC6 OpenPGP Public Key +>&0 use primary_key_length_new +# New-Style Secret Key +0 ubyte =0xC5 OpenPGP Secret Key +>&0 use primary_key_length_new +# Old-Style Public Key +0 ubyte&0xFC =0x98 OpenPGP Public Key +>&-1 use primary_key_length_old +# Old-Style Secret Key +0 ubyte&0xFC =0x94 OpenPGP Secret Key +>&-1 use primary_key_length_old + +# Parse the length, check the packet's body and finally advance to the +# next packet. + +# There are 4 different new-style length encodings, but the partial +# body encoding is only acceptable for the SEIP, Compressed Data, and +# Literal packets, which isn't valid for any packets in a certificate +# so we ignore it. +0 name primary_key_length_new +>&0 ubyte <192 +#>>&0 ubyte x (1 byte length encoding, %d bytes) +>>&0 use pgp_binary_key_pk_check +>>>&(&-1.B) use sig_or_component_1 +>&0 ubyte >191 +>>&-1 ubyte <225 +# offset = ((offset[0] - 192) << 8) + offset[1] + 192 (for the length header) +# raw - (192 * 256 - 192) +# = 48960 +#>>>&0 ubeshort x (2 byte length encoding, %d bytes) +>>>&1 use pgp_binary_key_pk_check +>>>>&(&-2.S-48960) use sig_or_component_1 +>&0 ubyte =255 +#>>&0 belong x (5 byte length encoding, %d bytes) +>>&4 use pgp_binary_key_pk_check +>>>&(&-4.L) use sig_or_component_1 +# Partial body encoding (only valid for container packets). +# >&0 ubyte >224 +# >>&0 ubyte <255 partial body encoding + +# There are 4 different old-style length encodings, but the +# indeterminate length encoding is only acceptable for the SEIP, +# Compressed Data, and Literal packets, which isn't valid for any +# packets in a certificate. +0 name primary_key_length_old +#>&0 ubyte x (ctb: %x) +>&0 ubyte&0x3 =0 +#>>&0 ubyte x (1 byte length encoding, %d bytes) +>>&1 use pgp_binary_key_pk_check +>>>&(&-1.B) use sig_or_component_1 +>&0 ubyte&0x3 =1 +#>>&0 ubeshort x (2 byte length encoding, %d bytes) +>>&2 use pgp_binary_key_pk_check +>>>&(&-2.S) use sig_or_component_1 +>&0 ubyte&0x3 =2 +#>>&0 ubelong x (4 byte length encoding, %d bytes) +>>&4 use pgp_binary_key_pk_check +>>>&(&-4.L) use sig_or_component_1 + +# Check the Key. +# +# https://tools.ietf.org/html/rfc4880#section-5.5.2 +0 name pgp_binary_key_pk_check +# Valid versions are: 2, 3, 4. 5 is proposed in RFC 4880bis. +# Anticipate a v6 / v7 format that like v5 is compatible with v4. +# key format in a decade or so :D. +>&0 ubyte >1 +>>&-1 ubyte <8 +>>>&-1 byte x Version %d +# Check that keys were created after 1990. +# (1990 - 1970) * 365.2524 * 24 * 60 * 60 = 631156147 +>>>&0 bedate >631156147 \b, Created %s +>>>>&-5 ubyte >3 +>>>>>&4 use pgp_binary_key_algo +>>>>&-5 ubyte <4 +>>>>>&6 use pgp_binary_key_algo + +# Print out the key's algorithm and the number of bits, if this is +# relevant (ECC keys are a fixed size). +0 name pgp_binary_key_algo +>0 clear x +>&0 ubyte =1 \b, RSA (Encrypt or Sign, +>>&0 ubeshort x \b %d bits) +>&0 ubyte =2 \b, RSA (Encrypt, +>>&0 ubeshort x \b %d bits) +>&0 ubyte =3 \b, RSA (Sign, +>>&0 ubeshort x \b %d bits) +>&0 ubyte =16 \b, El Gamal (Encrypt, +>>&0 ubeshort x \b %d bits) +>&0 ubyte =17 \b, DSA +>>&0 ubeshort x \b (%d bits) +>&0 ubyte =18 \b, ECDH +>&0 ubyte =19 \b, ECDSA +>&0 ubyte =20 \b, El Gamal (Encrypt or Sign, +>>&0 ubeshort x \b %d bits) +>&0 ubyte =22 \b, EdDSA +>&0 default x +>>&0 ubyte x \b, Unknown Algorithm (%#x) + +# Match all possible second packets. +0 name sig_or_component_1 +#>0 ubyte x (ctb: %x) +>&0 ubyte =0xC2 +>>0 ubyte x \b; Signature +>>&0 use sig_or_component_1_length_new +>&0 ubyte =0xCD +>>0 ubyte x \b; User ID +>>&0 use sig_or_component_1_length_new +>&0 ubyte =0xCE +>>0 ubyte x \b; Public Subkey +>>&0 use sig_or_component_1_length_new +>&0 ubyte =0xC7 +>>0 ubyte x \b; Secret Subkey +>>&0 use sig_or_component_1_length_new +>&0 ubyte =0xD1 +>>0 ubyte x \b; User Attribute +>>&0 use sig_or_component_1_length_new +>&0 ubyte&0xFC =0x88 +>>0 ubyte x \b; Signature +>>&-1 use sig_or_component_1_length_old +>&0 ubyte&0xFC =0xB4 +>>0 ubyte x \b; User ID +>>&-1 use sig_or_component_1_length_old +>&0 ubyte&0xFC =0xB8 +>>0 ubyte x \b; Public Subkey +>>&-1 use sig_or_component_1_length_old +>&0 ubyte&0xFC =0x9C +>>0 ubyte x \b; Secret Subkey +>>&-1 use sig_or_component_1_length_old + +# Copy of 'primary_key_length_new', but calls cert_packet_3. +0 name sig_or_component_1_length_new +>&0 ubyte <192 +#>>&0 ubyte x (1 byte new length encoding, %d bytes) +>>&(&-1.B) use cert_packet_3 +>&0 ubyte >191 +>>&-1 ubyte <225 +# offset = ((offset[0] - 192) << 8) + offset[1] + 192 + 1 (for the length header) +# raw - (192 * 256 - 192 - 1) +# = 48959 +#>>>&-1 ubeshort x (2 byte new length encoding, %d bytes) +>>>&(&-1.S-48959) use cert_packet_3 +>&0 ubyte =255 +#>>&0 belong x (5 byte new length encoding, %d bytes) +>>&(&-4.L) use cert_packet_3 +# Partial body encoding (only valid for container packets). +# >&0 ubyte >224 +# >>&0 ubyte <255 partial body encoding + +0 name sig_or_component_1_length_old +#>&0 ubyte x (ctb: %x) +>&0 ubyte&0x3 =0 +#>>&0 ubyte x (1 byte old length encoding, %d bytes) +>>&(&0.B+1) use cert_packet_3 +>&0 ubyte&0x3 =1 +#>>&0 ubeshort x (2 byte old length encoding, %d bytes) +>>&(&0.S+2) use cert_packet_3 +>&0 ubyte&0x3 =2 +#>>&0 ubelong x (4 byte old length encoding, %d bytes) +>>&(&0.L+4) use cert_packet_3 + +# Copy of above. +0 name cert_packet_3 +#>0 ubyte x (ctb: %x) +>&0 ubyte =0xC2 +>>0 ubyte x \b; Signature +>>&0 use cert_packet_3_length_new +>&0 ubyte =0xCD +>>0 ubyte x \b; User ID +>>&0 use cert_packet_3_length_new +>&0 ubyte =0xCE +>>0 ubyte x \b; Public Subkey +>>&0 use cert_packet_3_length_new +>&0 ubyte =0xC7 +>>0 ubyte x \b; Secret Subkey +>>&0 use cert_packet_3_length_new +>&0 ubyte =0xD1 +>>0 ubyte x \b; User Attribute +>>&0 use cert_packet_3_length_new +>&0 ubyte&0xFC =0x88 +>>0 ubyte x \b; Signature +>>&-1 use cert_packet_3_length_old +>&0 ubyte&0xFC =0xB4 +>>0 ubyte x \b; User ID +>>&-1 use cert_packet_3_length_old +>&0 ubyte&0xFC =0xB8 +>>0 ubyte x \b; Public Subkey +>>&-1 use cert_packet_3_length_old +>&0 ubyte&0xFC =0x9C +>>0 ubyte x \b; Secret Subkey +>>&-1 use cert_packet_3_length_old + +# Copy of above. +0 name cert_packet_3_length_new +>&0 ubyte <192 +#>>&0 ubyte x (1 byte new length encoding, %d bytes) +>>&(&-1.B) use pgp_binary_keys_end +>&0 ubyte >191 +>>&-1 ubyte <225 +# offset = ((offset[0] - 192) << 8) + offset[1] + 192 + 1 (for the length header) +# raw - (192 * 256 - 192 - 1) +# = 48959 +#>>>&-1 ubeshort x (2 byte new length encoding, %d bytes) +>>>&(&-1.S-48959) use pgp_binary_keys_end +>&0 ubyte =255 +#>>&0 belong x (5 byte new length encoding, %d bytes) +>>&(&-4.L) use pgp_binary_keys_end + +0 name cert_packet_3_length_old +#>&0 ubyte x (ctb: %x) +>&0 ubyte&0x3 =0 +#>>&0 ubyte x (1 byte old length encoding, %d bytes) +>>&(&0.B+1) use pgp_binary_keys_end +>&0 ubyte&0x3 =1 +#>>&0 ubeshort x (2 byte old length encoding, %d bytes) +>>&(&0.S+2) use pgp_binary_keys_end +>&0 ubyte&0x3 =2 +#>>&0 ubelong x (4 byte old length encoding, %d bytes) +>>&(&0.L+4) use pgp_binary_keys_end + +# We managed to parse the first three packets of the certificate. Declare +# victory. +0 name pgp_binary_keys_end +>0 byte x \b; OpenPGP Certificate +!:mime application/pgp-keys +!:ext pgp/gpg/pkr/asd diff --git a/magic/Magdir/plan9 b/magic/Magdir/plan9 index da5eb66650ac..db068479c2d7 100644 --- a/magic/Magdir/plan9 +++ b/magic/Magdir/plan9 @@ -1,10 +1,11 @@ #------------------------------------------------------------------------------ -# $File: plan9,v 1.5 2009/09/19 16:28:11 christos Exp $ -# plan9: file(1) magic for AT&T Bell Labs' Plan 9 executables +# $File: plan9,v 1.6 2021/07/30 12:25:13 christos Exp $ +# plan9: file(1) magic for AT&T Bell Labs' Plan 9 executables and object files # From: "Stefan A. Haubenthal" <polluks@web.de> # 0 belong 0x00000107 Plan 9 executable, Motorola 68k +0 belong 0x00000197 Plan 9 executable, AT&T Hobbit 0 belong 0x000001EB Plan 9 executable, Intel 386 0 belong 0x00000247 Plan 9 executable, Intel 960 0 belong 0x000002AB Plan 9 executable, SPARC @@ -16,3 +17,9 @@ 0 belong 0x000006EB Plan 9 executable, PowerPC 0 belong 0x00000797 Plan 9 executable, MIPS R4000 LE 0 belong 0x0000084B Plan 9 executable, DEC Alpha + +0 belong 0x3A11013C Plan 9 object file, MIPS R3000 +0 belong 0x430D013C Plan 9 object file, AT&T Hobbit +0 belong 0x4D013201 Plan 9 object file, Motorola 68k +0 belong 0x7410013C Plan 9 object file, SPARC +0 belong 0x7E004501 Plan 9 object file, Intel 386 diff --git a/magic/Magdir/pmem b/magic/Magdir/pmem index 4c36275ea96f..c0ead7316b2c 100644 --- a/magic/Magdir/pmem +++ b/magic/Magdir/pmem @@ -1,31 +1,31 @@ #------------------------------------------------------------------------------ -# $File: pmem,v 1.3 2019/06/13 11:45:44 christos Exp $ +# $File: pmem,v 1.4 2021/04/26 15:56:00 christos Exp $ # pmem: file(1) magic for Persistent Memory Development Kit pool files # 0 string PMEM >4 string POOLSET Persistent Memory Poolset file >>11 search REPLICA with replica >4 regex LOG|BLK|OBJ Persistent Memory Pool file, type: %s, ->>8 lelong >0 version: 0x%x, ->>12 lelong x compat: 0x%x, ->>16 lelong x incompat: 0x%x, ->>20 lelong x ro_compat: 0x%x, +>>8 lelong >0 version: %#x, +>>12 lelong x compat: %#x, +>>16 lelong x incompat: %#x, +>>20 lelong x ro_compat: %#x, >>120 leqldate x crtime: %s, ->>128 lequad x alignment_desc: 0x%016llx, +>>128 lequad x alignment_desc: %#016llx, >>136 clear x >>136 byte 2 machine_class: 64-bit, >>136 default x machine_class: unknown ->>>136 byte x (0x%d), +>>>136 byte x (%#d), >>137 clear x >>137 byte 1 data: little-endian, >>137 byte 2 data: big-endian, >>137 default x data: unknown ->>>137 byte x (0x%d), +>>>137 byte x (%#d), >>138 byte !0 reserved[0]: %d, >>139 byte !0 reserved[1]: %d, @@ -36,7 +36,7 @@ >>142 leshort 62 machine: x86_64 >>142 leshort 183 machine: aarch64 >>142 default x machine: unknown ->>>142 leshort x (0x%d) +>>>142 leshort x (%#d) >4 string BLK >>4096 lelong x \b, blk.bsize: %d diff --git a/magic/Magdir/puzzle b/magic/Magdir/puzzle new file mode 100644 index 000000000000..ac983f32b8e6 --- /dev/null +++ b/magic/Magdir/puzzle @@ -0,0 +1,17 @@ + +#------------------------------------------------------------------------------ +# $File: puzzle,v 1.2 2021/10/07 15:40:40 christos Exp $ +# wsdl: Magic for various puzzles + +# PUZ crossword puzzles from Alan De Smet +# Test files can be found at +# https://theworld.com/~wij/puzzles/wij-themed.html or using the +# "Universal" or "WS Journal" links on the right side of +# https://www.cruciverb.com/ . + +2 string ACROSS&DOWN PUZ crossword puzzle +>0x2c byte x %d x +>0x2d byte x %d, +>0x2e leshort x %d clues, +>0x1e leshort 0x0000 plain text solution +>0x1e leshort !0x0000 scrambled solution diff --git a/magic/Magdir/python b/magic/Magdir/python index 9d306c062529..80a59959bea2 100644 --- a/magic/Magdir/python +++ b/magic/Magdir/python @@ -1,6 +1,6 @@ #------------------------------------------------------------------------------ -# $File: python,v 1.42 2020/06/04 00:22:50 christos Exp $ +# $File: python,v 1.43 2021/05/25 15:12:03 christos Exp $ # python: file(1) magic for python # # Outlook puts """ too for urgent messages @@ -10,211 +10,211 @@ # MAGIC as specified in Python/import.c (1.0 to 3.7) # two bytes of magic followed by "\r\n" in little endian order 0 belong 0x02099900 python 1.0 byte-compiled -!:mime text/x-bytecode.python +!:mime application/x-bytecode.python 0 belong 0x03099900 python 1.1/1.2 byte-compiled -!:mime text/x-bytecode.python +!:mime application/x-bytecode.python 0 belong 0x892e0d0a python 1.3 byte-compiled -!:mime text/x-bytecode.python +!:mime application/x-bytecode.python 0 belong 0x04170d0a python 1.4 byte-compiled -!:mime text/x-bytecode.python +!:mime application/x-bytecode.python 0 belong 0x994e0d0a python 1.5 byte-compiled -!:mime text/x-bytecode.python +!:mime application/x-bytecode.python 0 belong 0xfcc40d0a python 1.6 byte-compiled -!:mime text/x-bytecode.python +!:mime application/x-bytecode.python 0 belong 0xfdc40d0a python 1.6 byte-compiled -!:mime text/x-bytecode.python +!:mime application/x-bytecode.python 0 belong 0x87c60d0a python 2.0 byte-compiled -!:mime text/x-bytecode.python +!:mime application/x-bytecode.python 0 belong 0x88c60d0a python 2.0 byte-compiled -!:mime text/x-bytecode.python +!:mime application/x-bytecode.python 0 belong 0x2aeb0d0a python 2.1 byte-compiled -!:mime text/x-bytecode.python +!:mime application/x-bytecode.python 0 belong 0x2beb0d0a python 2.1 byte-compiled -!:mime text/x-bytecode.python +!:mime application/x-bytecode.python 0 belong 0x2ded0d0a python 2.2 byte-compiled -!:mime text/x-bytecode.python +!:mime application/x-bytecode.python 0 belong 0x2eed0d0a python 2.2 byte-compiled -!:mime text/x-bytecode.python +!:mime application/x-bytecode.python 0 belong 0x3bf20d0a python 2.3 byte-compiled -!:mime text/x-bytecode.python +!:mime application/x-bytecode.python 0 belong 0x3cf20d0a python 2.3 byte-compiled -!:mime text/x-bytecode.python +!:mime application/x-bytecode.python 0 belong 0x45f20d0a python 2.3 byte-compiled -!:mime text/x-bytecode.python +!:mime application/x-bytecode.python 0 belong 0x59f20d0a python 2.4 byte-compiled -!:mime text/x-bytecode.python +!:mime application/x-bytecode.python 0 belong 0x63f20d0a python 2.4 byte-compiled -!:mime text/x-bytecode.python +!:mime application/x-bytecode.python 0 belong 0x6df20d0a python 2.4 byte-compiled -!:mime text/x-bytecode.python +!:mime application/x-bytecode.python 0 belong 0x6ef20d0a python 2.4 byte-compiled -!:mime text/x-bytecode.python +!:mime application/x-bytecode.python 0 belong 0x77f20d0a python 2.5 byte-compiled -!:mime text/x-bytecode.python +!:mime application/x-bytecode.python 0 belong 0x81f20d0a python 2.5 byte-compiled -!:mime text/x-bytecode.python +!:mime application/x-bytecode.python 0 belong 0x8bf20d0a python 2.5 byte-compiled -!:mime text/x-bytecode.python +!:mime application/x-bytecode.python 0 belong 0x8cf20d0a python 2.5 byte-compiled -!:mime text/x-bytecode.python +!:mime application/x-bytecode.python 0 belong 0x95f20d0a python 2.5 byte-compiled -!:mime text/x-bytecode.python +!:mime application/x-bytecode.python 0 belong 0x9ff20d0a python 2.5 byte-compiled -!:mime text/x-bytecode.python +!:mime application/x-bytecode.python 0 belong 0xa9f20d0a python 2.5 byte-compiled -!:mime text/x-bytecode.python +!:mime application/x-bytecode.python 0 belong 0xb3f20d0a python 2.5 byte-compiled -!:mime text/x-bytecode.python +!:mime application/x-bytecode.python 0 belong 0xb4f20d0a python 2.5 byte-compiled -!:mime text/x-bytecode.python +!:mime application/x-bytecode.python 0 belong 0xc7f20d0a python 2.6 byte-compiled -!:mime text/x-bytecode.python +!:mime application/x-bytecode.python 0 belong 0xd1f20d0a python 2.6 byte-compiled -!:mime text/x-bytecode.python +!:mime application/x-bytecode.python 0 belong 0xd2f20d0a python 2.6 byte-compiled -!:mime text/x-bytecode.python +!:mime application/x-bytecode.python 0 belong 0xdbf20d0a python 2.7 byte-compiled -!:mime text/x-bytecode.python +!:mime application/x-bytecode.python 0 belong 0xe5f20d0a python 2.7 byte-compiled -!:mime text/x-bytecode.python +!:mime application/x-bytecode.python 0 belong 0xeff20d0a python 2.7 byte-compiled -!:mime text/x-bytecode.python +!:mime application/x-bytecode.python 0 belong 0xf9f20d0a python 2.7 byte-compiled -!:mime text/x-bytecode.python +!:mime application/x-bytecode.python 0 belong 0x03f30d0a python 2.7 byte-compiled -!:mime text/x-bytecode.python +!:mime application/x-bytecode.python 0 belong 0x04f30d0a python 2.7 byte-compiled -!:mime text/x-bytecode.python +!:mime application/x-bytecode.python 0 belong 0xb80b0d0a python 3.0 byte-compiled -!:mime text/x-bytecode.python +!:mime application/x-bytecode.python 0 belong 0xc20b0d0a python 3.0 byte-compiled -!:mime text/x-bytecode.python +!:mime application/x-bytecode.python 0 belong 0xcc0b0d0a python 3.0 byte-compiled -!:mime text/x-bytecode.python +!:mime application/x-bytecode.python 0 belong 0xd60b0d0a python 3.0 byte-compiled -!:mime text/x-bytecode.python +!:mime application/x-bytecode.python 0 belong 0xe00b0d0a python 3.0 byte-compiled -!:mime text/x-bytecode.python +!:mime application/x-bytecode.python 0 belong 0xea0b0d0a python 3.0 byte-compiled -!:mime text/x-bytecode.python +!:mime application/x-bytecode.python 0 belong 0xf40b0d0a python 3.0 byte-compiled -!:mime text/x-bytecode.python +!:mime application/x-bytecode.python 0 belong 0xf50b0d0a python 3.0 byte-compiled -!:mime text/x-bytecode.python +!:mime application/x-bytecode.python 0 belong 0xff0b0d0a python 3.0 byte-compiled -!:mime text/x-bytecode.python +!:mime application/x-bytecode.python 0 belong 0x090c0d0a python 3.0 byte-compiled -!:mime text/x-bytecode.python +!:mime application/x-bytecode.python 0 belong 0x130c0d0a python 3.0 byte-compiled -!:mime text/x-bytecode.python +!:mime application/x-bytecode.python 0 belong 0x1d0c0d0a python 3.0 byte-compiled -!:mime text/x-bytecode.python +!:mime application/x-bytecode.python 0 belong 0x1f0c0d0a python 3.0 byte-compiled -!:mime text/x-bytecode.python +!:mime application/x-bytecode.python 0 belong 0x270c0d0a python 3.0 byte-compiled -!:mime text/x-bytecode.python +!:mime application/x-bytecode.python 0 belong 0x3b0c0d0a python 3.0 byte-compiled -!:mime text/x-bytecode.python +!:mime application/x-bytecode.python 0 belong 0x450c0d0a python 3.1 byte-compiled -!:mime text/x-bytecode.python +!:mime application/x-bytecode.python 0 belong 0x4f0c0d0a python 3.1 byte-compiled -!:mime text/x-bytecode.python +!:mime application/x-bytecode.python 0 belong 0x580c0d0a python 3.2 byte-compiled -!:mime text/x-bytecode.python +!:mime application/x-bytecode.python 0 belong 0x620c0d0a python 3.2 byte-compiled -!:mime text/x-bytecode.python +!:mime application/x-bytecode.python 0 belong 0x6c0c0d0a python 3.2 byte-compiled -!:mime text/x-bytecode.python +!:mime application/x-bytecode.python 0 belong 0x760c0d0a python 3.3 byte-compiled -!:mime text/x-bytecode.python +!:mime application/x-bytecode.python 0 belong 0x800c0d0a python 3.3 byte-compiled -!:mime text/x-bytecode.python +!:mime application/x-bytecode.python 0 belong 0x8a0c0d0a python 3.3 byte-compiled -!:mime text/x-bytecode.python +!:mime application/x-bytecode.python 0 belong 0x940c0d0a python 3.3 byte-compiled -!:mime text/x-bytecode.python +!:mime application/x-bytecode.python 0 belong 0x9e0c0d0a python 3.3 byte-compiled -!:mime text/x-bytecode.python +!:mime application/x-bytecode.python 0 belong 0xb20c0d0a python 3.4 byte-compiled -!:mime text/x-bytecode.python +!:mime application/x-bytecode.python 0 belong 0xbc0c0d0a python 3.4 byte-compiled -!:mime text/x-bytecode.python +!:mime application/x-bytecode.python 0 belong 0xc60c0d0a python 3.4 byte-compiled -!:mime text/x-bytecode.python +!:mime application/x-bytecode.python 0 belong 0xd00c0d0a python 3.4 byte-compiled -!:mime text/x-bytecode.python +!:mime application/x-bytecode.python 0 belong 0xda0c0d0a python 3.4 byte-compiled -!:mime text/x-bytecode.python +!:mime application/x-bytecode.python 0 belong 0xe40c0d0a python 3.4 byte-compiled -!:mime text/x-bytecode.python +!:mime application/x-bytecode.python 0 belong 0xee0c0d0a python 3.4 byte-compiled -!:mime text/x-bytecode.python +!:mime application/x-bytecode.python 0 belong 0xf80c0d0a python 3.5.1- byte-compiled -!:mime text/x-bytecode.python +!:mime application/x-bytecode.python 0 belong 0x020d0d0a python 3.5.1- byte-compiled -!:mime text/x-bytecode.python +!:mime application/x-bytecode.python 0 belong 0x0c0d0d0a python 3.5.1- byte-compiled -!:mime text/x-bytecode.python +!:mime application/x-bytecode.python 0 belong 0x160d0d0a python 3.5.1- byte-compiled -!:mime text/x-bytecode.python +!:mime application/x-bytecode.python 0 belong 0x170d0d0a python 3.5.2+ byte-compiled -!:mime text/x-bytecode.python +!:mime application/x-bytecode.python 0 belong 0x200d0d0a python 3.6 byte-compiled -!:mime text/x-bytecode.python +!:mime application/x-bytecode.python 0 belong 0x210d0d0a python 3.6 byte-compiled -!:mime text/x-bytecode.python +!:mime application/x-bytecode.python 0 belong 0x2a0d0d0a python 3.6 byte-compiled -!:mime text/x-bytecode.python +!:mime application/x-bytecode.python 0 belong 0x2b0d0d0a python 3.6 byte-compiled -!:mime text/x-bytecode.python +!:mime application/x-bytecode.python 0 belong 0x2c0d0d0a python 3.6 byte-compiled -!:mime text/x-bytecode.python +!:mime application/x-bytecode.python 0 belong 0x2d0d0d0a python 3.6 byte-compiled -!:mime text/x-bytecode.python +!:mime application/x-bytecode.python 0 belong 0x2f0d0d0a python 3.6 byte-compiled -!:mime text/x-bytecode.python +!:mime application/x-bytecode.python 0 belong 0x300d0d0a python 3.6 byte-compiled -!:mime text/x-bytecode.python +!:mime application/x-bytecode.python 0 belong 0x310d0d0a python 3.6 byte-compiled -!:mime text/x-bytecode.python +!:mime application/x-bytecode.python 0 belong 0x320d0d0a python 3.6 byte-compiled -!:mime text/x-bytecode.python +!:mime application/x-bytecode.python 0 belong 0x330d0d0a python 3.6 byte-compiled -!:mime text/x-bytecode.python +!:mime application/x-bytecode.python 0 belong 0x3e0d0d0a python 3.7 byte-compiled -!:mime text/x-bytecode.python +!:mime application/x-bytecode.python 0 belong 0x3f0d0d0a python 3.7 byte-compiled -!:mime text/x-bytecode.python +!:mime application/x-bytecode.python 0 belong 0x400d0d0a python 3.7 byte-compiled -!:mime text/x-bytecode.python +!:mime application/x-bytecode.python 0 belong 0x410d0d0a python 3.7 byte-compiled -!:mime text/x-bytecode.python +!:mime application/x-bytecode.python 0 belong 0x420d0d0a python 3.7 byte-compiled -!:mime text/x-bytecode.python +!:mime application/x-bytecode.python 0 belong 0x480d0d0a python 3.8 byte-compiled -!:mime text/x-bytecode.python +!:mime application/x-bytecode.python 0 belong 0x490d0d0a python 3.8 byte-compiled -!:mime text/x-bytecode.python +!:mime application/x-bytecode.python 0 belong 0x520d0d0a python 3.8 byte-compiled -!:mime text/x-bytecode.python +!:mime application/x-bytecode.python 0 belong 0x530d0d0a python 3.8 byte-compiled -!:mime text/x-bytecode.python +!:mime application/x-bytecode.python 0 belong 0x540d0d0a python 3.8 byte-compiled -!:mime text/x-bytecode.python +!:mime application/x-bytecode.python 0 belong 0x550d0d0a python 3.8 byte-compiled -!:mime text/x-bytecode.python +!:mime application/x-bytecode.python 0 belong 0x5c0d0d0a python 3.9 byte-compiled -!:mime text/x-bytecode.python +!:mime application/x-bytecode.python 0 belong 0x5d0d0d0a python 3.9 byte-compiled -!:mime text/x-bytecode.python +!:mime application/x-bytecode.python 0 belong 0x5e0d0d0a python 3.9 byte-compiled -!:mime text/x-bytecode.python +!:mime application/x-bytecode.python 0 belong 0x5f0d0d0a python 3.9 byte-compiled -!:mime text/x-bytecode.python +!:mime application/x-bytecode.python 0 belong 0x600d0d0a python 3.9 byte-compiled -!:mime text/x-bytecode.python +!:mime application/x-bytecode.python 0 belong 0x610d0d0a python 3.9 byte-compiled -!:mime text/x-bytecode.python +!:mime application/x-bytecode.python 0 search/1/w #!\040/usr/bin/python Python script text executable !:strength + 15 diff --git a/magic/Magdir/riff b/magic/Magdir/riff index 33d31fe75a74..39a5acbe23b9 100644 --- a/magic/Magdir/riff +++ b/magic/Magdir/riff @@ -1,28 +1,122 @@ #------------------------------------------------------------------------------ -# $File: riff,v 1.35 2020/06/05 17:15:03 christos Exp $ +# $File: riff,v 1.43 2021/04/26 15:56:00 christos Exp $ # riff: file(1) magic for RIFF format # See # # https://www.seanet.com/users/matts/riffmci/riffmci.htm # http://www-mmsp.ece.mcgill.ca/Documents/AudioFormats/WAVE/Docs/riffmci.pdf +# https://www.iana.org/assignments/wave-avi-codec-registry/wave-avi-codec-registry.xml # # audio format tag. Assume limits: max 1024 bit, 128 channels, 1 MHz 0 name riff-wave ->0 leshort 1 \b, Microsoft PCM +>0 leshort 0x01 \b, Microsoft PCM >>14 leshort >0 >>>14 leshort <1024 \b, %d bit ->0 leshort 2 \b, Microsoft ADPCM ->0 leshort 6 \b, ITU G.711 A-law ->0 leshort 7 \b, ITU G.711 mu-law ->0 leshort 8 \b, Microsoft DTS ->0 leshort 17 \b, IMA ADPCM ->0 leshort 20 \b, ITU G.723 ADPCM (Yamaha) ->0 leshort 49 \b, GSM 6.10 ->0 leshort 64 \b, ITU G.721 ADPCM ->0 leshort 80 \b, MPEG ->0 leshort 85 \b, MPEG Layer 3 +>0 leshort 0x02 \b, Microsoft ADPCM +>0 leshort 0x03 \b, IEEE Float +>0 leshort 0x04 \b, Compaq VSELP +>0 leshort 0x05 \b, IBM CVSD +>0 leshort 0x06 \b, ITU G.711 A-law +>0 leshort 0x07 \b, ITU G.711 mu-law +>0 leshort 0x08 \b, Microsoft DTS +>0 leshort 0x10 \b, OKI ADPCM +>0 leshort 0x11 \b, IMA ADPCM +>0 leshort 0x12 \b, MediaSpace ADPCM +>0 leshort 0x13 \b, Sierra ADPCM +>0 leshort 0x14 \b, ITU G.723 ADPCM (Yamaha) +>0 leshort 0x15 \b, DSP Solutions DIGISTD +>0 leshort 0x16 \b, DSP Solutions DIGIFIX +>0 leshort 0x17 \b, Dialogic OKI ADPCM +>0 leshort 0x18 \b, MediaVision ADPCM +>0 leshort 0x19 \b, HP CU +>0 leshort 0x20 \b, Yamaha ADPCM +>0 leshort 0x21 \b, Speech Compression SONARC +>0 leshort 0x22 \b, DSP Group True Speech +>0 leshort 0x23 \b, Echo Speech EchoSC1 +>0 leshort 0x24 \b, AudioFile AF36 +>0 leshort 0x25 \b, APTX +>0 leshort 0x26 \b, AudioFile AF10 +>0 leshort 0x27 \b, Prosody 1612 +>0 leshort 0x28 \b, LRC +>0 leshort 0x30 \b, Dolby AC2 +>0 leshort 0x31 \b, GSM 6.10 +>0 leshort 0x32 \b, MSN Audio +>0 leshort 0x33 \b, Antex ADPCME +>0 leshort 0x34 \b, Control Res VQLPC +>0 leshort 0x35 \b, Digireal +>0 leshort 0x36 \b, DigiADPCM +>0 leshort 0x37 \b, Control Res CR10 +>0 leshort 0x38 \b, NMS VBXADPCM +>0 leshort 0x39 \b, Roland RDAC +>0 leshort 0x3A \b, Echo Speech EchoSC3 +>0 leshort 0x3B \b, Rockwell ADPCM +>0 leshort 0x3C \b, Rockwell Digitalk +>0 leshort 0x3D \b, Xebec +>0 leshort 0x40 \b, ITU G.721 ADPCM +>0 leshort 0x41 \b, ITU G.728 CELP +>0 leshort 0x42 \b, MSG723 +>0 leshort 0x50 \b, MPEG +>0 leshort 0x52 \b, RT24 +>0 leshort 0x53 \b, PAC +>0 leshort 0x55 \b, MPEG Layer 3 +>0 leshort 0x59 \b, Lucent G.723 +>0 leshort 0x60 \b, Cirrus +>0 leshort 0x61 \b, ESPCM +>0 leshort 0x62 \b, Voxware +>0 leshort 0x63 \b, Canopus Atrac +>0 leshort 0x64 \b, ITU G.726 ADPCM +>0 leshort 0x65 \b, ITU G.722 ADPCM +>0 leshort 0x66 \b, DSAT +>0 leshort 0x67 \b, DSAT Display +>0 leshort 0x69 \b, Voxware Byte Aligned +>0 leshort 0x70 \b, Voxware AC8 +>0 leshort 0x71 \b, Voxware AC10 +>0 leshort 0x72 \b, Voxware AC16 +>0 leshort 0x73 \b, Voxware AC20 +>0 leshort 0x74 \b, Voxware MetaVoice +>0 leshort 0x75 \b, Voxware MetaSound +>0 leshort 0x76 \b, Voxware RT29HW +>0 leshort 0x77 \b, Voxware VR12 +>0 leshort 0x78 \b, Voxware VR18 +>0 leshort 0x79 \b, Voxware TQ40 +>0 leshort 0x80 \b, Softsound +>0 leshort 0x81 \b, Voxware TQ60 +>0 leshort 0x82 \b, MSRT24 +>0 leshort 0x83 \b, ITU G.729A +>0 leshort 0x84 \b, MVI MV12 +>0 leshort 0x85 \b, DF G.726 +>0 leshort 0x86 \b, DF GSM610 +>0 leshort 0x88 \b, ISIAudio +>0 leshort 0x89 \b, Onlive +>0 leshort 0x91 \b, SBC24 +>0 leshort 0x92 \b, Dolby AC3 S/PDIF +>0 leshort 0x97 \b, ZyXEL ADPCM +>0 leshort 0x98 \b, Philips LPCBB +>0 leshort 0x99 \b, Packed +>0 leshort 0x100 \b, Rhetorex ADPCM +>0 leshort 0x101 \b, BeCubed Software IRAT +>0 leshort 0x111 \b, Vivo G.723 +>0 leshort 0x112 \b, Vivo Siren +>0 leshort 0x123 \b, Digital G.723 +>0 leshort 0x200 \b, Creative ADPCM +>0 leshort 0x202 \b, Creative FastSpeech8 +>0 leshort 0x203 \b, Creative FastSpeech10 +>0 leshort 0x220 \b, Quarterdeck +>0 leshort 0x300 \b, FM Towns Snd +>0 leshort 0x400 \b, BTV Digital +>0 leshort 0x680 \b, VME VMPCM +>0 leshort 0x1000 \b, OLIGSM +>0 leshort 0x1001 \b, OLIADPCM +>0 leshort 0x1002 \b, OLICELP +>0 leshort 0x1003 \b, OLISBC +>0 leshort 0x1004 \b, OLIOPR +>0 leshort 0x1100 \b, LH Codec +>0 leshort 0x1400 \b, Norris +>0 leshort 0x1401 \b, ISIAudio +>0 leshort 0x1500 \b, Soundspace Music Compression +>0 leshort 0x2000 \b, AC3 DVM >0 leshort 0x2001 \b, DTS >2 leshort =1 \b, mono >2 leshort =2 \b, stereo @@ -34,7 +128,7 @@ # try to find "fmt " 0 name riff-walk >0 string fmt\x20 ->>4 lelong <0x80 +>>4 lelong >15 >>>8 use riff-wave >0 string LIST >>&(4.l+4) use riff-walk @@ -74,6 +168,7 @@ # Update: Joerg Jenderek # URL: https://en.wikipedia.org/wiki/Resource_Interchange_File_Format # Reference: https://worms2d.info/Palette_file +# WAVE/AVI codec registry: https://www.iana.org/assignments/wave-avi-codec-registry/wave-avi-codec-registry.xml >8 string PAL\ \b, palette !:mime application/x-riff # color palette by Microsoft Corporation @@ -87,7 +182,7 @@ # data chunk size = color entries * 4 + 4 + sometimes extra (4) appended bytes >>>16 ulelong x \b, data size %u # palVersion is always 0x0300 -#>>>20 leshort x \b, version 0x%4.4x +#>>>20 leshort x \b, version %#4.4x # palNumEntries specifies the number of palette color entries >>>22 uleshort x \b, %u entries # after palPalEntry sized (number of color entries * 4 ) vector @@ -95,9 +190,11 @@ # jump relative 22 ( 8 + 16) bytes forward points after end of file or to # appended extra bytes like in http://safecolours.rigdenage.com/set(ms).zip/Protan(MS).pal >>>>&16 ubelong x \b, extra bytes ->>>>>&-4 ubelong >0 0x%8.8x +>>>>>&-4 ubelong >0 %#8.8x # RIFF Device Independent Bitmap format +# URL: http://fileformats.archiveteam.org/wiki/RDIB >8 string RDIB \b, device-independent bitmap +!:ext rdi/dib >>16 string BM >>>30 leshort 12 \b, OS/2 1.x format >>>>34 leshort x \b, %d x @@ -110,14 +207,28 @@ >>>>38 lelong x %d x >>>>44 leshort x %d # RIFF MIDI format +# URL: http://fileformats.archiveteam.org/wiki/RIFF_MIDI >8 string RMID \b, MIDI +# http://extension.nirsoft.net/rmi +!:mime audio/mid +#!:mime audio/x-rmid +!:ext rmi # RIFF Multimedia Movie File format +# URL: http://fileformats.archiveteam.org/wiki/RIFF_Multimedia_Movie >8 string RMMP \b, multimedia movie +!:mime video/x-mmm +!:ext mmm # RIFF wrapper for MP3 >8 string RMP3 \b, MPEG Layer 3 audio +#!:mime audio/x-rmp3 # Microsoft WAVE format (*.wav) +# URL: http://fileformats.archiveteam.org/wiki/WAV >8 string WAVE \b, WAVE audio +#!:mime audio/vnd.wave !:mime audio/x-wav +# https://www.macdisk.com/macsigen.php +#!:apple ????WAVE +!:ext wav/wave >>12 string >\0 >>>12 use riff-walk # Update: Joerg Jenderek @@ -147,10 +258,26 @@ # pattern created by newer software start with RIFF type PAT >8 string PAT >>0 use corel-draw +# From: Joerg Jenderek +# URL: https://en.wikipedia.org/wiki/Corel_Designer +# Reference: http://fileformats.archiveteam.org/wiki/Corel_Designer +>8 string DES +>>8 string !DESC +>>>0 use corel-des +# Corel Draw templates with version 12.5 or Corel Designer illustration 12 +>>8 string =DESC +# MORE TESTS NEEDED HERE! +#>>>0 use corel-des +#>>>0 use corel-draw >8 string NUNDROOT \b, Steinberg CuBase # AVI == Audio Video Interleave +# Reference: http://fileformats.archiveteam.org/wiki/AVI >8 string AVI\040 \b, AVI +# https://reposcope.com/mimetype/video/x-msvideo !:mime video/x-msvideo +# https://www.iana.org/assignments/wave-avi-codec-registry/wave-avi-codec-registry.xml +#!:mime video/vnd.avi +!:ext avi/divx >>12 string LIST >>>20 string hdrlavih >>>>&36 lelong x \b, %u x @@ -214,15 +341,126 @@ # skip past vids strh >>>>>>(104.l+108) string strf >>>>>>>(104.l+132) lelong 1 RLE 8bpp +>>>>>>>(104.l+132) string/c anim Intel RDX +>>>>>>>(104.l+132) string/c aur2 AuraVision Aura 2 +>>>>>>>(104.l+132) string/c aura AuraVision Aura +>>>>>>>(104.l+132) string/c bt20 Brooktree MediaStream +>>>>>>>(104.l+132) string/c btcv Brooktree Composite Video +>>>>>>>(104.l+132) string/c cc12 Intel YUV12 +>>>>>>>(104.l+132) string/c cdvc Canopus DV +>>>>>>>(104.l+132) string/c cham Winnov Caviara Cham +>>>>>>>(104.l+132) string/c cljr Proprietary YUV 4 pixels +>>>>>>>(104.l+132) string/c cmyk Common Data Format in Printing +>>>>>>>(104.l+132) string/c cpla Weitek 4:2:0 YUV Planar >>>>>>>(104.l+132) string/c cvid Cinepak +>>>>>>>(104.l+132) string/c cwlt Microsoft Color WLT DIB +>>>>>>>(104.l+132) string/c cyuv Creative Labs YUV +>>>>>>>(104.l+132) string/c d261 H.261 +>>>>>>>(104.l+132) string/c d263 H.263 +>>>>>>>(104.l+132) string/c duck TrueMotion 1.0 +>>>>>>>(104.l+132) string/c dve2 DVE-2 Videoconferencing +>>>>>>>(104.l+132) string/c fljp Field Encoded Motion JPEG +>>>>>>>(104.l+132) string/c fvf1 Fractal Video Frame +>>>>>>>(104.l+132) string/c gwlt Microsoft Greyscale WLT DIB +>>>>>>>(104.l+132) string/c h260 H.260 +>>>>>>>(104.l+132) string/c h261 H.261 +>>>>>>>(104.l+132) string/c h262 H.262 +>>>>>>>(104.l+132) string/c h263 H.263 +>>>>>>>(104.l+132) string/c h264 H.264 +>>>>>>>(104.l+132) string/c h265 H.265 +>>>>>>>(104.l+132) string/c h266 H.266 +>>>>>>>(104.l+132) string/c h267 H.267 +>>>>>>>(104.l+132) string/c h268 H.268 +>>>>>>>(104.l+132) string/c h269 H.269 >>>>>>>(104.l+132) string/c i263 Intel I.263 ->>>>>>>(104.l+132) string/c iv32 Indeo 3.2 ->>>>>>>(104.l+132) string/c iv41 Indeo 4.1 ->>>>>>>(104.l+132) string/c iv50 Indeo 5.0 +>>>>>>>(104.l+132) string/c i420 Intel Indeo 4 +>>>>>>>(104.l+132) string/c ian Intel RDX +>>>>>>>(104.l+132) string/c iclb CellB Videoconferencing Codec +>>>>>>>(104.l+132) string/c ilvc Intel Layered Video +>>>>>>>(104.l+132) string/c ilvr ITU-T H.263+ +>>>>>>>(104.l+132) string/c iraw Intel YUV Uncompressed +>>>>>>>(104.l+132) string/c iv30 Intel Indeo 3 +>>>>>>>(104.l+132) string/c iv31 Intel Indeo 3.1 +>>>>>>>(104.l+132) string/c iv32 Intel Indeo 3.2 +>>>>>>>(104.l+132) string/c iv33 Intel Indeo 3.3 +>>>>>>>(104.l+132) string/c iv34 Intel Indeo 3.4 +>>>>>>>(104.l+132) string/c iv35 Intel Indeo 3.5 +>>>>>>>(104.l+132) string/c iv36 Intel Indeo 3.6 +>>>>>>>(104.l+132) string/c iv37 Intel Indeo 3.7 +>>>>>>>(104.l+132) string/c iv38 Intel Indeo 3.8 +>>>>>>>(104.l+132) string/c iv39 Intel Indeo 3.9 +>>>>>>>(104.l+132) string/c iv40 Intel Indeo 4.0 +>>>>>>>(104.l+132) string/c iv41 Intel Indeo 4.1 +>>>>>>>(104.l+132) string/c iv42 Intel Indeo 4.2 +>>>>>>>(104.l+132) string/c iv43 Intel Indeo 4.3 +>>>>>>>(104.l+132) string/c iv44 Intel Indeo 4.4 +>>>>>>>(104.l+132) string/c iv45 Intel Indeo 4.5 +>>>>>>>(104.l+132) string/c iv46 Intel Indeo 4.6 +>>>>>>>(104.l+132) string/c iv47 Intel Indeo 4.7 +>>>>>>>(104.l+132) string/c iv48 Intel Indeo 4.8 +>>>>>>>(104.l+132) string/c iv49 Intel Indeo 4.9 +>>>>>>>(104.l+132) string/c iv50 Intel Indeo 5.0 +>>>>>>>(104.l+132) string/c mpeg MPEG 1 Video Frame +>>>>>>>(104.l+132) string/c mjpg Motion JPEG >>>>>>>(104.l+132) string/c mp42 Microsoft MPEG-4 v2 >>>>>>>(104.l+132) string/c mp43 Microsoft MPEG-4 v3 +>>>>>>>(104.l+132) string/c mrca MR Codec +>>>>>>>(104.l+132) string/c mrle Run Length Encoding +>>>>>>>(104.l+132) string/c msvc Microsoft Video 1 +>>>>>>>(104.l+132) string/c phmo Photomotion +>>>>>>>(104.l+132) string/c qpeq QPEG 1.1 Format Video +>>>>>>>(104.l+132) string/c rgbt RGBT +>>>>>>>(104.l+132) string/c rle4 Run Length Encoded 4 +>>>>>>>(104.l+132) string/c rle8 Run Length Encoded 8 +>>>>>>>(104.l+132) string/c rt21 Intel Indeo 2.1 +>>>>>>>(104.l+132) string/c rvx Intel RDX +>>>>>>>(104.l+132) string/c sdcc Sun Digital Camera Codec +>>>>>>>(104.l+132) string/c sfmc Crystal Net SFM Codec +>>>>>>>(104.l+132) string/c smsc SMSC +>>>>>>>(104.l+132) string/c smsd SMSD +>>>>>>>(104.l+132) string/c splc Splash Studios ACM Audio Codec +>>>>>>>(104.l+132) string/c sqz2 Microsoft VXtreme Video Codec +>>>>>>>(104.l+132) string/c sv10 Sorenson Video R1 +>>>>>>>(104.l+132) string/c tlms TeraLogic Motion Intraframe Codec A +>>>>>>>(104.l+132) string/c tlst TeraLogic Motion Intraframe Codec B +>>>>>>>(104.l+132) string/c tm20 TrueMotion 2.0 +>>>>>>>(104.l+132) string/c tmic TeraLogic Motion Intraframe Codec 2 +>>>>>>>(104.l+132) string/c tmot TrueMotion Video Compression +>>>>>>>(104.l+132) string/c tr20 TrueMotion RT 2.0 +>>>>>>>(104.l+132) string/c ulti Ultimotion +>>>>>>>(104.l+132) string/c uyvy UYVY 4:2:2 byte ordering +>>>>>>>(104.l+132) string/c v422 24-bit YUV 4:2:2 format +>>>>>>>(104.l+132) string/c v655 16-bit YUV 4:2:2 format +>>>>>>>(104.l+132) string/c vcr1 ATI VCR 1.0 +>>>>>>>(104.l+132) string/c vcr2 ATI VCR 2.0 +>>>>>>>(104.l+132) string/c vcr3 ATI VCR 3.0 +>>>>>>>(104.l+132) string/c vcr4 ATI VCR 4.0 +>>>>>>>(104.l+132) string/c vcr5 ATI VCR 5.0 +>>>>>>>(104.l+132) string/c vcr6 ATI VCR 6.0 +>>>>>>>(104.l+132) string/c vcr7 ATI VCR 7.0 +>>>>>>>(104.l+132) string/c vcr8 ATI VCR 8.0 +>>>>>>>(104.l+132) string/c vcr9 ATI VCR 9.0 +>>>>>>>(104.l+132) string/c vdct Video Maker Pro DIB +>>>>>>>(104.l+132) string/c vids YUV 4:2:2 CCIR 601 for V422 +>>>>>>>(104.l+132) string/c vivo Vivo H.263 +>>>>>>>(104.l+132) string/c vixl VIXL +>>>>>>>(104.l+132) string/c vlv1 VLCAP.DRV +>>>>>>>(104.l+132) string/c wbvc W9960 +>>>>>>>(104.l+132) string/c x263 mmioFOURCC('X','2','6','3') +>>>>>>>(104.l+132) string/c xlv0 XL Video Decoder +>>>>>>>(104.l+132) string/c y211 YUV 2:1:1 Packed +>>>>>>>(104.l+132) string/c y411 YUV 4:1:1 Packed +>>>>>>>(104.l+132) string/c y41b YUV 4:1:1 Planar +>>>>>>>(104.l+132) string/c y41p PC1 4:1:1 +>>>>>>>(104.l+132) string/c y41t PC1 4:1:1 with transparency +>>>>>>>(104.l+132) string/c y42b YUV 4:2:2 Planar +>>>>>>>(104.l+132) string/c y42t PC1 4:2:2 with transparency +>>>>>>>(104.l+132) string/c yc12 Intel YUV12 Codec +>>>>>>>(104.l+132) string/c yuv8 Winnov Caviar YUV8 +>>>>>>>(104.l+132) string/c yuv9 YUV9 +>>>>>>>(104.l+132) string/c yuy2 YUY2 4:2:2 byte ordering packed +>>>>>>>(104.l+132) string/c yuyv BI_YUYV, Canopus >>>>>>>(104.l+132) string/c fmp4 FFMpeg MPEG-4 ->>>>>>>(104.l+132) string/c mjpg Motion JPEG >>>>>>>(104.l+132) string/c div3 DivX 3 >>>>>>>>112 string/c div3 Low-Motion >>>>>>>>112 string/c div4 Fast-Motion @@ -248,7 +486,7 @@ >>>>>>>>(92.l+180) leshort 0x0055 MPEG-1 Layer 3 >>>>>>>>(92.l+180) leshort 0x2000 Dolby AC3 >>>>>>>>(92.l+180) leshort 0x0161 DivX -##>>>>>>>>(92.l+180) leshort x (0x%.4x) +##>>>>>>>>(92.l+180) leshort x (%#.4x) >>>>>>>>(92.l+182) leshort 1 (mono, >>>>>>>>(92.l+182) leshort 2 (stereo, >>>>>>>>(92.l+182) leshort >2 (%d channels, @@ -260,24 +498,74 @@ >>>>>>>>(92.l+188) leshort 0x0055 MPEG-1 Layer 3 >>>>>>>>(92.l+188) leshort 0x2000 Dolby AC3 >>>>>>>>(92.l+188) leshort 0x0161 DivX -##>>>>>>>>(92.l+188) leshort x (0x%.4x) +##>>>>>>>>(92.l+188) leshort x (%#.4x) >>>>>>>>(92.l+190) leshort 1 (mono, >>>>>>>>(92.l+190) leshort 2 (stereo, >>>>>>>>(92.l+190) leshort >2 (%d channels, >>>>>>>>(92.l+192) lelong x %d Hz) +# From: Joerg Jenderek +# URL: http://fileformats.archiveteam.org/wiki/VDR_(VirtualDub) +# Reference: http://sourceforge.net/projects/virtualdub/files/virtualdub-win/ +# 1.10.4.35491/VirtualDub-1.10.4-src.7z/src/vdremote/Main.cpp +# VirtualDub link handler +>8 string VDRM \b, VirtualDub link +!:mime video/x-vdr +!:ext vdr +>>12 string PATH \b, PATH +# remote-path to video file +>>16 pstring/l x %s # Animated Cursor format +# Update: Joerg Jenderek +# URL: http://fileformats.archiveteam.org/wiki/Windows_Animated_Cursor +# Reference: https://www.gdgsoft.com/anituner/help/aniformat.htm >8 string ACON \b, animated cursor +!:mime application/x-navi-animation +# http://extension.nirsoft.net/ani +#!:mime image/ani +!:ext ani +# INAM tag followed by length of title +>>24 string INAM +>>>28 pstring/l x "%s" +# IART tag followed by length of author +>>>(28.l+32) ubelong 0x49415254 +>>>>&0 pstring/l x %s # SoundFont 2 <mpruett@sgi.com> ->8 string sfbk SoundFont/Bank +# URL: http://fileformats.archiveteam.org/wiki/SoundFont_2.0 +>8 string sfbk \b, SoundFont/Bank +!:mime audio/x-sfbk +!:ext sf2 # MPEG-1 wrapped in a RIFF, apparently +# URL: http://file.fyicenter.com/17_Video_.DAT_File_Extension_for_VCD_Files.html >8 string CDXA \b, wrapped MPEG-1 (CDXA) +!:mime video/x-cdxa +!:ext mpg/dat +# URL: http://fileformats.archiveteam.org/wiki/4X_IMA_ADPCM >8 string 4XMV \b, 4X Movie file +!:mime video/x-4xmv +!:ext 4xm/4xa # AMV-type AVI file: https://wiki.multimedia.cx/index.php?title=AMV >8 string AMV\040 \b, AMV +# http://fileformats.archiveteam.org/wiki/MTV_Video_(.AMV) +!:mime video/x-amv +!:ext amv +#!:ext amv/mtv +# URL: http://fileformats.archiveteam.org/wiki/WebP >8 string WEBP \b, Web/P image !:mime image/webp +!:ext webp >>12 use riff-walk # From: Joerg Jenderek +# URL: http://fileformats.archiveteam.org/wiki/RIFF_MIDS +>8 string MIDS \b, MIDI Stream +!:mime audio/x-mids +!:ext mds +# From: Joerg Jenderek +# URL: http://mark0.net/soft-trid-e.html +# Reference: http://fileformats.archiveteam.org/wiki/Trd_(TRID) +>8 string TRID \b, TrID defs package +!:mime application/x-trid-trd +!:ext trd +# From: Joerg Jenderek # URL: https://en.wikipedia.org/wiki/CorelDRAW # Reference: http://fileformats.archiveteam.org/wiki/CorelDRAW # Note: Since version 3 CorelDraw Pictures are RIFF based @@ -351,13 +639,43 @@ >>20 uleshort%100 >0 \b.%u # for debugging purpose display next chunk like: DISP LIST #>>22 string x \b, 4th "%-4.4s" -#>>26 ulelong x \b, 4th SIZE 0x%x +#>>26 ulelong x \b, 4th SIZE %#x # for debugging purpose display 5th chunk like: LIST DISP ccmm osfp #>>(26.l+30) string x \b, 5th "%-4.4s" # 1st data chunk length 10h implies 16 byte content with version info >16 ulelong 0x10 >>34 ubyte x %u >>>33 ubyte >0 \b.%u +# display information of RIFF based Corel Design formats +0 name corel-des +# display second chunk for debugging +#>8 string x \b, [8]=%.8s +>12 string x \b, Corel DESIGNER +!:mime image/x-corel-des +#!:mime application/x-vnd.corel.designer.document +# used by Corel Designer with newer versions since 16 +>12 string =fver graphics (root.dat) +!:ext dat +# used by Corel Designer templates with older versions with vrsn tag +>12 string !fver +# used by Corel Designer with versions 14-15 +>>11 string >D graphics (riffData.cdr) +!:ext cdr +# used by Corel Designer with versions 10-12 +>>11 string <E graphics +!:ext des +# version indicated by last ASCII char of second chunk tag +>11 string x \b, version '%-.1s' +# but vrsn short content is not always version indicator +# exceptions: 'A'~11.4 'B'~12 'C'~12.5 +>11 string >D +>>0 use corel-version +# for debugging purpose display next chunk like: DISP LIST +#>>22 string x \b, 4th "%-4.4s" +#>>26 ulelong x \b, 4th SIZE %#x +# for debugging purpose display 5th chunk like: LIST osfp +#>>(26.l+30) string x \b, 5th "%-4.4s" +>4 ulelong+8 x \b, %u bytes # # XXX - some of the below may only appear in little-endian form. # diff --git a/magic/Magdir/rtf b/magic/Magdir/rtf index c2e1f273bb02..48a1f28af467 100644 --- a/magic/Magdir/rtf +++ b/magic/Magdir/rtf @@ -1,6 +1,6 @@ #------------------------------------------------------------------------------ -# $File: rtf,v 1.8 2020/05/17 19:28:49 christos Exp $ +# $File: rtf,v 1.9 2020/12/12 20:01:47 christos Exp $ # rtf: file(1) magic for Rich Text Format (RTF) # # Duncan P. Simpson, D.P.Simpson@dcs.warwick.ac.uk @@ -33,7 +33,7 @@ #>6 search/105 \\ansi \b, ANSI >6 search/502 \\ansi \b, ANSI >6 default x \b, unknown character set -# look for explict codepage keyword +# look for explicit codepage keyword # "Burow, Steffanie - Im Tal des Schneeleoparden.rtf" #>5 search/110 \\ansicpg >5 search/500 \\ansicpg diff --git a/magic/Magdir/sccs b/magic/Magdir/sccs index 4717948fdbfc..04e7929921fd 100644 --- a/magic/Magdir/sccs +++ b/magic/Magdir/sccs @@ -1,9 +1,9 @@ #------------------------------------------------------------------------------ -# $File: sccs,v 1.7 2017/03/17 21:35:28 christos Exp $ +# $File: sccs,v 1.8 2020/06/20 21:32:52 christos Exp $ # sccs: file(1) magic for SCCS archives # -# SCCS archive structure: +# SCCS v4 archive structure: # \001h01207 # \001s 00276/00000/00000 # \001d D 1.1 87/09/23 08:09:20 ian 1 0 @@ -17,6 +17,8 @@ # Maybe we should just switch everybody from SCCS to RCS! # Further, you can't just say '\001h0', because the five-digit number # is a checksum that could (presumably) have any leading digit, -# and we don't have regular expression matching yet. -# Hence the following official kludge: -8 string \001s\ SCCS archive data +# Fortunately we have regular expression matching: +0 string \001h +>2 regex [0-9][0-9][0-9][0-9][0-9]$ +>>8 string \001s\040 SCCS v4 archive data +>2 string V6,sum= SCCS v6 archive data diff --git a/magic/Magdir/sgi b/magic/Magdir/sgi index 951920477392..fe532e00106d 100644 --- a/magic/Magdir/sgi +++ b/magic/Magdir/sgi @@ -1,6 +1,6 @@ #------------------------------------------------------------------------------ -# $File: sgi,v 1.23 2018/05/29 02:26:56 christos Exp $ +# $File: sgi,v 1.24 2021/09/13 13:23:53 christos Exp $ # sgi: file(1) magic for Silicon Graphics operating systems and applications # # Executable images are handled either in aout (for old-style a.out @@ -74,25 +74,27 @@ 0 string PmNs PCP compiled namespace (V.0) 0 string PmN PCP compiled namespace >3 string >\0 (V.%1.1s) -#3 lelong 0x84500526 PCP archive 3 belong 0x84500526 PCP archive >7 byte x (V.%d) -#>20 lelong -2 temporal index -#>20 lelong -1 metadata -#>20 lelong 0 log volume #0 -#>20 lelong >0 log volume #%d >20 belong -2 temporal index >20 belong -1 metadata >20 belong 0 log volume #0 >20 belong >0 log volume #%d >24 string >\0 host: %s +3 belong 0x28500526 PCP archive +>7 byte x (V.%d) +>24 belong -2 temporal index +>24 belong -1 metadata +>24 belong 0 log volume #0 +>24 belong >0 log volume #%d +>36 string >\0 host: %s 0 string PCPFolio PCP >9 string Version: Archive Folio >18 string >\0 (V.%s) 0 string #pmchart PCP pmchart view >9 string Version >17 string >\0 (V%-3.3s) -0 string #kmchart PCP kmchart view +0 string #kmchart PCP pmchart view >9 string Version >17 string >\0 (V.%s) 0 string pmview PCP pmview config @@ -112,6 +114,10 @@ >16 string >\0 (V.%1.1s) 3 string pmieconf-pmie PCP pmie config >17 string >\0 (V.%1.1s) +0 string #pmlogconf-setup PCP pmlogconf config +>17 string >\0 (V.%1.1s) +1 string pmlogconf PCP pmlogger config +>11 string >\0 (V.%1.1s) 0 string MMV PCP memory mapped values >4 long x (V.%d) diff --git a/magic/Magdir/sgml b/magic/Magdir/sgml index 74ab855b927e..a1c0484ce4dd 100644 --- a/magic/Magdir/sgml +++ b/magic/Magdir/sgml @@ -1,6 +1,6 @@ #------------------------------------------------------------------------------ -# $File: sgml,v 1.41 2020/06/07 18:16:43 christos Exp $ +# $File: sgml,v 1.42 2020/12/12 20:01:47 christos Exp $ # Type: SVG Vectorial Graphics # From: Noel Torres <tecnico@ejerciciosresueltos.com> 0 string \<?xml\ version= @@ -43,7 +43,7 @@ # sgml: file(1) magic for Standard Generalized Markup Language # HyperText Markup Language (HTML) is an SGML document type, # from Daniel Quinlan (quinlan@yggdrasil.com) -# adapted to string extenstions by Anthon van der Neut <anthon@mnt.org) +# adapted to string extensions by Anthon van der Neut <anthon@mnt.org) 0 search/4096/cWt \<!doctype\ html HTML document text !:mime text/html !:strength + 5 diff --git a/magic/Magdir/sinclair b/magic/Magdir/sinclair index 60088924f4a4..608d779d7b55 100644 --- a/magic/Magdir/sinclair +++ b/magic/Magdir/sinclair @@ -1,6 +1,6 @@ #------------------------------------------------------------------------------ -# $File: sinclair,v 1.6 2015/11/14 13:38:35 christos Exp $ +# $File: sinclair,v 1.7 2021/04/27 20:35:51 christos Exp $ # sinclair: file(1) sinclair QL # additions to /etc/magic by Thomas M. Ott (ThMO) @@ -31,6 +31,8 @@ # Sinclair QL executables (was ThMO) 4 belong 0x4AFB QDOS executable >9 pstring x '%s' +6 beshort 0x4AFB QDOS executable +>9 pstring x '%s' # Sinclair QL ROM (ThMO) 0 belong =0x4AFB0001 QL plugin-ROM data, diff --git a/magic/Magdir/sniffer b/magic/Magdir/sniffer index 25f5b83e3bbc..816ecb907a3e 100644 --- a/magic/Magdir/sniffer +++ b/magic/Magdir/sniffer @@ -1,6 +1,6 @@ #------------------------------------------------------------------------------ -# $File: sniffer,v 1.28 2020/03/13 16:47:29 christos Exp $ +# $File: sniffer,v 1.30 2021/07/03 13:51:56 christos Exp $ # sniffer: file(1) magic for packet capture files # # From: guy@alum.mit.edu (Guy Harris) @@ -262,8 +262,14 @@ >20 belong&0x03FFFFFF 279 (Elektrobit High Speed Capture and Replay (EBHSCR) >20 belong&0x03FFFFFF 281 (Broadcom tag >20 belong&0x03FFFFFF 282 (Broadcom tag (prepended) +>20 belong&0x03FFFFFF 283 (802.15.4 with TAP >20 belong&0x03FFFFFF 284 (Marvell DSA >20 belong&0x03FFFFFF 285 (Marvell EDSA +>20 belong&0x03FFFFFF 286 (ELEE lawful intercept +>20 belong&0x03FFFFFF 287 (Z-Wave serial +>20 belong&0x03FFFFFF 288 (USB 2.0 +>20 belong&0x03FFFFFF 289 (ATSC ALP +>20 belong&0x03FFFFFF 290 (Event Tracing for Windows # print default match >20 default x >>20 belong x (linktype#%u diff --git a/magic/Magdir/sosi b/magic/Magdir/sosi index cfac5a3e2730..88ecc512badb 100644 --- a/magic/Magdir/sosi +++ b/magic/Magdir/sosi @@ -1,6 +1,6 @@ #------------------------------------------------------------------------------ -# $File: sosi,v 1.1 2019/05/20 17:25:09 christos Exp $ +# $File: sosi,v 1.2 2021/02/23 00:51:10 christos Exp $ # SOSI # Summary: Systematic Organization of Spatial Information # Long description: Norwegian text based map format @@ -23,7 +23,7 @@ # version and a separator. # # FIXME figure out how to accept any of [space], [tab], [newline] and -# [carrige return] as separators, not only line end. +# [carriage return] as separators, not only line end. # Not searching for full "OMR=C3=85DE" to match also for non-UTF-8 # character sets diff --git a/magic/Magdir/spectrum b/magic/Magdir/spectrum index e8304d7b8cdf..f295979ac48d 100644 --- a/magic/Magdir/spectrum +++ b/magic/Magdir/spectrum @@ -1,6 +1,6 @@ #------------------------------------------------------------------------------ -# $File: spectrum,v 1.8 2017/09/11 23:51:12 christos Exp $ +# $File: spectrum,v 1.9 2021/04/26 15:56:00 christos Exp $ # spectrum: file(1) magic for Spectrum emulator files. # # John Elliott <jce@seasip.demon.co.uk> @@ -51,7 +51,7 @@ # Hard disk images 0 string RS-IDE\x1a Spectrum .HDF hard disk image ->7 byte x \b, version 0x%02x +>7 byte x \b, version %#02x # SZX snapshots (fuse and spectaculator) # Martin M. S. Pedersen <martin@linux.com> diff --git a/magic/Magdir/sql b/magic/Magdir/sql index 28d89e63bf48..5f4629f4b4bf 100644 --- a/magic/Magdir/sql +++ b/magic/Magdir/sql @@ -1,6 +1,6 @@ #------------------------------------------------------------------------------ -# $File: sql,v 1.22 2019/04/19 00:42:27 christos Exp $ +# $File: sql,v 1.23 2021/07/30 14:53:38 christos Exp $ # sql: file(1) magic for SQL files # # From: "Marty Leisner" <mleisner@eng.mc.xerox.com> @@ -91,32 +91,110 @@ # Version 2 used this format: 0 string **\ This\ file\ contains\ an\ SQLite SQLite 2.x database +# URL: https://en.wikipedia.org/wiki/SQLite +# Reference: https://www.sqlite.org/fileformat.html +# Update: Joerg Jenderek # Version 3 of SQLite allows applications to embed their own "user version" # number in the database at offset 60. Later, SQLite added an "application id" # at offset 68 that is preferred over "user version" for indicating the # associated application. # -0 string SQLite\ format\ 3 SQLite 3.x database -!:mime application/x-sqlite3 +0 string SQLite\ format\ 3 +# skip DROID fmt-729-signature-id-1053.sqlite by checking for valid page size +>16 ubeshort >0 SQLite 3.x +# deprecated +#!:mime application/x-sqlite3 +!:mime application/vnd.sqlite3 # seldom found extension sqlite3 like in SyncData.sqlite3 # db +# db3 like: AddrBook.db3 cgipcrvp.db3 +# https://www.maplesoft.com/support/help/Maple/view.aspx?path=worksheet%2freference%2fhelpdatabase +# help is used for newer Maple help database +# SQLite database weewx.sdb used by weather software weewx +# https://www.weewx.com/docs/usersguide.htm # Avira Antivir use extension "dbe" like in avevtdb.dbe, avguard_tchk.dbe # Unfortunately extension sqlite also used for other databases starting with string # "TTCONTAINER" like in tracks.sqlite contentconsumer.sqlite contentproducerrepository.sqlite # and with string "ZV-zlib" in like extra.sqlite -!:ext sqlite/sqlite3/db/dbe ->60 belong =0x5f4d544e (Monotone source repository) ->68 belong =0x0f055112 (Fossil checkout) ->68 belong =0x0f055113 (Fossil global configuration) ->68 belong =0x0f055111 (Fossil repository) ->68 belong =0x42654462 (Bentley Systems BeSQLite Database) ->68 belong =0x42654c6e (Bentley Systems Localization File) ->68 belong =0x47504b47 (OGC GeoPackage file) ->68 default x ->>68 belong !0 \b, application id %u ->>60 belong !0 \b, user version %d ->96 belong x \b, last written using SQLite version %d - +>>68 belong !0x5CDE09EF database +!:ext sqlite/sqlite3/db/db3/dbe/sdb/help +>>68 belong =0x5CDE09EF database +# maple is used for Maple Workbook +!:ext maple +>>60 belong =0x5f4d544e (Monotone source repository) +# if no known user version then check for Application IDs with default clause +>>60 belong !0x5f4d544e +# The "Application ID" set by PRAGMA application_id +>>>68 belong =0x0f055112 (Fossil checkout) +>>>68 belong =0x0f055113 (Fossil global configuration) +>>>68 belong =0x0f055111 (Fossil repository) +>>>68 belong =0x42654462 (Bentley Systems BeSQLite Database) +>>>68 belong =0x42654c6e (Bentley Systems Localization File) +>>>68 belong =0x47504b47 (OGC GeoPackage file) +# https://www.sqlite.org/src/artifact?ci=trunk&filename=magic.txt +>>>68 belong =0x47503130 (OGC GeoPackage version 1.0 file) +>>>68 belong =0x45737269 (Esri Spatially-Enabled Database) +>>>68 belong =0x4d504258 (MBTiles tileset) +# https://www.maplesoft.com/support/help/errors/view.aspx?path=Formats/Maple +>>>68 belong =0x5CDE09EF (Maple Workbook) +# unknown application ID +>>>68 default x +>>>>68 belong !0 \b, application id %u +# The "user version" as read and set by the user_version pragma like: +# 1 2 4 5 7 9 10 25 36 43 53 400 416 131073 131074 131075 +>>60 belong !0 \b, user version %d +# SQLITE_VERSION_NUMBER like: 0 3008011 3016002 3007014 3017000 3022000 3028000 3031001 +>>96 belong x \b, last written using SQLite version %d +# database page size in bytes; a power of two between 512 and 32768, or 1 for 65536 +# like: 512 1024 often 4096 32768 +>>16 ubeshort !4096 \b, page size %u +# File format write version. 1 for legacy; 2 for WAL; 0 for corruptDB.sqlite +>>18 ubyte !1 \b, writer version %u +# File format read version. 1 for legacy; 2 for WAL; 4 for corruptDB.sqlite +>>19 ubyte !1 \b, read version %u +# Bytes of unused "reserved" space at the end of each page. Usually 0 +>>20 ubyte !0 \b, unused bytes %u +# maximum embedded payload fraction. Must be 64; 1 for corruptDB.sqlite +>>21 ubyte !64 \b, maximum payload %u +# Minimum embedded payload fraction. Must be 32; 1 for corruptDB.sqlite +>>22 ubyte !32 \b, minimum payload %u +# Leaf payload fraction. Must be 32; 0 for corruptDB.sqlite +>>23 ubyte !32 \b, leaf payload %u +# file change counter +>>24 ubelong x \b, file counter %u +# Size of the database file in pages +>>28 ubelong x \b, database pages %u +# page number of the first freelist trunk page like: 0 2 3 4 5 9 +# 10 13 14 15 16 17 18 19 23 36 39 46 50 136 190 217 307 505 516 561 883 1659 +>>32 ubelong !0 \b, 1st free page %u +# total number of freelist pages +>>36 ubelong !0 \b, free pages %u +# 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 +>>40 ubelong x \b, cookie %#x +# the schema format number. Supported formats are 1 2 3 and often 4 +# 3328 for corruptDB.sqlite and 0 for 512 byte storage.sqlite (TorBrowser Firefox Thunderbird) +>>44 ubelong x \b, schema %u +# Suggested cache size like: 0 2000 +>>48 ubelong !0 \b, cache page size %u +# The page number of the largest root b-tree page when in auto-vacuum or incremental-vacuum modes, or zero otherwise. +>>52 ubelong !0 \b, largest root page %u +# The database text encoding; a value of 1 means UTF-8; 2 means UTF-16le; 3 means UTF-16be +#>>56 ubelong x \b, encoding %u +>>56 ubelong x +>>>56 ubelong =1 \b, UTF-8 +>>>56 ubelong =2 \b, UTF-16 little endian +>>>56 ubelong =3 \b, UTF-16 big endian +# 0 for corruptDB.sqlite and for storage.sqlite with database pages 1 (TorBrowser Firefox Thunderbird) +# https://mozilla.github.io/firefox-browser-architecture/text/0010-firefox-data-stores.html +>>>56 default x +>>>>56 ubelong x \b, unknown %#x encoding +# True (non-zero) for incremental-vacuum mode; false (zero) otherwiseqy +>>64 ubelong !0 \b, vacuum mode %u +# Reserved for expansion. Must be zero +>>72 uquad !0 \b, reserved %#llx +# The version-valid-for number like: +# 1 2 3 4 C F 68h 95h 266h A99h 3DCDh B7CEh +>>92 ubelong x \b, version-valid-for %u # SQLite Write-Ahead Log from SQLite version >= 3.7.0 # https://www.sqlite.org/fileformat.html#walformat diff --git a/magic/Magdir/statistics b/magic/Magdir/statistics new file mode 100644 index 000000000000..0ceb82cd272f --- /dev/null +++ b/magic/Magdir/statistics @@ -0,0 +1,45 @@ + +#------------------------------------------------------------------------------ +# $File: statistics,v 1.2 2020/10/08 17:51:53 christos Exp $ +# statistics: file(1) magic for statistics related software +# + +# From Remy Rampin + +# Stata is a statistical software tool that was created in 1985. While I +# don't personally use it, data files in its native (proprietary) format +# are common (.dta files). +# +# Because they are so common, especially in statistical and social +# sciences, Stata files and SPSS files can be opened by a lot of modern +# software, for example Python's pandas package provides built-in +# support for them (read_stata() and read_spss()). +# +# I noticed that the magic database includes an entry for SPSS files but +# not Stata files. Stata files for Stata 13 and newer (formats 117, 118, +# and 119) always begin with the string "<stata_dta><header>" as per +# https://www.stata.com/help.cgi?dta#definition +# +# The format version number always follows, for example: +# <stata_dta><header><release>117</release> +# <stata_dta><header><release>118</release> +# +# Therefore the following line would do the trick: +# 0 string <stata_dta><header> Stata Data File +# +# (I'm sure the version number could be captured as well but I did not +# manage this without a regex) +# +# Unfortunately the previous formats (created by Stata before 13, which +# was released 2013) are harder to recognize. Format 115 starts with the +# four bytes 0x73010100 or 0x73020100, format 114 with 0x72010100 or +# 0x72020100, format 113 with 0x71010101 or 0x71020101. +# +# For additional reference, the Library of Congress website has an entry +# for the Stata Data File Format 118: +# https://www.loc.gov/preservation/digital/formats/fdd/fdd000471.shtml +# +# Example of those files can be found on Zenodo: +# https://zenodo.org/search?page=1&size=20&q=&file_type=dta +0 string \<stata_dta\>\<header\>\<release\> Stata Data File +>&0 regex [0-9]* (Release %s) diff --git a/magic/Magdir/terminfo b/magic/Magdir/terminfo index fc3bf7458ecd..1b036935b6e0 100644 --- a/magic/Magdir/terminfo +++ b/magic/Magdir/terminfo @@ -1,6 +1,6 @@ #------------------------------------------------------------------------------ -# $File: terminfo,v 1.11 2019/04/19 00:42:27 christos Exp $ +# $File: terminfo,v 1.12 2021/02/23 00:51:10 christos Exp $ # terminfo: file(1) magic for terminfo # # URL: https://invisible-island.net/ncurses/man/term.5.html @@ -30,7 +30,7 @@ >>12 regex \^[a-zA-Z0-9][a-zA-Z0-9.][^|]* Compiled 32-bit terminfo entry "%-s" !:mime application/x-terminfo2 # -# While the compiled terminfo uses little-endian format irregardless of +# While the compiled terminfo uses little-endian format regardless of # platform, SystemV screen dumps do not. They came later, and that detail was # overlooked. # diff --git a/magic/Magdir/timezone b/magic/Magdir/timezone index 9381a0cdd3f9..84e908166769 100644 --- a/magic/Magdir/timezone +++ b/magic/Magdir/timezone @@ -1,19 +1,19 @@ #------------------------------------------------------------------------------ -# $File: timezone,v 1.11 2009/09/19 16:28:12 christos Exp $ +# $File: timezone,v 1.13 2021/07/21 17:57:20 christos Exp $ # timezone: file(1) magic for timezone data # # from Daniel Quinlan (quinlan@yggdrasil.com) # this should work on Linux, SunOS, and maybe others # Added new official magic number for recent versions of the Olson code -0 string TZif timezone data +0 name timezone >4 byte 0 \b, old version >4 byte >0 \b, version %c >20 belong 0 \b, no gmt time flags >20 belong 1 \b, 1 gmt time flag >20 belong >1 \b, %d gmt time flags >24 belong 0 \b, no std time flags ->20 belong 1 \b, 1 std time flag +>24 belong 1 \b, 1 std time flag >24 belong >1 \b, %d std time flags >28 belong 0 \b, no leap seconds >28 belong 1 \b, 1 leap second @@ -21,9 +21,19 @@ >32 belong 0 \b, no transition times >32 belong 1 \b, 1 transition time >32 belong >1 \b, %d transition times ->36 belong 0 \b, no abbreviation chars ->36 belong 1 \b, 1 abbreviation char ->36 belong >1 \b, %d abbreviation chars +>36 belong 0 \b, no local time types +>36 belong 1 \b, 1 local time type +>36 belong >1 \b, %d local time types +>40 belong 0 \b, no abbreviation chars +>40 belong 1 \b, 1 abbreviation char +>40 belong >1 \b, %d abbreviation chars + +0 string TZif timezone data +>51 string TZif \b(slim) +>>51 use timezone +>51 default x \b(fat) +>>0 use timezone + 0 string \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0 old timezone data 0 string \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\2\0 old timezone data 0 string \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\3\0 old timezone data diff --git a/magic/Magdir/tplink b/magic/Magdir/tplink index fcd105dede00..971f428103ba 100644 --- a/magic/Magdir/tplink +++ b/magic/Magdir/tplink @@ -1,6 +1,6 @@ #------------------------------------------------------------------------------ -# $File: tplink,v 1.5 2020/03/28 23:14:26 christos Exp $ +# $File: tplink,v 1.7 2021/04/26 15:56:00 christos Exp $ # tplink: File magic for openwrt firmware files # URL: https://wiki.openwrt.org/doc/techref/header @@ -45,44 +45,44 @@ # total length of the firmware. not always true >0x7C ubelong x \b, %u bytes or less # unknown 1 ->0x48 ubelong !0 \b, UNKNOWN1 0x%x +>0x48 ubelong !0 \b, UNKNOWN1 %#x # md5sum1[16] #>0x4c ubequad x \b, MD5 %llx #>>0x54 ubequad x \b%llx # unknown 2 ->0x5c ubelong !0 \b, UNKNOWN2 0x%x +>0x5c ubelong !0 \b, UNKNOWN2 %#x # md5sum2[16] #>0x60 ubequad !0 \b, 2nd MD5 %llx #>>0x68 ubequad x \b%llx # unknown 3 ->0x70 ubelong !0 \b, UNKNOWN3 0x%x +>0x70 ubelong !0 \b, UNKNOWN3 %#x # kernel load address -#>0x74 ubelong x \b, 0x%x load +#>0x74 ubelong x \b, %#x load # kernel entry point -#>0x78 ubelong x \b, 0x%x entry +#>0x78 ubelong x \b, %#x entry # kernel data offset. 200h means direct after header ->0x80 ubelong x \b, at 0x%x +>0x80 ubelong x \b, at %#x # kernel data length and 1 space >0x84 ubelong x %u bytes # look for kernel type (gzip compressed vmlinux.bin by ./compress) >(0x80.L) indirect x # root file system data offset # WRONG in 5.35 with above indirect expression ->0x88 ubelong x \b, at 0x%x +>0x88 ubelong x \b, at %#x # rootfs data length and 1 space >0x8C ubelong x %u bytes # in 5.32 only true for offset ~< FILE_BYTES_MAX=9 MB defined in ../../src/file.h >(0x88.L) indirect x # 'qshs' for wr940nv1_en_3_13_7_up(111228).bin #>(0x88.L) string x \b, file system '%.4s' -#>(0x88.L) ubequad x \b, file system 0x%llx +#>(0x88.L) ubequad x \b, file system %#llx # bootloader data offset ->0x90 ubelong !0 \b, at 0x%x -# bootloader data length only resonable if bootloader offset not null +>0x90 ubelong !0 \b, at %#x +# bootloader data length only reasonable if bootloader offset not null >>0x94 ubelong !0 %u bytes # pad[354] should be 354 null bytes. -#>0x9E ubequad !0 \b, padding 0x%llx +#>0x9E ubequad !0 \b, padding %#llx # But at 0x120 18 non null bytes in examples like # wr940nv4_eu_3_16_9_up_boot(160620).bin # wr940nv6_us_3_18_1_up_boot(171030).bin -#>0x120 ubequad !0 \b, other padding 0x%llx +#>0x120 ubequad !0 \b, other padding %#llx diff --git a/magic/Magdir/uf2 b/magic/Magdir/uf2 new file mode 100644 index 000000000000..49a86d7640c1 --- /dev/null +++ b/magic/Magdir/uf2 @@ -0,0 +1,72 @@ + +#------------------------------------------------------------------------------ +# $File: uf2,v 1.3 2021/04/28 01:00:31 christos Exp $ +# uf2: file(1) magic for UF2 firmware image files +# +# https://github.com/microsoft/uf2 +# +# Created by Blake Ramsdell <blaker@gmail.com> + +0 string UF2\n UF2 firmware image +!:ext uf2 +# This is for checking the other magic numbers, do we want to do that? +#>4 lelong 0x9E5D5157 howdy +#>>508 lelong 0x0AB16F30 doody +>8 lelong &0x0001 \b, not main flash +>8 lelong &0x1000 \b, file container +>8 lelong &0x2000 \b, family + +# To update the UF2 family data, use this fine command +# +# families=`curl \ +# https://raw.githubusercontent.com/microsoft/uf2/master/utils/uf2families.json \ +# | jq -r '.[] | ">>28\tlelong\t\(.id)\t\(.description)"' | sort -n -k 3` && \ +# perl -0777 -i -pe \ +# "s/(### BEGIN UF2 FAMILIES\\n).*(\\n### END UF2 FAMILIES)/\$1$families\$2/s" \ +# uf2 + +### BEGIN UF2 FAMILIES +>>28 lelong 0x00ff6919 ST STM32L4xx +>>28 lelong 0x04240bdf ST STM32L5xx +>>28 lelong 0x16573617 Microchip (Atmel) ATmega32 +>>28 lelong 0x1851780a Microchip (Atmel) SAML21 +>>28 lelong 0x1b57745f Nordic NRF52 +>>28 lelong 0x1c5f21b0 ESP32 +>>28 lelong 0x1e1f432d ST STM32L1xx +>>28 lelong 0x202e3a91 ST STM32L0xx +>>28 lelong 0x21460ff0 ST STM32WLxx +>>28 lelong 0x2abc77ec NXP LPC55xx +>>28 lelong 0x300f5633 ST STM32G0xx +>>28 lelong 0x31d228c6 GD32F350 +>>28 lelong 0x4c71240a ST STM32G4xx +>>28 lelong 0x4fb2d5bd NXP i.MX RT10XX +>>28 lelong 0x53b80f00 ST STM32F7xx +>>28 lelong 0x55114460 Microchip (Atmel) SAMD51 +>>28 lelong 0x57755a57 ST STM32F401 +>>28 lelong 0x5a18069b Cypress FX2 +>>28 lelong 0x5d1a0a2e ST STM32F2xx +>>28 lelong 0x5ee21072 ST STM32F103 +>>28 lelong 0x647824b6 ST STM32F0xx +>>28 lelong 0x68ed2b88 Microchip (Atmel) SAMD21 +>>28 lelong 0x6b846188 ST STM32F3xx +>>28 lelong 0x6d0922fa ST STM32F407 +>>28 lelong 0x6db66082 ST STM32H7xx +>>28 lelong 0x70d16653 ST STM32WBxx +>>28 lelong 0x7eab61ed ESP8266 +>>28 lelong 0x7f83e793 NXP KL32L2x +>>28 lelong 0x8fb060fe ST STM32F407VG +>>28 lelong 0xada52840 Nordic NRF52840 +>>28 lelong 0xbfdd4eee ESP32-S2 +>>28 lelong 0xc47e5767 ESP32-S3 +>>28 lelong 0xd42ba06c ESP32-C3 +>>28 lelong 0xe48bff56 Raspberry Pi RP2040 +### END UF2 FAMILIES + +>>28 default x +>>>28 lelong x %#08x +>8 lelong&0x2000 0 \b, file size +>>28 lelong x %#08x +>8 lelong &0x4000 \b, MD5 checksum present +>8 lelong &0x8000 \b, extension tags present +>12 lelong x \b, address %#08x +>24 lelong x \b, %u total blocks diff --git a/magic/Magdir/virtual b/magic/Magdir/virtual index e947ee33d29c..86fe9fcd36d0 100644 --- a/magic/Magdir/virtual +++ b/magic/Magdir/virtual @@ -1,6 +1,6 @@ #------------------------------------------------------------------------------ -# $File: virtual,v 1.12 2020/02/15 01:20:15 christos Exp $ +# $File: virtual,v 1.14 2021/04/26 15:56:00 christos Exp $ # From: James Nobis <quel@quelrod.net> # Microsoft hard disk images for: # Virtual Server @@ -9,25 +9,25 @@ # URL: http://fileformats.archiveteam.org/wiki/VHD_(Virtual_Hard_Disk) # Reference: https://download.microsoft.com/download/f/f/e/ffef50a5-07dd-4cf8-aaa3-442c0673a029/ # Virtual%20Hard%20Disk%20Format%20Spec_10_18_06.doc -0 string conectix Microsoft Disk Image, Virtual Server or Virtual PC +0 string connectix Microsoft Disk Image, Virtual Server or Virtual PC # alternative shorter names -#0 string conectix Microsoft Virtual Hard Disk image -#0 string conectix Microsoft Virtual HD image +#0 string connectix Microsoft Virtual Hard Disk image +#0 string connectix Microsoft Virtual HD image !:mime application/x-virtualbox-vhd !:ext vhd # Features is a bit field used to indicate specific feature support -#>8 ubelong !0x00000002 \b, Features 0x%x +#>8 ubelong !0x00000002 \b, Features %#x # Reserved. This bit must always be set to 1. -#>8 ubelong &0x00000002 \b, Reserved 0x%x +#>8 ubelong &0x00000002 \b, Reserved %#x # File Format Version for the current specification 0x00010000 -#>12 ubelong !0x00010000 \b, Version 0x%8.8x +#>12 ubelong !0x00010000 \b, Version %#8.8x # Data Offset only found 0x200 -#>16 ubequad !0x200 \b, Data Offset 0x%llx -#>16 ubequad x \b, at 0x%llx +#>16 ubequad !0x200 \b, Data Offset %#llx +#>16 ubequad x \b, at %#llx # Dynamic Disk Header cookie like cxsparse #>(16.Q) string x "%-.8s" # This field contains a Unicode string (UTF-16) of the parent hard disk filename -#>(16.Q+64) ubequad x \b, parent name 0x%llx +#>(16.Q+64) ubequad x \b, parent name %#llx # Creator Application # vpc~Microsoft Virtual PC, vs~Microsoft Virtual Server, vbox~VirtualBox, d2v~disk2vhd >28 string x \b, Creator %-4.4s @@ -35,7 +35,7 @@ # holds the major/minor version of the application that created the image >32 ubeshort x %x >34 ubeshort x \b.%x -#>32 ubelong x \b, Version 0x%8.8x +#>32 ubelong x \b, Version %#8.8x # Creator Host OS: 0x5769326B~Windows (Wi2k), 0x4D616320~Macintosh (Mac) >36 ubelong x ( >>36 ubelong 0x5769326B \bW2k @@ -45,30 +45,30 @@ # creation Time in seconds since 1 Jan 2000 UTC~946684800 sec. since Unix Epoch >24 bedate+946684800 x \b) %s # Original Size -#>40 ubequad x \b, o.-Size 0x%llx +#>40 ubequad x \b, o.-Size %#llx # Current Size is same as original size, but change when disk is expanded -#>48 ubequad x \b, Size 0x%llx +#>48 ubequad x \b, Size %#llx >48 ubequad x \b, %llu bytes # Disk Geometry: cylinder, heads, and sectors/track for hard disk -#>56 ubeshort x \b, Cylinder 0x%x +#>56 ubeshort x \b, Cylinder %#x >56 ubeshort x \b, CHS %u # Heads -#>58 ubyte x \b, Heads 0x%x +#>58 ubyte x \b, Heads %#x >58 ubyte x \b/%u # Sectors per track -#>59 ubyte x \b, Sectors 0x%x +#>59 ubyte x \b, Sectors %#x >59 ubyte x \b/%u # Disk Type: 3~Dynamic hard disk ->60 ubelong !0x3 \b, type 0x%x +>60 ubelong !0x3 \b, type %#x # Checksum -#>64 ubelong x \b, cksum 0x%x +#>64 ubelong x \b, cksum %#x # universally unique identifier (UUID) to associate a parent with its differencing image -#>68 ubequad x \b, id 0x%16.16llx +#>68 ubequad x \b, id %#16.16llx #>76 ubequad x \b-%16.16llx # Saved State: 1~Saved State ->84 ubyte !0 \b, State 0x%x +>84 ubyte !0 \b, State %#x # Reserved 427 bytes with nils -#>85 ubequad !0 \b, Reserved 0x%16.16llx +#>85 ubequad !0 \b, Reserved %#16.16llx # From: Joerg Jenderek # URL: https://msdn.microsoft.com/en-us/library/mt740058.aspx @@ -88,43 +88,43 @@ # Creator[256] like "QEMU v3.0.0", "Microsoft Windows 6.3.9600.18512" >>8 lestring16 x \b, by %.256s # The Checksum field is a CRC-32C hash over the entire 4 KB structure -#>>0x10004 ulelong x \b, CRC 0x%x +#>>0x10004 ulelong x \b, CRC %#x # SequenceNumber ->>0x10008 ulequad x \b, sequence 0x%llx +>>0x10008 ulequad x \b, sequence %#llx # FileWriteGuid -#>>0x10010 ubequad x \b, file id 0x%llx +#>>0x10010 ubequad x \b, file id %#llx #>>>0x10018 ubequad x \b-%llx # DataWriteGuid -#>>0x10020 ubequad x \b, data id 0x%llx +#>>0x10020 ubequad x \b, data id %#llx #>>>0x10028 ubequad x \b-%llx # LogGuid. If this field is zero, then the log is empty or has no valid entries ->>0x10030 ubequad >0 \b, log id 0x%llx +>>0x10030 ubequad >0 \b, log id %#llx >>>0x10038 ubequad x \b-%llx # LogVersion. If not 0 there is a log to replay ->>0x10040 uleshort >0 \b, LogVersion 0x%x +>>0x10040 uleshort >0 \b, LogVersion %#x # Version. This field must be set to 1 ->>0x10042 uleshort !1 \b, Version 0x%x +>>0x10042 uleshort !1 \b, Version %#x # LogLength must be multiples of 1 MB >>0x10044 ulelong/1048576 >1 \b, LogLength %u MB # LogOffset (normally 0x100000 when log direct after header); multiples of 1 MB ->>0x10048 ulequad !0x100000 \b, LogOffset 0x%llx +>>0x10048 ulequad !0x100000 \b, LogOffset %#llx # Log Entry Signature must be 0x65676F6C~loge >>(0x10048.q) ulelong !0x65676F6C \b, NO Log Signature >>(0x10048.q) ulelong =0x65676F6C \b; LOG # Log Entry Checksum -#>>>(0x10048.q+4) ulelong x \b, Log CRC 0x%x +#>>>(0x10048.q+4) ulelong x \b, Log CRC %#x # Log Entry Length must be a multiple of 4 KB >>>(0x10048.q+8) ulelong/1024 >4 \b, EntryLength %u KB # Log Entry Tail must be a multiple of 4 KB -#>>>(0x10048.q+12) ulelong x \b, Tail 0x%x +#>>>(0x10048.q+12) ulelong x \b, Tail %#x # Log Entry SequenceNumber -#>>>(0x10048.q+16) ulequad x \b, # 0x%llx +#>>>(0x10048.q+16) ulequad x \b, # %#llx # Log Entry DescriptorCount may be zero. only 4 bytes in other docs instead 8 -#>>>(0x10048.q+24) ulelong x \b, DescriptorCount 0x%llx +#>>>(0x10048.q+24) ulelong x \b, DescriptorCount %#llx # Log Entry Reserved must be set to 0 ->>>(0x10048.q+28) ulelong !0 \b, Reserved 0x%x +>>>(0x10048.q+28) ulelong !0 \b, Reserved %#x # Log Entry LogGuid -#>>>(0x10048.q+32) ubequad x \b, Log id 0x%llx +#>>>(0x10048.q+32) ubequad x \b, Log id %#llx #>>>(0x10048.q+40) ubequad x \b-%llx # Log Entry FlushedFileOffset should VHDX size when entry is written. #>>>(0x10048.q+48) ulequad x \b, FlushedFileOffset %llu @@ -133,28 +133,28 @@ # filling #>>>(0x10048.q+64) ulequad >0 \b, filling %llx # Reserved[4016] -#>>0x10050 ulequad >0 \b, Reserved 0x%llx +#>>0x10050 ulequad >0 \b, Reserved %#llx # VHDX_REGION_TABLE_HEADER Signature 0x69676572~regi at offset 192 KB and 256 KB >0x30000 ulelong !0x69676572 \b, 1st region INVALID >0x30000 ulelong =0x69676572 \b; region # region Checksum. CRC-32C hash over the entire 64-KB table -#>>0x30004 ulelong x \b, CRC 0x%x +#>>0x30004 ulelong x \b, CRC %#x # The EntryCount specifies number of valid entries; Found 2; This must be =< 2047. >>0x30008 ulelong x \b, %u entries # reserved must be zero -#>>0x3000C ulelong !0 \b, RESERVED 0x%x +#>>0x3000C ulelong !0 \b, RESERVED %#x # Region Table Entry starts with identifier for the object. often BAT id >>0x30010 use vhdx-id # FileOffset ->>0x30020 ulequad x \b, at 0x%llx +>>0x30020 ulequad x \b, at %#llx # Length. Specifies the length of the object within the file -#>>0x30028 ulelong x \b, Length 0x%x +#>>0x30028 ulelong x \b, Length %#x # 1 means region entry is required. if region not recognized, then REFUSE to load VHDX >>0x3002C ulelong x \b, Required %u # 2nd region entry often metadata id >>0x30030 use vhdx-id # 2nd entry FileOffset ->>0x30040 ulequad x \b, at 0x%llx +>>0x30040 ulequad x \b, at %#llx # 1 means region entry is required. if region not recognized, then REFUSE to load VHDX >>0x3004C ulelong x \b, Required %u # 2nd region @@ -189,7 +189,7 @@ >>0 use vhdx-id-hex # in vhdx images show id as hexadecimal 0 name vhdx-id-hex ->0 ubequad x \b, ID 0x%16.16llx +>0 ubequad x \b, ID %#16.16llx >8 ubequad x \b-%16.16llx # # libvirt diff --git a/magic/Magdir/vorbis b/magic/Magdir/vorbis index b4a8f33abdb4..49e75cb2d2e5 100644 --- a/magic/Magdir/vorbis +++ b/magic/Magdir/vorbis @@ -1,6 +1,6 @@ #------------------------------------------------------------------------------ -# $File: vorbis,v 1.24 2018/03/14 04:38:44 christos Exp $ +# $File: vorbis,v 1.26 2020/08/22 18:30:55 christos Exp $ # vorbis: file(1) magic for Ogg/Vorbis files # # From Felix von Leitner <leitner@fefe.de> @@ -132,11 +132,11 @@ >>>>>>(84.b+117) string 20140122 (1.3.4) >>>>>>(84.b+117) string 20150105 (1.3.5) -# non-Vorbis content: Opus https://tools.ietf.org/html/draft-ietf-codec-oggopus-06#section-5 +# non-Vorbis content: Opus https://tools.ietf.org/html/rfc7845#section-5 >>28 string OpusHead \b, Opus audio, !:mime audio/ogg >>>36 ubyte >0x0F UNKNOWN VERSION %u, ->>>36 ubyte &0x0F version 0.%d +>>>36 ubyte&0x0F !0 version 0.%u, >>>>46 ubyte >1 >>>>>46 ubyte !255 unknown channel mapping family %u, >>>>>37 ubyte x %u channels @@ -152,4 +152,4 @@ >>>>>37 ubyte 6 5.1 surround >>>>>37 ubyte 7 6.1 surround >>>>>37 ubyte 8 7.1 surround ->>>>40 lelong !0 \b, %u Hz +>>>>40 lelong !0 \b, %u Hz (Input Sample Rate)
\ No newline at end of file diff --git a/magic/Magdir/windows b/magic/Magdir/windows index 8a7923fc1c73..4ec0af3e32d6 100644 --- a/magic/Magdir/windows +++ b/magic/Magdir/windows @@ -1,6 +1,6 @@ #------------------------------------------------------------------------------ -# $File: windows,v 1.31 2020/03/15 16:44:37 christos Exp $ +# $File: windows,v 1.37 2021/04/26 15:56:00 christos Exp $ # windows: file(1) magic for Microsoft Windows # # This file is mainly reserved for files where programs @@ -67,53 +67,53 @@ # \Boot\boot.sdi !:ext sdi # MDBtype: 0~Unspecified 1~RAM 2~ROM ->>8 ulequad !0 \b, MDBtype 0x%llx +>>8 ulequad !0 \b, MDBtype %#llx # BootCodeOffset ->>16 ulequad !0 \b, BootCodeOffset 0x%llx +>>16 ulequad !0 \b, BootCodeOffset %#llx # BootCodeSize ->>24 ulequad !0 \b, BootCodeSize 0x%llx +>>24 ulequad !0 \b, BootCodeSize %#llx # VendorID ->>32 ulequad !0 \b, VendorID 0x%llx +>>32 ulequad !0 \b, VendorID %#llx # DeviceID ->>40 ulequad !0 \b, DeviceID 0x%llx +>>40 ulequad !0 \b, DeviceID %#llx # DeviceModel ->>48 ulequad !0 \b, DeviceModel 0x%llx +>>48 ulequad !0 \b, DeviceModel %#llx >>>56 ulequad !0 \b%llx # DeviceRole ->>64 ulequad !0 \b, DeviceRole 0x%llx +>>64 ulequad !0 \b, DeviceRole %#llx # Reserved1; reserved fields and gaps between BLOBs are padded with \0 -#>>72 ulequad !0 \b, Reserved1 0x%llx +#>>72 ulequad !0 \b, Reserved1 %#llx # RuntimeGUID ->>80 ulequad !0 \b, RuntimeGUID 0x%llx +>>80 ulequad !0 \b, RuntimeGUID %#llx >>>88 ulequad !0 \b%llx # RuntimeOEMrev ->>96 ulequad !0 \b, RuntimeOEMrev 0x%llx +>>96 ulequad !0 \b, RuntimeOEMrev %#llx # Reserved2 -#>>104 ulequad !0 \b, Reserved2 0x%llx +#>>104 ulequad !0 \b, Reserved2 %#llx # BLOB alignment value in pages, as specified in sdimgr /pack: 1~4K 2~8k >>112 ulequad !0 \b, PageAlignment %llu # Reserved3[48] -#>>120 ulequad !0 \b, Reserved3 0x%llx +#>>120 ulequad !0 \b, Reserved3 %#llx # SDI checksum 39h ->>0x1f8 ulequad x \b, checksum 0x%llx +>>0x1f8 ulequad x \b, checksum %#llx # BLOBtype[8] \0-padded: PART, WIM , BOOT, LOAD, DISK >>0x400 string >\0 \b, type %-3.8s # 0~non-filesystem 7~NTFS 6~BIGFAT ->>>0x420 ulequad !0 (0x%llx) +>>>0x420 ulequad !0 (%#llx) # ATTRibutes ->>>0x408 ulequad !0 0x%llx attributes +>>>0x408 ulequad !0 %#llx attributes # Offset ->>>0x410 ulequad x at 0x%llx +>>>0x410 ulequad x at %#llx # print 1 space after size and then handles NTFS boot sector by ./filesystems >>>0x418 ulequad >0 %llu bytes >>>>(0x410.l) indirect x # 2nd BLOB: WIM >>0x440 string >\0 \b, type %-3.8s ->>>0x428 ulequad !0 (0x%llx) +>>>0x428 ulequad !0 (%#llx) # ATTRibutes ->>>0x448 ulequad !0 0x%llx attributes +>>>0x448 ulequad !0 %#llx attributes # Offset ->>>0x450 ulequad x at 0x%llx +>>>0x450 ulequad x at %#llx >>>0x458 ulequad >0 %llu bytes >>>>(0x450.l) indirect x # 3rd BLOB @@ -139,13 +139,13 @@ # apparently a version number: 2 for older like Vista, 3, 4 Windows 10 >0 ulelong >2 \b, version %u # apparently the size of the header: often 10h in older Windows, 14h, 18h ->4 ulelong !0x10 \b, header size 0x%x +>4 ulelong !0x10 \b, header size %#x #>4 ulelong !0x10 \b, header size %u # apparently the size of the file: always 0x00010000~64KiB # the file is acceptable to BOOTMGR only if it is exactly 64 KiB ->8 ulelong !0x00010000 \b, file size 0x%x +>8 ulelong !0x00010000 \b, file size %#x # size of valid data, in bytes: C8h 50h 172h 5D5Ch ->0xc ulelong x \b, 0x%x valid bytes +>0xc ulelong x \b, %#x valid bytes # skip header and jump to first bootstat entry and display information >(0x4.l-1) ubyte x >>&0 use bootstat-entry @@ -164,24 +164,24 @@ #>0x00 ubequad x \b, ENTRY %16.16llx # size of entry, in bytes: 40h(init) 78h(launced) 9Ch #>0x18 ulelong x \b; entry size %u ->0x18 ulelong x \b; entry size 0x%x +>0x18 ulelong x \b; entry size %#x # time stamp, in seconds ->0x00 ulelong x \b, 0x%x seconds +>0x00 ulelong x \b, %#x seconds # always zero, significance unknown >0x04 ulelong !0 \b, not null %u # GUID of event source; but empty if event source is BOOTMGR ->0x08 ubequad !0 \b, GUID 0x%16.16llx +>0x08 ubequad !0 \b, GUID %#16.16llx >>0x10 ubequad x \b%16.16llx # severity code: 1~informational 3~errors ->0x1C ulelong !1 \b, severity 0x%x +>0x1C ulelong !1 \b, severity %#x # apparently a version number: 2 >0x20 ulelong !2 \b, version %u # event identifier 1~log file initialised 11h~boot application launched -#>0x24 ulelong x \b, event 0x%x +#>0x24 ulelong x \b, event %#x >0x24 ulelong !1 ->>0x24 ulelong !0x11 \b, event 0x%x +>>0x24 ulelong !0x11 \b, event %#x # entry data; size depends on event identifier -#>0x28 ubequad x \b, data 0x%16.16llx +#>0x28 ubequad x \b, data %#16.16llx >0x24 ulelong =0x1 \b, Init # always 0, significance unknown >>0x34 uleshort !0 \b, not null %u @@ -248,7 +248,7 @@ >>>2 leshort 0x27 x.y >>>2 leshort 0x33 95 >>>2 default x y.z ->>>>2 leshort x 0x%x +>>>>2 leshort x %#x # to complete message string like "MS Windows 3.x help file" >>>2 leshort x help # GenDate often older than file creation date @@ -307,39 +307,39 @@ !:mime application/x-winhelp !:ext bmk ## FirstFreeBlock normally FFFFFFFFh 10h for *ANN -##>>8 lelong x \b, FirstFreeBlock 0x%8.8x +##>>8 lelong x \b, FirstFreeBlock %#8.8x # EntireFileSize >>12 lelong x \b, %d bytes ## ReservedSpace normally 042Fh AFh for *.ANN -#>>(4.l) lelong x \b, ReservedSpace 0x%8.8x +#>>(4.l) lelong x \b, ReservedSpace %#8.8x ## UsedSpace normally 0426h A6h for *.ANN -#>>(4.l+4) lelong x \b, UsedSpace 0x%8.8x +#>>(4.l+4) lelong x \b, UsedSpace %#8.8x ## FileFlags normally 04... -#>>(4.l+5) lelong x \b, FileFlags 0x%8.8x +#>>(4.l+5) lelong x \b, FileFlags %#8.8x ## file header magic 0x293B -#>>(4.l+9) uleshort x \b, file header magic 0x%4.4x +#>>(4.l+9) uleshort x \b, file header magic %#4.4x ## file header Flags 0x0402 -#>>(4.l+11) uleshort x \b, file header Flags 0x%4.4x +#>>(4.l+11) uleshort x \b, file header Flags %#4.4x ## file header PageSize 0400h 80h for *.ANN -#>>(4.l+13) uleshort x \b, PageSize 0x%4.4x +#>>(4.l+13) uleshort x \b, PageSize %#4.4x ## Structure[16] z4 #>>(4.l+15) string >\0 \b, Structure_"%-.16s" ## MustBeZero 0 -#>>(4.l+31) uleshort x \b, MustBeZero 0x%4.4x +#>>(4.l+31) uleshort x \b, MustBeZero %#4.4x ## PageSplits -#>>(4.l+33) uleshort x \b, PageSplits 0x%4.4x +#>>(4.l+33) uleshort x \b, PageSplits %#4.4x ## RootPage -#>>(4.l+35) uleshort x \b, RootPage 0x%4.4x +#>>(4.l+35) uleshort x \b, RootPage %#4.4x ## MustBeNegOne 0xffff -#>>(4.l+37) uleshort x \b, MustBeNegOne 0x%4.4x +#>>(4.l+37) uleshort x \b, MustBeNegOne %#4.4x ## TotalPages 1 -#>>(4.l+39) uleshort x \b, TotalPages 0x%4.4x +#>>(4.l+39) uleshort x \b, TotalPages %#4.4x ## NLevels 0x0001 -#>>(4.l+41) uleshort x \b, NLevels 0x%4.4x +#>>(4.l+41) uleshort x \b, NLevels %#4.4x ## TotalBtreeEntries -#>>(4.l+43) ulelong x \b, TotalBtreeEntries 0x%8.8x +#>>(4.l+43) ulelong x \b, TotalBtreeEntries %#8.8x ## pages of the B+ tree -#>>(4.l+47) ubequad x \b, PageStart 0x%16.16llx +#>>(4.l+47) ubequad x \b, PageStart %#16.16llx # start with colon or semicolon for comment line like Back2Life.cnt 0 regex \^(:|;) @@ -576,6 +576,13 @@ >>&0 regex/c \^(options)]\r\n Microsoft HTML Help Project !:mime text/plain !:ext hhp +# From: Joerg Jenderek +# URL: https://documentation.basis.com/BASISHelp/WebHelp/b3odbc/obdcdriv_character_translation.htm +# Reference: https://www.garykessler.net/library/file_sigs.html +# Note: stored in directory %WINDIR%\SysWOW64 or %WINDIR%\system +>>&0 regex/c \^(Windows\ Latin) Windows codepage translator +!:mime text/plain +!:ext cpx # unknown keyword after opening bracket >>&0 default x #>>>&0 string/c x UNKNOWN [%s @@ -590,7 +597,7 @@ >>>>>&0 ubyte x # characters, digits, underscore and white space followed by right bracket # terminated by CR implies section line to skip BOOTLOG.TXT DETLOG.TXT ->>>>>>&-1 regex \^([A-Za-z0-9_\(\)\ ]+)\]\r Generic INItialization configuration [%-.40s +>>>>>>&-1 regex/T \^([A-Za-z0-9_\(\)\ ]+)\]\r Generic INItialization configuration [%-.40s # NETDEF.INF multiarc.ini #!:mime application/x-setupscript !:mime application/x-wine-extension-ini @@ -660,7 +667,7 @@ # UNKNOWN1 0x01000000 # UNKNOWN2 0x02000000 >4 ulelong&0x03000180 >0 \b, flags ->>4 ulelong x 0x%x +>>4 ulelong x %#x >4 ulelong&0x00000001 0x00000001 \b, unicoded >4 ulelong&0x00000002 0x00000002 \b, has strings >4 ulelong&0x00000004 0x00000004 \b, src URL @@ -671,16 +678,16 @@ # >4 ulelong&0x00000100 0x00000100 \b, UNKNOWN # >4 ulelong&0x01000000 0x01000000 \b, UNKNOWN1 # >4 ulelong&0x02000000 0x02000000 \b, UNKNOWN2 -#>8 ulelong x \b, InfSubstValueListOffset 0x%x +#>8 ulelong x \b, InfSubstValueListOffset %#x # many 0, 1 lmouusb.PNF, 2 linkfx10.PNF , f webfdr16.PNF # , 6 bth.PNF, 9 usbport.PNF, d netnwifi.PNF, 10h nettcpip.PNF -#>12 uleshort x \b, InfSubstValueCount 0x%x +#>12 uleshort x \b, InfSubstValueCount %#x # only < 9 found: 8 hcw85b64.PNF -#>14 uleshort x \b, InfVersionDatumCount 0x%x +#>14 uleshort x \b, InfVersionDatumCount %#x # only found values lower 0x0000ffff ?? -#>16 ulelong x \b, InfVersionDataSize 0x%x +#>16 ulelong x \b, InfVersionDataSize %#x # only found positive values lower 0x00ffFFff for InfVersionDataOffset ->20 ulelong x \b, at 0x%x +>20 ulelong x \b, at %#x >4 ulelong&0x00000001 =0x00000001 # case independent: CatalogFile Class DriverVer layoutfile LayoutFile SetupClass signature Signature >>(20.l) lestring16 x "%s" @@ -693,18 +700,18 @@ >0 uleshort <0x0102 # only found values lower 0x00ffFFff # often 70 but also 78h for corelist.PNF -# >>32 ulelong x \b, StringTableBlockOffset 0x%x -# >>36 ulelong x \b, StringTableBlockSize 0x%x -# >>40 ulelong x \b, InfSectionCount 0x%x -# >>44 ulelong x \b, InfSectionBlockOffset 0x%x -# >>48 ulelong x \b, InfSectionBlockSize 0x%x -# >>52 ulelong x \b, InfLineBlockOffset 0x%x -# >>56 ulelong x \b, InfLineBlockSize 0x%x -# >>60 ulelong x \b, InfValueBlockOffset 0x%x -# >>64 ulelong x \b, InfValueBlockSize 0x%x +# >>32 ulelong x \b, StringTableBlockOffset %#x +# >>36 ulelong x \b, StringTableBlockSize %#x +# >>40 ulelong x \b, InfSectionCount %#x +# >>44 ulelong x \b, InfSectionBlockOffset %#x +# >>48 ulelong x \b, InfSectionBlockSize %#x +# >>52 ulelong x \b, InfLineBlockOffset %#x +# >>56 ulelong x \b, InfLineBlockSize %#x +# >>60 ulelong x \b, InfValueBlockOffset %#x +# >>64 ulelong x \b, InfValueBlockSize %#x # WinDirPathOffset # like 58h, which means direct after PNF header -#>>68 ulelong x \b, at 0x%x +#>>68 ulelong x \b, at %#x >>68 ulelong x >>>4 ulelong&0x00000001 =0x00000001 #>>>>(68.l) ubequad =0x43003a005c005700 @@ -725,18 +732,18 @@ # seldom C:\ instead empty >>>>>(72.l) string x OsLoaderPath "%s" # 1fdh -#>>>76 uleshort x \b, StringTableHashBucketCount 0x%x +#>>>76 uleshort x \b, StringTableHashBucketCount %#x # only 407h found >>>78 uleshort !0x409 \b, LanguageID %x #>>>78 uleshort =0x409 \b, LanguageID %x # InfSourcePathOffset often 0 ->>>80 ulelong >0 \b, at 0x%x +>>>80 ulelong >0 \b, at %#x >>>>4 ulelong&0x00000001 =0x00000001 >>>>>(80.l) lestring16 x SourcePath "%s" >>>>4 ulelong&0x00000001 !0x00000001 >>>>>(80.l) string >\0 SourcePath "%s" # OriginalInfNameOffset often 0 ->>>84 ulelong >0 \b, at 0x%x +>>>84 ulelong >0 \b, at %#x >>>>4 ulelong&0x00000001 =0x00000001 >>>>>(84.l) lestring16 x InfName "%s" >>>>4 ulelong&0x00000001 !0x00000001 @@ -744,7 +751,7 @@ # for newer Windows like Vista, 7 , 8.1 , 10 >0 uleshort >0x0101 ->>80 ulelong x \b, at 0x%x WinDirPath +>>80 ulelong x \b, at %#x WinDirPath >>>4 ulelong&0x00000001 0x00000001 # normally unicoded C:\Windows #>>>>(80.l) ubequad =0x43003a005c005700 @@ -754,7 +761,7 @@ # language id: 0 407h~german 409h~English_US >>90 uleshort !0x409 \b, LanguageID %x #>>90 uleshort =0x409 \b, LanguageID %x ->>92 ulelong >0 \b, at 0x%x +>>92 ulelong >0 \b, at %#x >>>4 ulelong&0x00000001 0x00000001 # language string like: de-DE en-US >>>>(92.l) lestring16 x language %s @@ -809,7 +816,7 @@ # Media Sequence Number >>>>>60 uleshort >1 \b, sequence %u # Password Encryption Algorithm (3) ->>>>>62 uleshort >0 \b, 0x%x encrypted +>>>>>62 uleshort >0 \b, %#x encrypted # Soft Filemark Block Size * 512 (2) #>>>>>64 uleshort =2 \b, soft size %u*512 >>>>>64 uleshort !2 \b, soft size %u*512 @@ -838,7 +845,7 @@ # size of password name (0,1Ch) #>>>>>76 uleshort >0 \b, password size %4.4x # Software Vendor ID (CBEh) ->>>>>86 uleshort x \b, software (0x%x) +>>>>>86 uleshort x \b, software (%#x) # size of Software Name (6Eh) >>>>>80 uleshort >0 # offset of Software Name (1C8h,1CAh,1D0h) @@ -890,9 +897,9 @@ >0x40 ubyte 0x7b >>0x40 string x %-.38s # do not know how this log version correlates to program version ->0x140 ulelong x \b, version 0x%x +>0x140 ulelong x \b, version %#x # NumRecs -#>0x144 ulelong x \b, 0x%4.4x records +#>0x144 ulelong x \b, %#4.4x records # EndOffset means files size >0x148 ulelong x \b, %u bytes # Flags 5 25h 35h @@ -918,9 +925,39 @@ # directory like C:\Program Files\GIMP 2 >>>>&0 lestring16 x \b, %-.42s +# URL: https://jrsoftware.org/ishelp/index.php?topic=setup_signeduninstaller +# Reference:https://github.com/jrsoftware/issrc/blob/main/Projects/Struct.pas +# From: Joerg Jenderek +0 string Inno\ Setup\ Messages\ ( +# null padded til 0x40 boundary +>0x38 quad 0 InnoSetup messages +!:mime application/x-innosetup-msg +# unins000.msg, unins001.msg, ... +!:ext msg +# version like 5.1.1 5.1.11 5.5.0 5.5.3 6.0.0 +>>0x15 string x \b, version %.5s +# look for 6th char of version string or terminating right parentheses +>>>0x1a ubyte !0x29 \b%c +# NumMessages +>>0x40 ulelong x \b, %u messages +# TotalSize: Cardinal; +#>>0x44 ulelong x \b, TotalSize %u +# NotTotalSize: Cardinal; +#>>0x48 ulelong x \b, NotTotalSize %u +# CRCMessages: Longint; +#>>0x4C ulelong x \b, CRC %#x +>>0x40 ulelong x +# (u) after version means unicoded messages +>>>0x1c search/2 (u) (UTF-16), +>>>>0x50 lestring16 x %s +# ASCII coded message +>>>0x1c default x (ASCII), +>>>>0x50 string x %s + # Windows Imaging (WIM) Image -# Update: Joerg Jenderek at Mar 2019 +# Update: Joerg Jenderek at Mar 2019, 2021 # URL: https://en.wikipedia.org/wiki/Windows_Imaging_Format +# http://fileformats.archiveteam.org/wiki/Windows_Imaging_Format # Reference: https://download.microsoft.com/download/f/e/f/ # fefdc36e-392d-4678-9e4e-771ffa2692ab/Windows%20Imaging%20File%20Format.rtf # Note: verified by like `7z t boot.wim` `wiminfo install.esd --header` @@ -936,21 +973,27 @@ # TO avoid in file version 5.36 error like # Magdir/windows, 760: Warning: Current entry does not yet have a description # file: could not find any valid magic files! (No error) -# splitted WIM +# split WIM >16 ulelong &0x00000008 (SWM !:ext swm # usPartNumber; 1, unless the file was split into multiple parts >>40 uleshort x \b %u # usTotalParts; The total number of WIM file parts in a spanned set >>42 uleshort x \b of %u) image -# non splitted WIM +# non split WIM >16 ulelong ^0x00000008 # https://wimlib.net/man1/wimmount.html # solid WIMs; version 3584; usually contain LZMS-compressed and the .esd extension >>12 ulelong 3584 (ESD) image !:ext esd ->>12 ulelong !3584 (WIM) image -!:ext wim +>>12 ulelong !3584 ( +# look for archive member RunTime.xml like in Microsoft.Windows.Cosa.Desktop.Client.ppkg +>>>156 search/68233/s RunTime.xml \bWindows provisioning package) +!:ext ppkg +# if is is not a Windows provisioning package, then it is a WIM +>>>156 default x \bWIM) image +# second disk image part created by Microsoft's RecoveryDrive.exe has name Reconstruct.WIM2 +!:ext wim/wim2 >0 string/b WLPWM\000\000\000 \b, wimlib pipable format # cbSize size of the WIM header in bytes like 208 #>8 ulelong x \b, headersize %u @@ -963,7 +1006,7 @@ # 1-based index of the bootable image of the WIM, or 0 if no image is bootable >0x78 ulelong >0 \b, bootable no. %u # dwFlags -#>16 ulelong x \b, flags 0x%8.8x +#>16 ulelong x \b, flags %#8.8x #define FLAG_HEADER_COMPRESSION 0x00000002 #define FLAG_HEADER_READONLY 0x00000004 #define FLAG_HEADER_SPANNED 0x00000008 @@ -990,21 +1033,21 @@ # dwCompressionSize; Uncompressed chunk size for resources or 0 if uncompressed #>20 ulelong >0 \b, chunk size %u bytes # gWIMGuid -#>24 ubequad x \b, GUID 0x%16.16llx +#>24 ubequad x \b, GUID %#16.16llx #>>32 ubequad x \b%16.16llx # rhOffsetTable; the location of the resource lookup table # wim_reshdr_disk[24]= u8 size_in_wim[7] + u8 flags + le64 offset_in_wim + le64 uncompressed_size -#>48 ubequad x \b, rhOffsetTable 0x%16.16llx +#>48 ubequad x \b, rhOffsetTable %#16.16llx # rhXmlData; the location of the XML data -#>0x50 ulelong x \b, at 0x%8.8x +#>0x50 ulelong x \b, at %#8.8x # NOT WORKING \xff\xfe<\0W\0I\0M\0 #>(0x50.l) ubequad x \b, xml=%16.16llx # rhBootMetadata; the location of the metadata resource -#>0x60 ubequad x \b, rhBootMetadata 0x%16.16llx +#>0x60 ubequad x \b, rhBootMetadata %#16.16llx # rhIntegrity; the location of integrity table used to verify files -#>0x7c ubequad x \b, rhIntegrity 0x%16.16llx +#>0x7c ubequad x \b, rhIntegrity %#16.16llx # Unused[60] -#>148 ubequad !0 \b,unused 0x%16.16llx +#>148 ubequad !0 \b,unused %#16.16llx # # From: Joerg Jenderek @@ -1018,7 +1061,7 @@ !:ext mig >0x18 string =MRTS without password # data offset with 1 space at end ->>0x1c ulelong+0x38 x \b, at 0x%x +>>0x1c ulelong+0x38 x \b, at %#x # look for zlib compressed data by ./compress >>(0x1c.l+0x38) ubyte x >>>&-1 indirect x diff --git a/magic/Magdir/wordprocessors b/magic/Magdir/wordprocessors index 7f3c4e8a429e..297addfb114c 100644 --- a/magic/Magdir/wordprocessors +++ b/magic/Magdir/wordprocessors @@ -1,6 +1,6 @@ #------------------------------------------------------------------------------ -# $File: wordprocessors,v 1.24 2020/05/22 19:28:47 christos Exp $ +# $File: wordprocessors,v 1.26 2021/08/21 12:45:34 christos Exp $ # wordprocessors: file(1) magic fo word processors. # ####### PWP file format used on Smith Corona Personal Word Processors: @@ -275,10 +275,13 @@ # From: Joerg Jenderek # URL: https://en.wikipedia.org/wiki/StarOffice +# Reference: http://mark0.net/download/triddefs_xml.7z +# /defs/t/thm-staroffice.trid.xml # Note: used in Star-, Open- and Libre-Office # named as soffice.StarConfigFile.6 or OpenOffice.org configuration by others 0 ubeshort 0x0400 -#>(2.s+8) ubequad x \b, gap 0x%16.16llx +# non nil gap +#>(2.s+8) ubequad x \b, gap %#16.16llx # test for null value in gap after theme name maybe unreliable #>(2.s+9) ubyte 0 \b, 0-byte # look for keyword GALRESRV near the end @@ -288,19 +291,27 @@ #>0 search/19299 GALRESRV \b, GALRESRV FOUND #>2 uleshort x \b, name length %u # skip file2147.chk by check for positive name length like for sg16.thm "3D" ->2 uleshort >0 StarOffice Gallery theme +>2 uleshort >0 +# skip dBase printer form T6.PRF with misidentified gallery +# name :\DBASE\IV\T6.txts by check for 1st object name or RESRV keyword +# https://www.clicketyclick.dk/databases/xbase/xbase/dbase_ex.zip +# template/t6/with_data/T6.PRF +# by first char of object name or RESRV part of keyword GALRESRV +>>(2.s+13) ubyte >0x1F StarOffice Gallery theme !:mime application/x-stargallery-thm +# thm is also used for JPEG thumbnail images !:ext thm -# gallery name ->>2 pstring/h x %s +# gallery name often 1 word like: 3D sounds Diagrams Flussdiagramme Fotos +# or like private://gallery/hidden/imgppt "Cisco - WAN - LAN" +>>>2 pstring/h x %s # number of objects ->>(2.s+4) ulelong x \b, %u object +>>>(2.s+4) ulelong x \b, %u object # plural s ->>(2.s+4) ulelong !1 \bs +>>>(2.s+4) ulelong !1 \bs # if available then display first object name ->>(2.s+4) ulelong >0 +>>>(2.s+4) ulelong >0 # partial file name, URL or internal name like "dd2*" of 1st object or RESRV ->>>(2.s+11) pstring/h x \b, 1st %s +>>>>(2.s+11) pstring/h x \b, 1st %s # From: Joerg Jenderek # URL: http://fileformats.archiveteam.org/wiki/StarOffice_Gallery @@ -309,7 +320,7 @@ # $HOME/.config/libreoffice/4/user/gallery 0 string SGA3 StarOffice Gallery thumbnails # Unknown like 0x04000?0001000142 -#>4 ubequad x \b, UNKNOWN 0x%16.16llx +#>4 ubequad x \b, UNKNOWN %#16.16llx #!:mime application/x-sdg !:mime application/x-stargallery-sdg !:ext sdg diff --git a/magic/Magdir/wsdl b/magic/Magdir/wsdl index 35edafc2f535..1c9e60aaa29d 100644 --- a/magic/Magdir/wsdl +++ b/magic/Magdir/wsdl @@ -1,13 +1,13 @@ #------------------------------------------------------------------------------ -# $File: wsdl,v 1.5 2019/04/19 00:42:27 christos Exp $ +# $File: wsdl,v 1.6 2021/04/26 15:56:00 christos Exp $ # wsdl: PHP WSDL Cache, https://www.php.net/manual/en/book.soap.php # Cache format extracted from source: # https://svn.php.net/viewvc/php/php-src/trunk/ext/soap/php_sdl.c?revision=HEAD&view=markup # Requires file >= 5.05 # By Elan Ruusamae <glen@delfi.ee>, Patryk Zawadzki <patrys@pld-linux.org>, 2010-2011 0 string wsdl PHP WSDL cache, ->4 byte x version 0x%02x +>4 byte x version %#02x >6 ledate x \b, created %s # uri diff --git a/magic/Magdir/xenix b/magic/Magdir/xenix index fb83faa876ed..01d894ca9d98 100644 --- a/magic/Magdir/xenix +++ b/magic/Magdir/xenix @@ -1,6 +1,6 @@ #------------------------------------------------------------------------------ -# $File: xenix,v 1.11 2017/03/17 21:35:28 christos Exp $ +# $File: xenix,v 1.14 2021/04/26 15:56:00 christos Exp $ # xenix: file(1) magic for Microsoft Xenix # # "Middle model" stuff, and "Xenix 8086 relocatable or 80286 small @@ -13,25 +13,35 @@ # 0 string core core file (Xenix) # URL: http://www.polarhome.com/service/man/?qf=86rel&tf=2&of=Xenix +# http://fileformats.archiveteam.org/wiki/OMF # Reference: http://www.azillionmonkeys.com/qed/Omfg.pdf # Update: Joerg Jenderek # recordtype~TranslatorHEADerRecord 0 byte 0x80 -# GRR: line above is too general as it catches also Extensible storage engine DataBase +# GRR: line above is too general as it catches also Extensible storage engine DataBase, +# all lif files like forth.lif hpcc88.lif lex90b.lif ( See ./lif) +# and all compressed DEGAS low-res bitmaps like: MUNCHIE.PC1 PIDER1.PC1 # skip examples like GENA.SND Switch.Snd by looking for record length maximal 1024-3 >1 uleshort <1022 -# skip examples like GAME.PICTURE Strange.Pic by looking for positiv record length +# skip examples like GAME.PICTURE Strange.Pic by looking for positive record length >>1 uleshort >0 -# skip examples like Xtable.Data FRACTAL.GEN SHR.VIEW by looking for positiv string length +# skip examples like Xtable.Data FRACTAL.GEN SHR.VIEW by looking for positive string length >>>3 ubyte >0 -# skip examples like OMBRE.6 with "UUUUUU" by looking for filename like "hello.c" ->>>>4 regex [a-zA-Z_/]{1,8}[.] 8086 relocatable (Microsoft) +# skip examples like OMBRE.6 with "UUUUUU" name by looking for valid high second record type +>>>>(1.s+3) ubyte >0x6D 8086 relocatable (Microsoft) #!:mime application/octet-stream !:mime application/x-object -!:ext o/a +!:ext obj/o/a +# T-module name often source name like "hello.c" or "jmppm32.asm" in JMPPM32.OBJ or +# "kbhit" in KBHITS.OBJ or "CAUSEWAY_KERNAL" in CWAPI.OBJ >>>>>3 pstring x \b, "%s" +# data length probably lower 256 according to TrID obj_omf.trid.xml +>>>>>1 uleshort x \b, 1st record data length %u # checksum -#>>>>>(3.b+4) ubyte x \b, checksum 0x%2.2x +#>>>>>(3.b+4) ubyte x \b, checksum %#2.2x +# second recordtype: 96h~LNAMES 88h~COMENT 8CH~EXTDEF +>>>>>(1.s+3) ubyte x \b, 2nd record type %#x +>>>>>(1.s+4) uleshort x \b, 2nd record data length %u 0 leshort 0xff65 x.out >2 string __.SYMDEF randomized >0 byte x archive diff --git a/magic/Magdir/xilinx b/magic/Magdir/xilinx index a5219778d390..b5443cbfd278 100644 --- a/magic/Magdir/xilinx +++ b/magic/Magdir/xilinx @@ -1,6 +1,6 @@ #------------------------------------------------------------------------------ -# $File: xilinx,v 1.8 2017/03/17 21:35:28 christos Exp $ +# $File: xilinx,v 1.9 2021/04/26 15:56:00 christos Exp $ # This is Aaron's attempt at a MAGIC file for Xilinx .bit files. # Xilinx-Magic@RevRagnarok.com # Got the info from FPGA-FAQ 0026 @@ -33,7 +33,7 @@ # Then 'e' >>>>>>>>>>>&1 string e # And length of data ->>>>>>>>>>>>&0 belong x - data length 0x%x +>>>>>>>>>>>>&0 belong x - data length %#x # Raw bitstream files 0 long 0xffffffff diff --git a/magic/Magdir/xwindows b/magic/Magdir/xwindows index 7118cadd05ef..37ed8744c5b8 100644 --- a/magic/Magdir/xwindows +++ b/magic/Magdir/xwindows @@ -1,6 +1,6 @@ #------------------------------------------------------------------------------ -# $File: xwindows,v 1.11 2019/04/19 00:42:27 christos Exp $ +# $File: xwindows,v 1.12 2021/08/24 08:31:10 christos Exp $ # xwindows: file(1) magic for various X/Window system file formats. # Compiled X Keymap @@ -33,3 +33,11 @@ !:mime image/x-xcursor >10 leshort x version %d >>8 leshort x \b.%d + +# X bitmap https://en.wikipedia.org/wiki/X_BitMap +0 search/2048 #define\040 +>&0 regex [a-zA-Z0-9]+_width\040 xbm image +>>&0 regex [0-9]* (%sx +>>>&0 string \n#define\040 +>>>>&0 regex [a-zA-Z0-9]+_height\040 +>>>>>&0 regex [0-9]* \b%s) diff --git a/magic/Magdir/yara b/magic/Magdir/yara index e581c433a56a..6156cc63bc3d 100644 --- a/magic/Magdir/yara +++ b/magic/Magdir/yara @@ -1,7 +1,7 @@ #------------------------------------------------------------------------------ -# $File: yara,v 1.3 2019/04/19 00:42:27 christos Exp $ +# $File: yara,v 1.4 2021/04/26 15:56:00 christos Exp $ # yara: file(1) magic for https://virustotal.github.io/yara/ # @@ -14,4 +14,4 @@ >>8 byte 8 created with version 3.4.0 >>8 byte 11 created with version 3.5.0 >>8 default x ->>>8 byte x development version 0x%02x +>>>8 byte x development version %#02x diff --git a/magic/Magdir/zfs b/magic/Magdir/zfs index 77675ed7196f..5cb0fdd180be 100644 --- a/magic/Magdir/zfs +++ b/magic/Magdir/zfs @@ -36,7 +36,7 @@ # full 64-bit values. # Big-endian values -8 string \000\000\000\002\365\272\313\254 ZFS shapshot (big-endian machine), +8 string \000\000\000\002\365\272\313\254 ZFS snapshot (big-endian machine), >20 belong x version %u, >32 belong 0 type: NONE, >32 belong 1 type: META, @@ -66,7 +66,7 @@ >56 string >\0 name: '%s' # Little-endian values -8 string \254\313\272\365\002\000\000\000 ZFS shapshot (little-endian machine), +8 string \254\313\272\365\002\000\000\000 ZFS snapshot (little-endian machine), >16 lelong x version %u, >32 lelong 0 type: NONE, >32 lelong 1 type: META, diff --git a/magic/Magdir/zip b/magic/Magdir/zip index cea7ceaac074..d70434db0f29 100644 --- a/magic/Magdir/zip +++ b/magic/Magdir/zip @@ -1,5 +1,5 @@ #------------------------------------------------------------------------------ -# $File: zip,v 1.4 2020/03/03 13:46:52 christos Exp $ +# $File: zip,v 1.7 2021/04/26 15:56:00 christos Exp $ # zip: file(1) magic for zip files; this is not use # Note the version of magic in archive is currently stronger, this is # just an example until negative offsets are supported better @@ -7,6 +7,7 @@ # Zip Central Directory record 0 name zipcd >0 string PK\001\002 Zip archive data +!:mime application/zip >>4 leshort x \b, made by >>4 use zipversion >>4 use ziphost @@ -18,7 +19,7 @@ >>10 use zipcompression # URL: https://en.wikipedia.org/wiki/Zip_(file_format) -# reference: https://pkware.cachefly.net/webdocs/APPNOTE/APPNOTE-6.3.6.TXT +# reference: https://pkware.cachefly.net/webdocs/casestudies/APPNOTE.TXT (Version: 6.3.9) # Zip known compressions 0 name zipcompression >0 leshort 0 \bstore @@ -33,11 +34,12 @@ #>0 leshort 13 \bReserved by PKWARE >0 leshort 14 \blzma #>0 leshort 15 \bReserved by PKWARE ->0 leshort 16 \bCMPSC Compression +>0 leshort 16 \bCMPSC (IBM z/OS) #>0 leshort 17 \bReserved by PKWARE >0 leshort 18 \bIBM TERSE ->0 leshort 19 \bIBM LZ77 -# https://support.winzip.com/hc/en-us/articles/115012122828-Compression-method-used-for-this-file-is-94 +>0 leshort 19 \bIBM LZ77 (z/Architecture) +>0 leshort 20 \bZstd (deprecated) +>0 leshort 93 \bZstd >0 leshort 94 \bMP3 >0 leshort 95 \bxz >0 leshort 96 \bJpeg @@ -97,7 +99,7 @@ >1 ubyte 18 OS/400 >1 ubyte 19 OS X # unused -#>1 ubyte >19 unused 0x%x +#>1 ubyte >19 unused %#x # Zip End Of Central Directory record -22 string PK\005\006 |
