1#------------------------------------------------------------------------------ 2# $File: archive,v 1.193 2023/07/27 17:55:58 christos Exp $ 3# archive: file(1) magic for archive formats (see also "msdos" for self- 4# extracting compressed archives) 5# 6# cpio, ar, arc, arj, hpack, lha/lharc, rar, squish, uc2, zip, zoo, etc. 7# pre-POSIX "tar" archives are also handled in the C code ../../src/is_tar.c. 8 9# POSIX tar archives 10# URL: https://en.wikipedia.org/wiki/Tar_(computing) 11# Reference: https://www.freebsd.org/cgi/man.cgi?query=tar&sektion=5&manpath=FreeBSD+8-current 12# header mainly padded with nul bytes 13500 quad 0 14!:strength /2 15# filename or extended attribute printable strings in range space null til umlaut ue 16>0 ubeshort >0x1F00 17>>0 ubeshort <0xFCFD 18# last 4 header bytes often null but tar\0 in gtarfail2.tar gtarfail.tar-bad 19# at https://sourceforge.net/projects/s-tar/files/testscripts/ 20>>>508 ubelong&0x8B9E8DFF 0 21# nul, space or ascii digit 0-7 at start of mode 22>>>>100 ubyte&0xC8 =0 23>>>>>101 ubyte&0xC8 =0 24# nul, space at end of check sum 25>>>>>>155 ubyte&0xDF =0 26# space or ascii digit 0 at start of check sum 27>>>>>>>148 ubyte&0xEF =0x20 28# FOR DEBUGGING: 29#>>>>>>>>0 regex \^[0-9]{2,4}[.](png|jpg|jpeg|tif|tiff|gif|bmp) NAME "%s" 30# check for 1st image main name with digits used for sorting 31# and for name extension case insensitive like: PNG JPG JPEG TIF TIFF GIF BMP 32>>>>>>>>0 regex \^[0-9]{2,4}[.](png|jpg|jpeg|tif|tiff|gif|bmp) 33>>>>>>>>>0 use tar-cbt 34# check for 1st member name with ovf suffix 35>>>>>>>>0 regex \^.{1,96}[.](ovf) 36>>>>>>>>>0 use tar-ova 37# if 1st member name without digits and without used image suffix and without *.ovf then it is a TAR archive 38>>>>>>>>0 default x 39>>>>>>>>>0 use tar-file 40# minimal check and then display tar archive information which can also be 41# embedded inside others like Android Backup, Clam AntiVirus database 420 name tar-file 43>257 string !ustar 44# header padded with nuls 45>>257 ulong =0 46# GNU tar version 1.29 with non pax format option without refusing 47# creates misleading V7 header for Long path, Multi-volume, Volume type 48>>>156 ubyte 0x4c GNU tar archive 49!:mime application/x-gtar 50!:ext tar/gtar 51>>>156 ubyte 0x4d GNU tar archive 52!:mime application/x-gtar 53!:ext tar/gtar 54>>>156 ubyte 0x56 GNU tar archive 55!:mime application/x-gtar 56!:ext tar/gtar 57>>>156 default x tar archive (V7) 58!:mime application/x-tar 59!:ext tar 60# other stuff in padding 61# some implementations add new fields to the blank area at the end of the header record 62# created for example by DOS TAR 3.20g 1994 Tim V.Shapore with -j option 63>>257 ulong !0 tar archive (old) 64!:mime application/x-tar 65!:ext tar 66# magic in newer, GNU, posix variants 67>257 string =ustar 68# 2 last char of magic and UStar version because string expression does not work 69# 2 space characters followed by a null for GNU variant 70>>261 ubelong =0x72202000 POSIX tar archive (GNU) 71!:mime application/x-gtar 72!:ext tar/gtar 73# UStar version with ASCII "00" 74>>261 ubelong 0x72003030 POSIX 75# gLOBAL and ExTENSION type only found in POSIX.1-2001 format 76>>>156 ubyte 0x67 \b.1-2001 77>>>156 ubyte 0x78 \b.1-2001 78>>>156 ubyte x tar archive 79!:mime application/x-ustar 80!:ext tar/ustar 81# version with 2 binary nuls embedded in Android Backup like com.android.settings.ab 82>>261 ubelong 0x72000000 tar archive (ustar) 83!:mime application/x-ustar 84!:ext tar/ustar 85# not seen ustar variant with garbish version 86>>261 default x tar archive (unknown ustar) 87!:mime application/x-ustar 88!:ext tar/ustar 89# type flag of 1st tar archive member 90#>156 ubyte x \b, %c-type 91>156 ubyte x 92>>156 ubyte 0 \b, file 93>>156 ubyte 0x30 \b, file 94>>156 ubyte 0x31 \b, hard link 95>>156 ubyte 0x32 \b, symlink 96>>156 ubyte 0x33 \b, char device 97>>156 ubyte 0x34 \b, block device 98>>156 ubyte 0x35 \b, directory 99>>156 ubyte 0x36 \b, fifo 100>>156 ubyte 0x37 \b, reserved 101>>156 ubyte 0x4c \b, long path 102>>156 ubyte 0x4d \b, multi volume 103>>156 ubyte 0x56 \b, volume 104>>156 ubyte 0x67 \b, global 105>>156 ubyte 0x78 \b, extension 106>>156 default x \b, type 107>>>156 ubyte x '%c' 108# name[100] 109>0 string >\0 %-.60s 110# mode mainly stored as an octal number in ASCII null or space terminated 111>100 string >\0 \b, mode %-.7s 112# user id mainly as octal numbers in ASCII null or space terminated 113>108 string >\0 \b, uid %-.7s 114# group id mainly as octal numbers in ASCII null or space terminated 115>116 string >\0 \b, gid %-.7s 116# size mainly as octal number in ASCII 117>124 ubyte <0x38 118>>124 string >\0 \b, size %-.12s 119# coding indicated by setting the high-order bit of the leftmost byte 120>124 ubyte >0xEF \b, size 0x 121>>124 ubyte !0xff \b%2.2x 122>>125 ubyte !0xff \b%2.2x 123>>126 ubyte !0xff \b%2.2x 124>>127 ubyte !0xff \b%2.2x 125>>128 ubyte !0xff \b%2.2x 126>>129 ubyte !0xff \b%2.2x 127>>130 ubyte !0xff \b%2.2x 128>>131 ubyte !0xff \b%2.2x 129>>132 ubyte !0xff \b%2.2x 130>>133 ubyte !0xff \b%2.2x 131>>134 ubyte !0xff \b%2.2x 132>>135 ubyte !0xff \b%2.2x 133# seconds since 0:0:0 1 jan 1970 UTC as octal number mainly in ASCII null or space terminated 134>136 string >\0 \b, seconds %-.11s 135# header checksum stored as an octal number in ASCII null or space terminated 136#>148 string x \b, cksum %.7s 137# linkname[100] 138>157 string >\0 \b, linkname %-.40s 139# additional fields for ustar 140>257 string =ustar 141# owner user name null terminated 142>>265 string >\0 \b, user %-.32s 143# group name null terminated 144>>297 string >\0 \b, group %-.32s 145# device major minor if not zero 146>>329 ubequad&0xCFCFCFCFcFcFcFdf !0 147>>>329 string x \b, devmaj %-.7s 148>>337 ubequad&0xCFCFCFCFcFcFcFdf !0 149>>>337 string x \b, devmin %-.7s 150# prefix[155] 151>>345 string >\0 \b, prefix %-.155s 152# old non ustar/POSIX tar 153>257 string !ustar 154>>508 string =tar\0 155# padding[255] in old star 156>>>257 string >\0 \b, padding: %-.40s 157>>508 default x 158# padding[255] in old tar sometimes comment field 159>>>257 string >\0 \b, comment: %-.40s 160# Summary: Comic Book Archive *.CBT with TAR format 161# URL: https://en.wikipedia.org/wiki/Comic_book_archive 162# http://fileformats.archiveteam.org/wiki/Comic_Book_Archive 163# Note: there exist also RAR, ZIP, ACE and 7Z packed variants 1640 name tar-cbt 165>0 string x Comic Book archive, tar archive 166#!:mime application/x-tar 167!:mime application/vnd.comicbook 168#!:mime application/vnd.comicbook+tar 169!:ext cbt 170# name[100] probably like: 19.jpg 0001.png 0002.png 171# or maybe like ComicInfo.xml 172>0 string >\0 \b, 1st image %-.60s 173# Summary: Open Virtualization Format *.OVF with disk images and more packed as TAR archive *.OVA 174# From: Joerg Jenderek 175# URL: https://en.wikipedia.org/wiki/Open_Virtualization_Format 176# http://fileformats.archiveteam.org/wiki/OVF_(Open_Virtualization_Format) 177# Reference: http://mark0.net/download/triddefs_xml.7z/defs/o/ova.trid.xml 178# Note: called "Open Virtualization Format package" by TrID 179# assuming *.ovf comes first 1800 name tar-ova 181>0 string x Open Virtualization Format Archive 182#!:mime application/x-ustar 183# http://extension.nirsoft.net/ova 184!:mime application/x-virtualbox-ova 185!:ext ova 186# assuming name[100] like: DOS-0.9.ovf FreeDOS_1.ovf Win98SE_DE.ovf 187>0 string >\0 \b, with %-.60s 188 189# Incremental snapshot gnu-tar format from: 190# https://www.gnu.org/software/tar/manual/html_node/Snapshot-Files.html 1910 string GNU\ tar- GNU tar incremental snapshot data 192>&0 regex [0-9]\\.[0-9]+-[0-9]+ version %s 193 194# cpio archives 195# 196# Yes, the top two "cpio archive" formats *are* supposed to just be "short". 197# The idea is to indicate archives produced on machines with the same 198# byte order as the machine running "file" with "cpio archive", and 199# to indicate archives produced on machines with the opposite byte order 200# from the machine running "file" with "byte-swapped cpio archive". 201# 202# The SVR4 "cpio(4)" hints that there are additional formats, but they 203# are defined as "short"s; I think all the new formats are 204# character-header formats and thus are strings, not numbers. 205# URL: http://fileformats.archiveteam.org/wiki/Cpio 206# https://en.wikipedia.org/wiki/Cpio 207# Reference: https://people.freebsd.org/~kientzle/libarchive/man/cpio.5.txt 208# Update: Joerg Jenderek 209# 210# Reference: http://mark0.net/download/triddefs_xml.7z/defs/a/ark-cpio-bin.trid.xml 211# Note: called "CPIO archive (binary)" by TrID, "cpio/Binary LE" by 7-Zip and "CPIO" by DROID via PUID fmt/635 2120 short 070707 213# skip DROID fmt-635-signature-id-960.cpio by looking for pathname of 1st entry 214>26 string >\0 cpio archive 215!:mime application/x-cpio 216# https://download.opensuse.org/distribution/leap/15.4/iso/openSUSE-Leap-15.4-NET-x86_64-Media.iso 217# boot/x86_64/loader/bootlogo 218# message.cpi 219!:ext /cpio/cpi 220>>0 use cpio-bin 221# Reference: http://mark0.net/download/triddefs_xml.7z/defs/a/ark-cpio-bin-sw.trid.xml 222# Note: called "CPIO archive (byte swapped binary)" by TrID and "Cpio/Binary BE" by 7-Zip 2230 short 0143561 byte-swapped cpio archive 224!:mime application/x-cpio # encoding: swapped 225# https://telparia.com/fileFormatSamples/archive/cpio/skeleton2.cpio 226!:ext cpio 227>0 use cpio-bin-be 228# Reference: http://mark0.net/download/triddefs_xml.7z/defs/a/ark-cpio.trid.xml 229# Note: called "CPIO archive (portable)" by TrID, "cpio/Portable ASCII" by 7-Zip and "cpio/odc" by GNU cpio 2300 string 070707 ASCII cpio archive (pre-SVR4 or odc) 231!:mime application/x-cpio 232# https://telparia.com/fileFormatSamples/archive/cpio/ pthreads-1.60B5.osr5src.cpio cinema.cpi VOL.000.008 VOL.000.012 233!:ext cpio/cpi/008/012 234# Note: called "CPIO archive (portable)" by TrID, "cpio/New ASCII" by 7-Zip and "cpio/newc" by GNU cpio 2350 string 070701 ASCII cpio archive (SVR4 with no CRC) 236!:mime application/x-cpio 237# https://telparia.com/fileFormatSamples/archive/cpio/MainActor-2.06.3.cpio 238!:ext cpio 239# Note: called "CPIO archive (portable)" by TrID, "cpio/New CRC" by 7-Zip and "cpio/crc" by GNU cpio 2400 string 070702 ASCII cpio archive (SVR4 with CRC) 241!:mime application/x-cpio 242# http://ftp.gnu.org/gnu/tar/tar-1.27.cpio.gz 243# https://telparia.com/fileFormatSamples/archive/cpio/pcmcia 244!:ext /cpio 245# display information of old binary cpio archive 246# Note: verfied by 7-Zip `7z l -tcpio -slt *.cpio` and 247# `cpio -ivt --numeric-uid-gid --file=clam.bin-le.cpio` 2480 name cpio-bin 249# c_dev; device number; WHAT IS THAT? 250>2 uleshort x \b; device %u 251# c_ino; truncated inode number; use `ls --inode` 252>4 uleshort x \b, inode %u 253# c_mode; mode specifies permissions and file type like: ?622~?rw-r--r-- by `ls -l` 254>6 uleshort x \b, mode %o 255# c_uid; numeric user id; use `ls --numeric-uid-gid` 256>8 uleshort x \b, uid %u 257# c_gid; numeric group id 258>10 uleshort x \b, gid %u 259# c_nlink; links to this file; directories at least 2 260>12 uleshort >1 \b, %u links 261# c_rdev; device number for block and character entries; zero for all other entries by writers 262# like 0x0440 for /dev/ttyS0 263>14 uleshort >0 \b, device %#4.4x 264# c_mtime[2]; modification time in seconds since 1 January 1970; most-significant 16 bits first 265>16 medate x \b, modified %s 266# c_filesize[2]; size of pathname; most-significant 16 bits first like: 544 267>22 melong x \b, %u bytes 268# c_namesize; bytes in the pathname that follows the header like: 9 269#>20 uleshort x \b, namesize %u 270# pathname of entry like: "clam.exe" 271>26 string x "%s" 272# display information of old binary byte swapped cpio archive 273# Note: verfied by 7-Zip `7z l -tcpio -slt *.cpio` and 274# `LANGUAGE=C cpio -ivt --numeric-uid-gid --file=clam.bin-be.cpio` 2750 name cpio-bin-be 276>2 ubeshort x \b; device %u 277>4 ubeshort x \b, inode %u 278>6 ubeshort x \b, mode %o 279>8 ubeshort x \b, uid %u 280>10 ubeshort x \b, gid %u 281>12 ubeshort >1 \b, %u links 282>14 ubeshort >0 \b, device %#4.4x 283>16 bedate x \b, modified %s 284>22 ubelong x \b, %u bytes 285#>20 ubeshort x \b, namesize %u 286>26 string x "%s" 287 288# 289# Various archive formats used by various versions of the "ar" 290# command. 291# 292 293# 294# Original UNIX archive formats. 295# They were written with binary values in host byte order, and 296# the magic number was a host "int", which might have been 16 bits 297# or 32 bits. We don't say "PDP-11" or "VAX", as there might have 298# been ports to little-endian 16-bit-int or 32-bit-int platforms 299# (x86?) using some of those formats; if none existed, feel free 300# to use "PDP-11" for little-endian 16-bit and "VAX" for little-endian 301# 32-bit. There might have been big-endian ports of that sort as 302# well. 303# 3040 leshort 0177555 very old 16-bit-int little-endian archive 3050 beshort 0177555 very old 16-bit-int big-endian archive 3060 lelong 0177555 very old 32-bit-int little-endian archive 3070 belong 0177555 very old 32-bit-int big-endian archive 308 3090 leshort 0177545 old 16-bit-int little-endian archive 310>2 string __.SYMDEF random library 3110 beshort 0177545 old 16-bit-int big-endian archive 312>2 string __.SYMDEF random library 3130 lelong 0177545 old 32-bit-int little-endian archive 314>4 string __.SYMDEF random library 3150 belong 0177545 old 32-bit-int big-endian archive 316>4 string __.SYMDEF random library 317 318# 319# From "pdp" (but why a 4-byte quantity?) 320# 3210 lelong 0x39bed PDP-11 old archive 3220 lelong 0x39bee PDP-11 4.0 archive 323 324# 325# XXX - what flavor of APL used this, and was it a variant of 326# some ar archive format? It's similar to, but not the same 327# as, the APL workspace magic numbers in pdp. 328# 3290 long 0100554 apl workspace 330 331# 332# System V Release 1 portable(?) archive format. 333# 3340 string =<ar> System V Release 1 ar archive 335!:mime application/x-archive 336 337# 338# Debian package; it's in the portable archive format, and needs to go 339# before the entry for regular portable archives, as it's recognized as 340# a portable archive whose first member has a name beginning with 341# "debian". 342# 343# Update: Joerg Jenderek 344# URL: https://en.wikipedia.org/wiki/Deb_(file_format) 3450 string =!<arch>\ndebian 346# https://manpages.debian.org/testing/dpkg/dpkg-split.1.en.html 347>14 string -split part of multipart Debian package 348!:mime application/vnd.debian.binary-package 349# udeb is used for stripped down deb file 350!:ext deb/udeb 351>14 string -binary Debian binary package 352!:mime application/vnd.debian.binary-package 353# For ipk packager see also https://en.wikipedia.org/wiki/Opkg 354!:ext deb/udeb/ipk 355# This should not happen 356>14 default x Unknown Debian package 357# NL terminated version; for most Debian cases this is 2.0 or 2.1 for split 358>68 string >\0 (format %s) 359#>68 string !2.0\n 360#>>68 string x (format %.3s) 361>68 string =2.0\n 362# 2nd archive name=control archive name like control.tar.gz or control.tar.xz 363# or control.tar.zst 364>>72 string >\0 \b, with %.15s 365# look for 3rd archive name=data archive name like data.tar.{gz,xz,bz2,lzma} 366>>0 search/0x93e4f data.tar. \b, data compression 367# the above line only works if FILE_BYTES_MAX in ../../src/file.h is raised 368# for example like libreoffice-dev-doc_1%3a5.2.7-1+rpi1+deb9u3_all.deb 369>>>&0 string x %.2s 370# skip space (0x20 BSD) and slash (0x2f System V) character marking end of name 371>>>&2 ubyte !0x20 372>>>>&-1 ubyte !0x2f 373# display 3rd character of file name extension like 2 of bz2 or m of lzma 374>>>>>&-1 ubyte x \b%c 375>>>>>>&0 ubyte !0x20 376>>>>>>>&-1 ubyte !0x2f 377# display 4th character of file name extension like a of lzma 378>>>>>>>>&-1 ubyte x \b%c 379# split debian package case 380>68 string =2.1\n 381# dpkg-1.18.25/dpkg-split/info.c 382# NL terminated ASCII package name like ckermit 383>>&0 string x \b, %s 384# NL terminated package version like 302-5.3 385>>>&1 string x %s 386# NL terminated MD5 checksum 387>>>>&1 string x \b, MD5 %s 388# NL terminated original package length 389>>>>>&1 string x \b, unsplitted size %s 390# NL terminated part length 391>>>>>>&1 string x \b, part length %s 392# NL terminated package part like n/m 393>>>>>>>&1 string x \b, part %s 394# NL terminated package architecture like armhf since dpkg 1.16.1 or later 395>>>>>>>>&1 string x \b, %s 396 397# 398# MIPS archive; they're in the portable archive format, and need to go 399# before the entry for regular portable archives, as it's recognized as 400# a portable archive whose first member has a name beginning with 401# "__________E". 402# 4030 string =!<arch>\n__________E MIPS archive 404!:mime application/x-archive 405>20 string U with MIPS Ucode members 406>21 string L with MIPSEL members 407>21 string B with MIPSEB members 408>19 string L and an EL hash table 409>19 string B and an EB hash table 410>22 string X -- out of date 411 412# 413# BSD/SVR2-and-later portable archive formats. 414# 415# Update: Joerg Jenderek 416# URL: http://fileformats.archiveteam.org/wiki/AR 417# Reference: https://www.unix.com/man-page/opensolaris/3HEAD/ar.h/ 418# Note: Mach-O universal binary in ./cafebabe is dependent 419# TODO: unify current ar archive, MIPS archive, Debian package 420# distinguish BSD, SVR; 32, 64 bit; HP from other 32-bit SVR; 421# *.ar packages from *.a libraries. handle empty archive 4220 string =!<arch>\n current ar archive 423# print first and possibly second ar_name[16] for debugging purpose 424#>8 string x \b, 1st "%.16s" 425#>68 string x \b, 2nd "%.16s" 426!:mime application/x-archive 427# a in most case for libraries; lib for Microsoft libraries; ar else cases 428!:ext a/lib/ar 429>8 string __.SYMDEF random library 430# first member with long marked name __.SYMDEF SORTED implies BSD library 431>68 string __.SYMDEF\ SORTED random library 432# Reference: https://parisc.wiki.kernel.org/images-parisc/b/b2/Rad_11_0_32.pdf 433# "archive file" entry moved from ./hp 434# LST header system_id 0210h~PA-RISC 1.1,... identifies the target architecture 435# LST header a_magic 0619h~relocatable library 436>68 belong 0x020b0619 - PA-RISC1.0 relocatable library 437>68 belong 0x02100619 - PA-RISC1.1 relocatable library 438>68 belong 0x02110619 - PA-RISC1.2 relocatable library 439>68 belong 0x02140619 - PA-RISC2.0 relocatable library 440#EOF for common ar archives 441 442# 443# "Thin" archive, as can be produced by GNU ar. 444# 4450 string =!<thin>\n thin archive with 446>68 belong 0 no symbol entries 447>68 belong 1 %d symbol entry 448>68 belong >1 %d symbol entries 449 4500 search/1 -h- Software Tools format archive text 451 452# ARC archiver, from Daniel Quinlan (quinlan@yggdrasil.com) 453# 454# The first byte is the magic (0x1a), byte 2 is the compression type for 455# the first file (0x01 through 0x09), and bytes 3 to 15 are the MS-DOS 456# filename of the first file (null terminated). Since some types collide 457# we only test some types on basis of frequency: 0x08 (83%), 0x09 (5%), 458# 0x02 (5%), 0x03 (3%), 0x04 (2%), 0x06 (2%). 0x01 collides with terminfo. 4590 lelong&0x8080ffff 0x0000081a ARC archive data, dynamic LZW 460!:mime application/x-arc 4610 lelong&0x8080ffff 0x0000091a ARC archive data, squashed 462!:mime application/x-arc 4630 lelong&0x8080ffff 0x0000021a ARC archive data, uncompressed 464!:mime application/x-arc 4650 lelong&0x8080ffff 0x0000031a ARC archive data, packed 466!:mime application/x-arc 4670 lelong&0x8080ffff 0x0000041a ARC archive data, squeezed 468!:mime application/x-arc 4690 lelong&0x8080ffff 0x0000061a ARC archive data, crunched 470!:mime application/x-arc 471# [JW] stuff taken from idarc, obviously ARC successors: 4720 lelong&0x8080ffff 0x00000a1a PAK archive data 473!:mime application/x-arc 4740 lelong&0x8080ffff 0x0000141a ARC+ archive data 475!:mime application/x-arc 4760 lelong&0x8080ffff 0x0000481a HYP archive data 477!:mime application/x-arc 478 479# Acorn archive formats (Disaster prone simpleton, m91dps@ecs.ox.ac.uk) 480# I can't create either SPARK or ArcFS archives so I have not tested this stuff 481# [GRR: the original entries collide with ARC, above; replaced with combined 482# version (not tested)] 483#0 byte 0x1a RISC OS archive (spark format) 4840 string \032archive RISC OS archive (ArcFS format) 4850 string Archive\000 RISC OS archive (ArcFS format) 486 487# All these were taken from idarc, many could not be verified. Unfortunately, 488# there were many low-quality sigs, i.e. easy to trigger false positives. 489# Please notify me of any real-world fishy/ambiguous signatures and I'll try 490# to get my hands on the actual archiver and see if I find something better. [JW] 491# probably many can be enhanced by finding some 0-byte or control char near the start 492 493# idarc calls this Crush/Uncompressed... *shrug* 4940 string CRUSH Crush archive data 495# Squeeze It (.sqz) 4960 string HLSQZ Squeeze It archive data 497# SQWEZ 4980 string SQWEZ SQWEZ archive data 499# HPack (.hpk) 5000 string HPAK HPack archive data 501# HAP 5020 string \x91\x33HF HAP archive data 503# MD/MDCD 5040 string MDmd MDCD archive data 505# LIM 5060 string LIM\x1a LIM archive data 507# SAR 5083 string LH5 SAR archive data 509# BSArc/BS2 5100 string \212\3SB\020\0 BSArc/BS2 archive data 511# Bethesda Softworks Archive (Oblivion) 5120 string BSA\0 BSArc archive data 513>4 lelong x version %d 514# MAR 5152 string =-ah MAR archive data 516# ACB 517#0 belong&0x00f800ff 0x00800000 ACB archive data 518# CPZ 519# TODO, this is what idarc says: 0 string \0\0\0 CPZ archive data 520# JRC 5210 string JRchive JRC archive data 522# Quantum 5230 string DS\0 Quantum archive data 524# ReSOF 5250 string PK\3\6 ReSOF archive data 526# QuArk 5270 string 7\4 QuArk archive data 528# YAC 52914 string YC YAC archive data 530# X1 5310 string X1 X1 archive data 5320 string XhDr X1 archive data 533# CDC Codec (.dqt) 5340 belong&0xffffe000 0x76ff2000 CDC Codec archive data 535# AMGC 5360 string \xad6" AMGC archive data 537# NuLIB 5380 string N\xc3\xb5F\xc3\xa9lx\xc3\xa5 NuLIB archive data 539# PakLeo 5400 string LEOLZW PAKLeo archive data 541# ChArc 5420 string SChF ChArc archive data 543# PSA 5440 string PSA PSA archive data 545# CrossePAC 5460 string DSIGDCC CrossePAC archive data 547# Freeze 5480 string \x1f\x9f\x4a\x10\x0a Freeze archive data 549# KBoom 5500 string \xc2\xa8MP\xc2\xa8 KBoom archive data 551# NSQ, must go after CDC Codec 5520 string \x76\xff NSQ archive data 553# DPA 5540 string Dirk\ Paehl DPA archive data 555# BA 556# TODO: idarc says "bytes 0-2 == bytes 3-5" 557# TTComp 558# URL: http://fileformats.archiveteam.org/wiki/TTComp_archive 559# Update: Joerg Jenderek 560# GRR: line below is too general as it matches also Panorama database "TCDB 2003-10 demo.pan", others 5610 string \0\6 562# look for first keyword of Panorama database *.pan 563>12 search/261 DESIGN 564# skip keyword with low entropy 565>12 default x 566# skip DOS 2.0 backup id file, sequence 6 with many nils like BACKUPID_xx6.@@@ handled by ./msdos 567>>8 quad !0 568>>>0 use ttcomp 569# variant ASCII, 4K dictionary (strength=48=50-2). With strength=49 wrong order! WHY? 5700 string \1\6 571# TODO: 572# skip VAX-order 68k Blit mpx/mux executable (strength=50) handled by ./blit 573!:strength -2 574>0 use ttcomp 5750 string \0\5 576# skip some DOS 2.0 backup id file, sequence 5 with many nils like BACKUPID_075.@@@ handled by ./msdos 577>8 quad !0 578>>0 use ttcomp 5790 string \1\5 580# TODO: 581# variant ASCII, 2K dictionary (strength=48=50-2). With strength=49 wrong order! WHY? 582# skip ctab data (strength=50) handled by ./ibm6000 583# skip locale data table (strength=50) handled by ./digital 584!:strength -2 585>0 use ttcomp 5860 string \0\4 587# skip many Maple help database *.hdb with version tag handled by ./maple 588>1028 string !version 589# skip veclib maple.hdb by looking for Mable keyword 590>>4 search/1091 Maple\040 591#>4 search/34090 Maple\040 592>>4 default x 593# skip DOS 2.0-3.2 backed up sequence 4 with many nils like LOTUS5.RAR handled by ./msdos 594# skip xBASE Compound Index file *.CDX with many nils 595>>>0x54 quad !0 596>>>>0 use ttcomp 5970 string \1\4 598# TODO: 599# skip shared library (strength=50) handled by ./ibm6000 600!:strength -2 601# skip Commodore PET BASIC programs (Mastermind.prg) with last 3 nil bytes (\0~end of line followed by 0000h line offset) 602#>-4 ubelong x LAST_BYTES=%8.8x 603>-4 ubelong&0x00FFffFF !0 604>>0 use ttcomp 605# display information of TTComp archive 6060 name ttcomp 607# (version 5.25) labeled the entry as "TTComp archive data" 608>0 ubyte x TTComp archive data 609!:mime application/x-compress-ttcomp 610# PBACKSCR.PI1 611!:ext $xe/$ts/pi1/__d 612# compression type: 0~binary compression 1~ASCII compression 613>0 ubyte 0 \b, binary 614>0 ubyte 1 \b, ASCII 615# size of the dictionary: 4~1024 bytes 5~2048 bytes 6~4096 bytes 616>1 ubyte 4 \b, 1K 617>1 ubyte 5 \b, 2K 618>1 ubyte 6 \b, 4K 619>1 ubyte x dictionary 620# https://mark0.net/forum/index.php?topic=848 621# last 3 bytes probably have only 8 possible bit sequences 622# xxxxxxxx 0000000x 11111111 ____FFh 623# xxxxxxxx 10000000 01111111 __807Fh 624# 0xxxxxxx 11000000 00111111 __C03Fh 625# 00xxxxxx 11100000 00011111 __E01Fh 626# 000xxxxx 11110000 00001111 __F00Fh 627# 0000xxxx 11111000 00000111 __F807h 628# 00000xxx 11111100 00000011 __FC03h 629# 000000xx 11111110 00000001 __FE01h 630# but for quickgif.__d 0A7DD4h 631#>-3 ubyte x \b, last 3 bytes 0x%2.2x 632#>-2 ubeshort x \b%4.4x 633# From: Joerg Jenderek 634# URL: https://en.wikipedia.org/wiki/Disk_Copy 635# reference: http://nulib.com/library/FTN.e00005.htm 6360x52 ubeshort 0x0100 637# test for disk image size equal or above 400k 638>0x40 ubelong >409599 639# test also for disk image size equal or below 1440k to skip 640# windows7en.mbr UNICODE.DAT 641#>>0x40 ubelong <1474561 642# test now for "low" disk image size equal or below 64 MiB to skip 643# windows7en.mbr (B441BBAAh) UNICODE.DAT (0400AF05h) 644>>0x40 ubelong <0x04000001 645# To skip Flags$StringJoiner.class with size 00106A61h test also for valid disk image sizes 646# 00064000 for 400k GCR disks dc42-400k-gcr.trid.xml 647# 000c8000 for 800k GCR disks dc42-800k-gcr.trid.xml 648# 000b4000 for 720k MFM disks dc42-720k-mfm.trid.xml 649# 00168000 for 1440k MFM disks dc42-1440k-mfm.trid.xml 650# https://lisaem.sunder.net/LisaProjectDocs.txt 651# 00500000 05M available 652# 00A00000 10M available 653# 01800000 24M possible 654# 02000000 32M uncertain 655# 04000000 64M uncertain 656>>>0x40 ubelong&0xf8003fFF 0 657# skip samples with invalid disk name length like: 658# 181 (biosmd80.rom) 202 (Flags$StringJoiner.class) 90 (UNICODE.DAT) 659>>>>0x0 ubyte <64 660>>>>>0 use dc42-floppy 661# display information of Apple DiskCopy 4.2 floppy image 6620 name dc42-floppy 663# disk name length; maximal 63 664#>0 ubyte x DISK NAME LENGTH %u 665# ASCII image pascal (maximal 63 bytes) name padded with NULs like: 666# "Microsoft Mail" "Disquette 2" "IIe Installer Disk" 667# "-lisaem.sunder.net hd-" (dc42-lisaem.trid.xml) "-not a Macintosh disk" (dc42-nonmac.trid.xml) 668>00 pstring/B x Apple DiskCopy 4.2 image %s 669#!:mime application/octet-stream 670!:mime application/x-dc42-floppy-image 671!:apple dCpydImg 672# probably also img like: "Utilitaires 2.img" "Installation 7.img" 673!:ext image/dc42/img 674# data size in bytes like: 409600 737280 819200 1474560 675>0x40 ubelong x \b, %u bytes 676# for debugging purpose size in hexadecimal 677#>0x40 ubelong x (%#8.8x) 678# tag size in bytes like: 0 (often) 2580h (PUID fmt/625) 4B00h (Microsoft Mail.image) 679>0x44 ubelong >0 \b, %#x tag size 680# data checksum 681#>0x48 ubelong x \b, %#x checksum 682# tag checksum 683#>0x4c ubelong x \b, %#x tag checksum 684# disk encoding like: 0 1 2 3 (PUID: fmt/625) 685>0x50 ubyte 0 \b, GCR CLV ssdd (400k) 686>0x50 ubyte 1 \b, GCR CLV dsdd (800k) 687>0x50 ubyte 2 \b, MFM CAV dsdd (720k) 688>0x50 ubyte 3 \b, MFM CAV dshd (1440k) 689>0x50 ubyte >3 \b, %#x encoding 690# format byte like: 12h (Lisa 400K) 24h (400K Macintosh) 96h (800K Apple II disk) 691# 2 (Mac 400k "Disquette Installation 13.image") 692# 22h (double-sided MFM or Mac 800k "Disco 12.image" "IIe Installer Disk.image") 693>0x51 ubyte x \b, %#x format 694#>0x54 ubequad x \b, data %#16.16llx 695# ESP, could this conflict with Easy Software Products' (e.g.ESP ghostscript) documentation? 6960 string ESP ESP archive data 697# ZPack 6980 string \1ZPK\1 ZPack archive data 699# Sky 7000 string \xbc\x40 Sky archive data 701# UFA 7020 string UFA UFA archive data 703# Dry 7040 string =-H2O DRY archive data 705# FoxSQZ 7060 string FOXSQZ FoxSQZ archive data 707# AR7 7080 string ,AR7 AR7 archive data 709# PPMZ 7100 string PPMZ PPMZ archive data 711# MS Compress 712# Update: Joerg Jenderek 713# URL: http://fileformats.archiveteam.org/wiki/MS-DOS_installation_compression 714# Reference: https://hwiegman.home.xs4all.nl/fileformats/compress/szdd_kwaj_format.html 715# Note: use correct version of extracting tool like EXPAND, UNPACK, DECOMP or 7Z 7164 string \x88\xf0\x27 717# KWAJ variant 718>0 string KWAJ MS Compress archive data, KWAJ variant 719!:mime application/x-ms-compress-kwaj 720# extension not working in version 5.32 721# magic/Magdir/archive, 284: Warning: EXTENSION type ` ??_' has bad char '?' 722# file: line 284: Bad magic entry ' ??_' 723!:ext ??_ 724# compression method (0-4) 725>>8 uleshort x \b, %u method 726# offset of compressed data 727>>10 uleshort x \b, %#x offset 728#>>(10.s) uleshort x 729#>>>&-6 string x \b, TEST extension %-.3s 730# header flags to mark header extensions 731>>12 uleshort >0 \b, %#x flags 732# 4 bytes: decompressed length of file 733>>12 uleshort &0x01 734>>>14 ulelong x \b, original size: %u bytes 735# 2 bytes: unknown purpose 736# 2 bytes: length of unknown data + mentioned bytes 737# 1-9 bytes: null-terminated file name 738# 1-4 bytes: null-terminated file extension 739>>12 uleshort &0x08 740>>>12 uleshort ^0x01 741>>>>12 uleshort ^0x02 742>>>>>12 uleshort ^0x04 743>>>>>>12 uleshort ^0x10 744>>>>>>>14 string x \b, %-.8s 745>>>>>>12 uleshort &0x10 746>>>>>>>14 string x \b, %-.8s 747>>>>>>>>&1 string x \b.%-.3s 748>>>>>12 uleshort &0x04 749>>>>>>12 uleshort ^0x10 750>>>>>>>(14.s) uleshort x 751>>>>>>>>&14 string x \b, %-.8s 752>>>>>>12 uleshort &0x10 753>>>>>>>(14.s) uleshort x 754>>>>>>>>&14 string x \b, %-.8s 755>>>>>>>>>&1 string x \b.%-.3s 756>>>>12 uleshort &0x02 757>>>>>12 uleshort ^0x04 758>>>>>>12 uleshort ^0x10 759>>>>>>>16 string x \b, %-.8s 760>>>>>>12 uleshort &0x10 761>>>>>>>16 string x \b, %-.8s 762>>>>>>>>&1 string x \b.%-.3s 763>>>>>12 uleshort &0x04 764>>>>>>12 uleshort ^0x10 765>>>>>>>(16.s) uleshort x 766>>>>>>>>&16 string x \b, %-.8s 767>>>>>>12 uleshort &0x10 768>>>>>>>(16.s) uleshort x 769>>>>>>>&16 string x %-.8s 770>>>>>>>>&1 string x \b.%-.3s 771>>>12 uleshort &0x01 772>>>>12 uleshort ^0x02 773>>>>>12 uleshort ^0x04 774>>>>>>12 uleshort ^0x10 775>>>>>>>18 string x \b, %-.8s 776>>>>>>12 uleshort &0x10 777>>>>>>>18 string x \b, %-.8s 778>>>>>>>>&1 string x \b.%-.3s 779>>>>>12 uleshort &0x04 780>>>>>>12 uleshort ^0x10 781>>>>>>>(18.s) uleshort x 782>>>>>>>>&18 string x \b, %-.8s 783>>>>>>12 uleshort &0x10 784>>>>>>>(18.s) uleshort x 785>>>>>>>>&18 string x \b, %-.8s 786>>>>>>>>>&1 string x \b.%-.3s 787>>>>12 uleshort &0x02 788>>>>>12 uleshort ^0x04 789>>>>>>12 uleshort ^0x10 790>>>>>>>20 string x \b, %-.8s 791>>>>>>12 uleshort &0x10 792>>>>>>>20 string x \b, %-.8s 793>>>>>>>>&1 string x \b.%-.3s 794>>>>>12 uleshort &0x04 795>>>>>>12 uleshort ^0x10 796>>>>>>>(20.s) uleshort x 797>>>>>>>>&20 string x \b, %-.8s 798>>>>>>12 uleshort &0x10 799>>>>>>>(20.s) uleshort x 800>>>>>>>>&20 string x \b, %-.8s 801>>>>>>>>>&1 string x \b.%-.3s 802# 2 bytes: length of data + mentioned bytes 803# 804# SZDD variant Haruhiko Okumura's LZSS or 7z type MsLZ 805# URL: http://fileformats.archiveteam.org/wiki/MS-DOS_installation_compression 806# Reference: http://www.cabextract.org.uk/libmspack/doc/szdd_kwaj_format.html 807# http://mark0.net/download/triddefs_xml.7z/defs/s/szdd.trid.xml 808# Note: called "Microsoft SZDD compressed (Haruhiko Okumura's LZSS)" by TrID 809# verfied by 7-Zip `7z l -tMsLZ -slt *.??_` as MsLZ 810# `deark -l -m lzss_oku -d2 setup-1-41.bin` as "LZSS.C by Haruhiko Okumura" 811>0 string SZDD MS Compress archive data, SZDD variant 812# 2nd part of signature 813#>>4 ubelong 0x88F02733 \b, SIGNATURE OK 814!:mime application/x-ms-compress-szdd 815!:ext ??_ 816# The character missing from the end of the filename (0=unknown) 817>>9 string >\0 \b, %-.1s is last character of original name 818# https://www.betaarchive.com/forum/viewtopic.php?t=26161 819# Compression mode: "A" (0x41) found but sometimes "B" in Windows 3.1 builds 026 and 034e 820>>8 string !A \b, %-.1s method 821>>10 ulelong >0 \b, original size: %u bytes 822# Summary: InstallShield archive with SZDD compressed 823# URL: https://community.flexera.com/t5/InstallShield-Knowledge-Base/InstallShield-Redistributable-Files/ta-p/5647 824# From: Joerg Jenderek 8251 search/48/bs SZDD\x88\xF0\x27\x33 InstallShield archive 826#!:mime application/octet-stream 827!:mime application/x-installshield-compress-szdd 828!:ext ibt 829# name of compressed archive member like: setup.dl_ _setup7int.dl_ _setup2k.dl_ _igdi.dl_ cabinet.dl_ 830>0 string x %s 831# name of uncompressed archive member like: setup.dll _Setup.dll IGdi.dll CABINET.DLL 832>>&1 string x (%s) 833# probably version like: 9.0.0.333 9.1.0.429 11.50.0.42618 834>>>&1 string x \b, version %s 835# SZDD member length like: 168048 169333 181842 836>>>>&1 string x \b, %s bytes 837# MS Compress archive data 838#>&0 string SZDD \b, SIGNATURE FOUND 839>&0 indirect x 840# QBasic SZDD variant 8413 string \x88\xf0\x27 842>0 string SZ\x20 MS Compress archive data, QBasic variant 843!:mime application/x-ms-compress-sz 844!:ext ??$ 845>>8 ulelong >0 \b, original size: %u bytes 846 847# Summary: lzss compressed/EDI Pack 848# From: Joerg Jenderek 849# URL: http://fileformats.archiveteam.org/wiki/EDI_Install_packed_file 850# Note: called "EDI Install LZS compressed data" by TrID and verified by 851# command like `deark -l -m edi_pack -d2 BOOK01A.IC$` as "EDI Pack LZSS1" 8520 string EDILZSS 853>7 string 1 854# look for point character before orginal file name extension 855>>8 search/9/b . 856# check suffix of possible orginal file anme 857#>>>&0 ubelong x SUFFIX=%8.8x 858# samples without valid character after point in original file name field like: FENNEL.LZS PLANTAIN.LZS 859>>>&0 ubyte <0x20 860>>>>0 use edi-lzs 861# samples with valid character after point in original file name field 862>>>&0 ubyte >0x1F 863# check 2nd charcter of suffix 864#>>>>&0 ubyte x 2ND_SUFFIX=%x 865# sample with one valid character after point followed by \0 in original file name field like: SPELMATE.H$ 866>>>>&0 ubyte =0 867>>>>>0 use edi-pack 868>>>>&0 ubyte >0x1F 869# check 3rd charcter of suffix 870#>>>>>&0 ubyte x 3RD_SUFFIX=%x 871# no sample with 2 valid characters after point followed by \0 in original file name field 872>>>>>&0 ubyte =0 873>>>>>>0 use edi-pack 874# samples with valid 3rd character after point in original file name field 875>>>>>&0 ubyte >0x1F 876# sample with 3 valid character after point followed by \0 in original file name field like: BOOK01A.IC$ CTL3D.DL$ 877>>>>>>&0 ubyte =0 878>>>>>>>0 use edi-pack 879# sample with 3 valid character after point followed by no \0 in original file name field like: HERBTEXT.LZS 880>>>>>>&0 ubyte !0 881>>>>>>>0 use edi-lzs 882# no sample with invalid 3rd character after point in original file name field 883>>>>>&0 default x 884>>>>>>0 use edi-lzs 885# sample with invalid 2nd character after point in original file name field like: LACERATE.LZS SPLINTER.LZS 886>>>>&0 default x 887>>>>>0 use edi-lzs 888# sample without point character in original file name field like GUNSHOT.LZS 889>>8 default x 890>>>0 use edi-lzs 891# Reference: http://mark0.net/download/triddefs_xml.7z/defs/e/edi-lzss2.trid.xml 892# Note: called "EDI Install Pro LZSS2 compressed data" by TrID and verified by 893# command like `deark -l -m edi_pack -d2 4WAY.WA$` as "EDI Pack LZSS2" 894>7 string 2 EDI LZSS2 packed 895#!:mime application/octet-stream 896!:mime application/x-edi-pack-lzss 897# the name of a compressed file often ends in character '$' or '_' 898!:ext ??$/??_ 899# original filename, NUL-terminated, padded to 13 bytes like: mci.vbx 4way.wav skymap.exe cmdialog.vbx 900>>8 string x "%-0.13s" 901# original file size, as a 4-byte integer. 902>>21 ulelong x \b, %u bytes 903# compressed data like: ff5249464606ec00 ff4d5aa601010000 904>>>25 ubequad x \b, data %#16.16llx... 9050 name edi-pack 906# Note: verified by command like `deark -l -d2 SPELMATE.H$` as "EDI Pack LZSS1" 907# original filename, NUL-terminated, padded to 13 bytes like: ctl3d.dll spelmate.h filemenu.rc owl.def index-it.exe 908# but not like \377Aloe.lzs\273 (HERBTEXT.LZS) 909>8 string x EDI LZSS packed "%-.13s" 910#!:mime application/octet-stream 911!:mime application/x-edi-pack-lzss 912# the name of a compressed file often ends in character '$' or '_' 913!:ext ??$/?$ 914# compressed data like: f7000001eff02020 ff4d5aa900020000 ff2f2a207370656c 915>21 ubequad x \b, data %#16.16llx... 916# URL: http://fileformats.archiveteam.org/wiki/EDI_LZSSLib 917# Note: verified partly by command like `deark -l -m edi_pack -d2 GUNSHOT.LZS` as "EDI LZSSLib" 9180 name edi-lzs 919# Note: verified by command like `deark -l -d2 GUNSHOT.LZS` as "EDI LZSSLib" 920# no original filename looks like: \277BM\226.\0 \277BM.n\001 \277BM\226.\0 \277BM.g\001 \377Aloe.lzs\273 921>8 string x EDI LZSSLib packed 922#!:mime application/octet-stream 923!:mime application/x-edi-pack-lzss 924# The name of a compressed file ends with LZS suffix 925!:ext lzs 926# compressed data like: bf424df6e10100f3 ff416c6f652e6c7a ff416c6f652e6c7a 927>8 ubequad x \b, data %#16.16llx... 928 929# Summary: CAZIP compressed file 930# From: Joerg Jenderek 931# URL: http://fileformats.archiveteam.org/wiki/CAZIP 932# Reference: http://mark0.net/download/triddefs_xml.7z/defs/c/caz.trid.xml 933# Note: Format is distinct from CAZIPXP compressed 9340 string \x0D\x0A\x1ACAZIP CAZIP compressed file 935#!:mime application/octet-stream 936!:mime application/x-compress-cazip 937# like: BLINKER.WR_ CLIPDEFS._ CAOSETUP.EX_ CLIPPER.EX_ FILEIO.C_ 938!:ext ??_/?_/_ 939 940# Summary: FTCOMP compressed archive 941# From: Joerg Jenderek 942# URL: http://fileformats.archiveteam.org/wiki/FTCOMP 943# Reference: http://mark0.net/download/triddefs_xml.7z/defs/a/ark-ftcomp.trid.xml 944# Note: called by TrID "FTCOMP compressed archive" 945# extracted by `unpack seahelp.hl_` 94624 string/b FTCOMP FTCOMP compressed archive 947#!:mime application/octet-stream 948!:mime application/x-compress-ftcomp 949!:ext ??_/??@/dll/drv/pk2/ 950# probably A596FDFF magic at the beginning 951>0 ubelong !0xA596FDFF \b, at beginning %#x 952# probably original file name with directory like: \OS2\unpack.exe \SYSTEM\8514.DRV MAHJONGG.EXE 953>41 string x "%s" 954 955# MP3 (archiver, not lossy audio compression) 9560 string MP3\x1a MP3-Archiver archive data 957# ZET 9580 string OZ\xc3\x9d ZET archive data 959# TSComp 9600 string \x65\x5d\x13\x8c\x08\x01\x03\x00 TSComp archive data 961# ARQ 9620 string gW\4\1 ARQ archive data 963# Squash 9643 string OctSqu Squash archive data 965# Terse 9660 string \5\1\1\0 Terse archive data 967# UHarc 9680 string UHA UHarc archive data 969# ABComp 9700 string \2AB ABComp archive data 9710 string \3AB2 ABComp archive data 972# CMP 9730 string CO\0 CMP archive data 974# Splint 9750 string \x93\xb9\x06 Splint archive data 976# InstallShield 9770 string \x13\x5d\x65\x8c InstallShield Z archive Data 978# Gather 9791 string GTH Gather archive data 980# BOA 9810 string BOA BOA archive data 982# RAX 9830 string ULEB\xa RAX archive data 984# Xtreme 9850 string ULEB\0 Xtreme archive data 986# Pack Magic 9870 string @\xc3\xa2\1\0 Pack Magic archive data 988# BTS 9890 belong&0xfeffffff 0x1a034465 BTS archive data 990# ELI 5750 9910 string Ora\ ELI 5750 archive data 992# QFC 9930 string \x1aFC\x1a QFC archive data 9940 string \x1aQF\x1a QFC archive data 995# PRO-PACK https://www.segaretro.org/Rob_Northen_compression 9960 string RNC 997>3 byte 1 PRO-PACK archive data (compression 1) 998>3 byte 2 PRO-PACK archive data (compression 2) 999# 777 10000 string 777 777 archive data 1001# LZS221 10020 string sTaC LZS221 archive data 1003# HPA 10040 string HPA HPA archive data 1005# Arhangel 10060 string LG Arhangel archive data 1007# EXP1, uses bzip2 10080 string 0123456789012345BZh EXP1 archive data 1009# IMP 10100 string IMP\xa IMP archive data 1011# NRV 10120 string \x00\x9E\x6E\x72\x76\xFF NRV archive data 1013# Squish 10140 string \x73\xb2\x90\xf4 Squish archive data 1015# Par 10160 string PHILIPP Par archive data 10170 string PAR Par archive data 1018# HIT 10190 string UB HIT archive data 1020# SBX 10210 belong&0xfffff000 0x53423000 SBX archive data 1022# NaShrink 10230 string NSK NaShrink archive data 1024# SAPCAR 10250 string #\ CAR\ archive\ header SAPCAR archive data 10260 string CAR\ 2.00 SAPCAR archive data 10270 string CAR\ 2.01 SAPCAR archive data 1028#!:mime application/octet-stream 1029!:mime application/vnd.sar 1030!:ext sar 1031# Disintegrator 10320 string DST Disintegrator archive data 1033# ASD 10340 string ASD ASD archive data 1035# InstallShield CAB 1036# Update: Joerg Jenderek at Nov 2021 1037# URL: https://en.wikipedia.org/wiki/InstallShield 1038# Reference: https://github.com/twogood/unshield/blob/master/lib/cabfile.h 1039# Note: Not compatible with Microsoft CAB files 1040# http://mark0.net/download/triddefs_xml.7z/defs/a/ark-cab-ishield.trid.xml 1041# CAB_SIGNATURE 0x28635349 10420 string ISc( InstallShield 1043#!:mime application/octet-stream 1044!:mime application/x-installshield 1045# http://mark0.net/download/triddefs_xml.7z/defs/a/ark-cab-ishield-hdr.trid.xml 1046>16 ulelong !0 setup header 1047# like: _SYS1.HDR _USER1.HDR data1.hdr 1048!:ext hdr 1049>16 ulelong =0 CAB 1050# like: _SYS1.CAB _USER1.CAB DATA1.CAB data2.cab 1051!:ext cab 1052# https://github.com/twogood/unshield/blob/master/lib/helper.c 1053# version like: 0x1005201 0x100600c 0x1007000 0x1009500 1054# 0x2000578 0x20005dc 0x2000640 0x40007d0 0x4000834 1055>4 ulelong x \b, version %#x 1056# volume_info like: 0 1057>8 ulelong !0 \b, volume_info %#x 1058# cab_descriptor_offset like: 0x200 1059>12 ulelong !0x200 \b, offset %#x 1060#>0x200 ubequad x \b, at 0x200 %#16.16llx 1061# cab_descriptor_size like: 0 (*.cab) BD5 C8B DA5 E2A E36 116C 251D 4DA9 56F0 5CC2 6E4B 777D 779E 1F7C2 1062>16 ulelong !0 \b, descriptor size %#x 1063# TOP4 10640 string T4\x1a TOP4 archive data 1065# BatComp left out: sig looks like COM executable 1066# so TODO: get real 4dos batcomp file and find sig 1067# BlakHole 10680 string BH\5\7 BlakHole archive data 1069# BIX 10700 string BIX0 BIX archive data 1071# ChiefLZA 10720 string ChfLZ ChiefLZA archive data 1073# Blink 10740 string Blink Blink archive data 1075# Logitech Compress 10760 string \xda\xfa Logitech Compress archive data 1077# ARS-Sfx (FIXME: really a SFX? then goto COM/EXE) 10781 string (C)\ STEPANYUK ARS-Sfx archive data 1079# AKT/AKT32 10800 string AKT32 AKT32 archive data 10810 string AKT AKT archive data 1082# NPack 10830 string MSTSM NPack archive data 1084# PFT 10850 string \0\x50\0\x14 PFT archive data 1086# SemOne 10870 string SEM SemOne archive data 1088# PPMD 10890 string \x8f\xaf\xac\x84 PPMD archive data 1090# FIZ 10910 string FIZ FIZ archive data 1092# MSXiE 10930 belong&0xfffff0f0 0x4d530000 MSXiE archive data 1094# DeepFreezer 10950 belong&0xfffffff0 0x797a3030 DeepFreezer archive data 1096# DC 10970 string =<DC- DC archive data 1098# TPac 10990 string \4TPAC\3 TPac archive data 1100# Ai 1101# Update: Joerg Jenderek 1102# URL: http://fileformats.archiveteam.org/wiki/Ai_Archiver 11030 string Ai\1\1\0 Ai archive data 1104#!:mime application/octet-stream 1105!:mime application/x-compress-ai 1106!:ext ai 11070 string Ai\1\0\0 Ai archive data 1108#!:mime application/octet-stream 1109!:mime application/x-compress-ai 1110!:ext ai 1111# Ai32 1112# Reference: http://mark0.net/download/triddefs_xml.7z/defs/a/ark-ai.trid.xml 1113# Note: called "Ai Archivator compressed archive" by TrID 11140 string Ai\2\0 Ai32 archive data 1115#!:mime application/octet-stream 1116!:mime application/x-compress-ai 1117!:ext ai 1118# original file name 1119>8 pstring/h x "%s" 1120# according to TrID the next 3 bytes are nil 1121>5 ubyte !0 \b, at 5 %#x 1122>6 ubyte !0 \b, at 6 %#x 1123>7 ubyte !0 \b, at 7 %#x 1124# the fourth byte with value 0 is probably a flag for "non solid" mode 1125#>3 ubyte =0x00 \b, unsolid mode 11260 string Ai\2\1 Ai32 archive data 1127#!:mime application/octet-stream 1128!:mime application/x-compress-ai 1129!:ext ai 1130# original file name 1131>8 pstring/h x "%s" 1132# the fourth byte with value 0x01 is probably a flag for "solid" mode; this is not the default 1133>3 ubyte =0x01 \b, solid mode 1134# SBC 11350 string SBC SBC archive data 1136# Ybs 11370 string YBS Ybs archive data 1138# DitPack 11390 string \x9e\0\0 DitPack archive data 1140# DMS 11410 string DMS! DMS archive data 1142# EPC 11430 string \x8f\xaf\xac\x8c EPC archive data 1144# VSARC 11450 string VS\x1a VSARC archive data 1146# PDZ 11470 string PDZ PDZ archive data 1148# ReDuq 11490 string rdqx ReDuq archive data 1150# GCA 11510 string GCAX GCA archive data 1152# PPMN 11530 string pN PPMN archive data 1154# WinImage 11553 string WINIMAGE WinImage archive data 1156# Compressia 11570 string CMP0CMP Compressia archive data 1158# UHBC 11590 string UHB UHBC archive data 1160# WinHKI 11610 string \x61\x5C\x04\x05 WinHKI archive data 1162# WWPack data file 11630 string WWP WWPack archive data 1164# BSN (BSA, PTS-DOS) 11650 string \xffBSG BSN archive data 11661 string \xffBSG BSN archive data 11673 string \xffBSG BSN archive data 11681 string \0\xae\2 BSN archive data 11691 string \0\xae\3 BSN archive data 11701 string \0\xae\7 BSN archive data 1171# AIN 11720 string \x33\x18 AIN archive data 11730 string \x33\x17 AIN archive data 1174# XPA32 test moved and merged with XPA by Joerg Jenderek at Sep 2015 1175# SZip (TODO: doesn't catch all versions) 11760 string SZ\x0a\4 SZip archive data 1177# XPack DiskImage 1178# *.XDI updated by Joerg Jenderek Sep 2015 1179# ftp://ftp.sac.sk/pub/sac/pack/0index.txt 1180# GRR: this test is still too general as it catches also text files starting with jm 11810 string jm 1182# only found examples with this additional characteristic 2 bytes 1183>2 string \x2\x4 Xpack DiskImage archive data 1184#!:ext xdi 1185# XPack Data 1186# *.xpa updated by Joerg Jenderek Sep 2015 1187# ftp://ftp.elf.stuba.sk/pub/pc/pack/ 11880 string xpa XPA 1189!:ext xpa 1190# XPA32 1191# ftp://ftp.elf.stuba.sk/pub/pc/pack/xpa32.zip 1192# created by XPA32.EXE version 1.0.2 for Windows 1193>0 string xpa\0\1 \b32 archive data 1194# created by XPACK.COM version 1.67m or 1.67r with short 0x1800 1195>3 ubeshort !0x0001 \bck archive data 1196# XPack Single Data 1197# changed by Joerg Jenderek Sep 2015 back to like in version 5.12 1198# letter 'I'+ acute accent is equivalent to \xcd 11990 string \xcd\ jm Xpack single archive data 1200#!:mime application/x-xpa-compressed 1201!:ext xpa 1202 1203# TODO: missing due to unknown magic/magic at end of file: 1204#DWC 1205#ARG 1206#ZAR 1207#PC/3270 1208#InstallIt 1209#RKive 1210#RK 1211#XPack Diskimage 1212 1213# These were inspired by idarc, but actually verified 1214# Dzip archiver (.dz) 1215# Update: Joerg Jenderek 1216# URL: http://speeddemosarchive.com/dzip/ 1217# reference: http://speeddemosarchive.com/dzip/dz29src.zip/main.c 1218# GRR: line below is too general as it matches also ASCII texts like Doszip commander help dz.txt 12190 string DZ 1220# latest version is 2.9 dated 7 may 2003 1221>2 byte <4 Dzip archive data 1222!:mime application/x-dzip 1223!:ext dz 1224>>2 byte x \b, version %i 1225>>3 byte x \b.%i 1226>>4 ulelong x \b, offset %#x 1227>>8 ulelong x \b, %u files 1228# ZZip archiver (.zz) 12290 string ZZ\ \0\0 ZZip archive data 12300 string ZZ0 ZZip archive data 1231# PAQ archiver (.paq) 12320 string \xaa\x40\x5f\x77\x1f\xe5\x82\x0d PAQ archive data 12330 string PAQ PAQ archive data 1234>3 byte&0xf0 0x30 1235>>3 byte x (v%c) 1236# JAR archiver (.j), this is the successor to ARJ, not Java's JAR (which is essentially ZIP) 1237# Update: Joerg Jenderek 1238# URL: http://fileformats.archiveteam.org/wiki/JAR_(ARJ_Software) 1239# reference: http://mark0.net/download/triddefs_xml.7z/defs/a/ark-jar.trid.xml 1240# https://www.sac.sk/download/pack/jar102x.exe/TECHNOTE.DOC 1241# Note: called "JAR compressed archive" by TrID 12420xe string \x1aJar\x1b JAR (ARJ Software, Inc.) archive data 1243#!:mime application/octet-stream 1244!:mime application/x-compress-j 1245>0 ulelong x \b, CRC32 %#x 1246# standard suffix is ".j"; for multi volumes following order j01 j02 ... j99 100 ... 990 1247!:ext j/j01/j02 1248# URL: http://fileformats.archiveteam.org/wiki/JARCS 1249# reference: http://mark0.net/download/triddefs_xml.7z/defs/a/ark-jarcs.trid.xml 1250# Note: called "JARCS compressed archive" by TrID 12510 string JARCS JAR (ARJ Software, Inc.) archive data 1252#!:mime application/octet-stream 1253!:mime application/x-compress-jar 1254!:ext jar 1255 1256# ARJ archiver (jason@jarthur.Claremont.EDU) 1257# URL: http://fileformats.archiveteam.org/wiki/ARJ 1258# reference: http://mark0.net/download/triddefs_xml.7z/defs/a/ark-arj.trid.xml 1259# https://github.com/FarGroup/FarManager/ 1260# blob/master/plugins/multiarc/arc.doc/arj.txt 1261# Note: called "ARJ compressed archive" by TrID and 1262# "ARJ File Format" by DROID via PUID fmt/610 1263# verified by `7z l -tarj PHRACK1.ARJ` and 1264# `arj.exe l TEST-hk9.ARJ` 12650 leshort 0xea60 1266# skip DROID fmt-610-signature-id-946.arj by check for valid file type of main header 1267>0xA ubyte 2 1268>>0 use arj-archive 12690 name arj-archive 1270>0 leshort x ARJ archive 1271!:mime application/x-arj 1272# look for terminating 0-character of filename 1273>0x26 search/1024 \0 1274# file name extension is normally .arj but not for parts of multi volume 1275#>>&-5 string x extension %.4s 1276>>&-5 string/c .arj data 1277!:ext arj 1278>>&-5 default x 1279# for multi volume first name is archive.arj then following parts archive.a01 archive.a02 ... 1280>>>8 byte &0x04 data 1281!:ext a01/a02 1282# for SFX first name is archive.exe then following parts archive.e01 archive.e02 ... 1283>>>8 byte ^0x04 data, SFX multi-volume 1284!:ext e01/e02 1285# basic header size like: 0x002b 0x002c 0x04e0 0x04e3 0x04e7 1286#>2 uleshort x basic header size %#4.4x 1287# next fragment content like: 0x0a200a003a8fc713 0x524a000010bb3471 0x524a0000c73c70f9 1288#>(2.s) ubequad x NEXT FRAGMENT CONTENT %#16.16llx 1289# first_hdr_size; seems to be same as basic header size 1290#>2 uleshort x 1st header size %#x 1291# archiver version number like: 3 4 6 11 102 1292>5 byte x \b, v%d 1293# minimum archiver version to extract like: 1 1294>6 ubyte !1 \b, minimum %u to extract 1295# FOR DEBUGGING 1296#>8 byte x \b, FLAGS %#x 1297# GARBLED_FLAG1; garble with password; g switch 1298>8 byte &0x01 \b, password-protected 1299# encryption version: 0~old 1~old 2~new 3~reserved 4~40 bit key GOST 1300>>0x20 ubyte x (v%u) 1301#>8 byte &0x02 \b, secured 1302# ANSIPAGE_FLAG; indicates ANSI codepage used by ARJ32; hy switch 1303>8 byte &0x02 \b, ANSI codepage 1304# VOLUME_FLAG indicates presence of succeeding volume; but apparently not for SFX 1305>8 byte &0x04 \b, multi-volume 1306#>8 byte &0x08 \b, file-offset 1307# ARJPROT_FLAG; build with data protection record; hk switch 1308>8 byte &0x08 \b, recoverable 1309# arj protection factor; maximal 10; switch hky -> factor=y+1 1310>>0x22 byte x (factor %u) 1311>8 byte &0x10 \b, slash-switched 1312# BACKUP_FLAG; obsolete 1313>8 byte &0x20 \b, backup 1314# SECURED_FLAG; 1315>8 byte &0x40 \b, secured, 1316# ALTNAME_FLAG; indicates dual-name archive 1317>8 byte &0x80 \b, dual-name 1318# security version; 0~old 2~current 1319>9 ubyte !0 1320>>9 ubyte !2 \b, security version %u 1321# file type; 2 in main header; 0~binary 1~7-bitText 2~comment 3~directory 4~VolumeLabel 5=ChapterLabel 1322>0xA ubyte !2 \b, file type %u 1323# date+time when original archive was created in MS-DOS format via ./msdos 1324>0xC ulelong x \b, created 1325>0xC use dos-date 1326# or date and time by new internal function 1327#>0xE lemsdosdate x %s 1328#>0xC lemsdostime x %s 1329# FOR DEBUGGING 1330#>0x12 uleshort x RAW DATE %#4.4x 1331#>0x10 uleshort x RAW TIME %#4.4x 1332# date+time when archive was last modified; sometimes nil or 1333# maybe wrong like in HP4DRVR.ARJ 1334#>0x10 ulelong >0 \b, modified 1335#>>0x10 use dos-date 1336# or date and time by new internal function 1337#>>0x12 lemsdosdate x %s 1338#>>0x10 lemsdostime x %s 1339# archive size (currently used only for secured archives); MAYBE? 1340#>0x14 ulelong !0 \b, file size %u 1341# security envelope file position; MAYBE? 1342#>0x18 ulelong !0 \b, at %#x security envelope 1343# filespec position in filename; WHAT IS THAT? 1344#>0x1C uleshort >0 \b, filespec position %#x 1345# length in bytes of security envelope data like: 2CAh 301h 364h 471h 1346>0x1E uleshort !0 \b, security envelope length %#x 1347# last chapter like: 0 1 1348>0x21 ubyte !0 \b, last chapter %u 1349# filename (null-terminated string); sometimes at 0x26 when 4 bytes for extra data 1350>34 byte x \b, original name: 1351# with extras data 1352>34 byte <0x0B 1353>>38 string x %s 1354# without extras data 1355>34 byte >0x0A 1356>>34 string x %s 1357# host OS: 0~MSDOS ... 11~WIN32 1358>7 byte 0 \b, os: MS-DOS 1359>7 byte 1 \b, os: PRIMOS 1360>7 byte 2 \b, os: Unix 1361>7 byte 3 \b, os: Amiga 1362>7 byte 4 \b, os: Macintosh 1363>7 byte 5 \b, os: OS/2 1364>7 byte 6 \b, os: Apple ][ GS 1365>7 byte 7 \b, os: Atari ST 1366>7 byte 8 \b, os: NeXT 1367>7 byte 9 \b, os: VAX/VMS 1368>7 byte 10 \b, os: WIN95 1369>7 byte 11 \b, os: WIN32 1370# [JW] idarc says this is also possible 13712 leshort 0xea60 ARJ archive data 1372#2 leshort 0xea60 1373#>2 use arj-archive 1374 1375# HA archiver (Greg Roelofs, newt@uchicago.edu) 1376# This is a really bad format. A file containing HAWAII will match this... 1377#0 string HA HA archive data, 1378#>2 leshort =1 1 file, 1379#>2 leshort >1 %hu files, 1380#>4 byte&0x0f =0 first is type CPY 1381#>4 byte&0x0f =1 first is type ASC 1382#>4 byte&0x0f =2 first is type HSC 1383#>4 byte&0x0f =0x0e first is type DIR 1384#>4 byte&0x0f =0x0f first is type SPECIAL 1385# suggestion: at least identify small archives (<1024 files) 13860 belong&0xffff00fc 0x48410000 HA archive data 1387>2 leshort =1 1 file, 1388>2 leshort >1 %u files, 1389>4 byte&0x0f =0 first is type CPY 1390>4 byte&0x0f =1 first is type ASC 1391>4 byte&0x0f =2 first is type HSC 1392>4 byte&0x0f =0x0e first is type DIR 1393>4 byte&0x0f =0x0f first is type SPECIAL 1394 1395# HPACK archiver (Peter Gutmann, pgut1@cs.aukuni.ac.nz) 13960 string HPAK HPACK archive data 1397 1398# JAM Archive volume format, by Dmitry.Kohmanyuk@UA.net 13990 string \351,\001JAM\ JAM archive, 1400>7 string >\0 version %.4s 1401>0x26 byte =0x27 - 1402>>0x2b string >\0 label %.11s, 1403>>0x27 lelong x serial %08x, 1404>>0x36 string >\0 fstype %.8s 1405 1406# LHARC/LHA archiver (Greg Roelofs, newt@uchicago.edu) 1407# Update: Joerg Jenderek 1408# URL: https://en.wikipedia.org/wiki/LHA_(file_format) 1409# Reference: https://web.archive.org/web/20021005080911/http://www.osirusoft.com/joejared/lzhformat.html 1410# 1411# check and display information of lharc (LHa,PMarc) file 14120 name lharc-file 1413# check 1st character of method id like -lz4- -lh5- or -pm2- 1414>2 string - 1415# check 5th character of method id 1416>>6 string - 1417# check header level 0 1 2 3 1418>>>20 ubyte <4 1419# check 2nd, 3th and 4th character of method id 1420>>>>3 regex \^(lh[0-9a-ex]|lz[s2-8]|pm[012]|pc1) \b 1421!:mime application/x-lzh-compressed 1422# creator type "LHA " 1423!:apple ????LHA 1424# display archive type name like "LHa/LZS archive data" or "LArc archive" 1425>>>>>2 string -lz \b 1426!:ext lzs 1427# already known -lzs- -lz4- -lz5- with old names 1428>>>>>>2 string -lzs LHa/LZS archive data 1429>>>>>>3 regex \^lz[45] LHarc 1.x archive data 1430# missing -lz?- with wikipedia names 1431>>>>>>3 regex \^lz[2378] LArc archive 1432# display archive type name like "LHa (2.x) archive data" 1433>>>>>2 string -lh \b 1434# already known -lh0- -lh1- -lh2- -lh3- -lh4- -lh5- -lh6- -lh7- -lhd- variants with old names 1435>>>>>>3 regex \^lh[01] LHarc 1.x/ARX archive data 1436# LHice archiver use ".ICE" as name extension instead usual one ".lzh" 1437# FOOBAR archiver use ".foo" as name extension instead usual one 1438# "Florian Orjanov's and Olga Bachetska's ARchiver" not found at the moment 1439>>>>>>>2 string -lh1 \b 1440!:ext lha/lzh/ice 1441>>>>>>3 regex \^lh[23d] LHa 2.x? archive data 1442>>>>>>3 regex \^lh[7] LHa (2.x)/LHark archive data 1443>>>>>>3 regex \^lh[456] LHa (2.x) archive data 1444>>>>>>>2 string -lh5 \b 1445# https://en.wikipedia.org/wiki/BIOS 1446# Some mainboard BIOS like Award use LHa compression. So archives with unusual extension are found like 1447# bios.rom , kd7_v14.bin, 1010.004, ... 1448!:ext lha/lzh/rom/bin 1449# missing -lh?- variants (Joe Jared) 1450>>>>>>3 regex \^lh[89a-ce] LHa (Joe Jared) archive 1451# UNLHA32 2.67a 1452>>>>>>2 string -lhx LHa (UNLHA32) archive 1453# lha archives with standard file name extensions ".lha" ".lzh" 1454>>>>>>3 regex !\^(lh1|lh5) \b 1455!:ext lha/lzh 1456# this should not happen if all -lh variants are described 1457>>>>>>2 default x LHa (unknown) archive 1458#!:ext lha 1459# PMarc 1460>>>>>3 regex \^pm[012] PMarc archive data 1461!:ext pma 1462# append method id without leading and trailing minus character 1463>>>>>3 string x [%3.3s] 1464>>>>>>0 use lharc-header 1465# 1466# check and display information of lharc header 14670 name lharc-header 1468# header size 0x4 , 0x1b-0x61 1469>0 ubyte x 1470# compressed data size != compressed file size 1471#>7 ulelong x \b, data size %d 1472# attribute: 0x2~?? 0x10~symlink|target 0x20~normal 1473#>19 ubyte x \b, 19_%#x 1474# level identifier 0 1 2 3 1475#>20 ubyte x \b, level %d 1476# time stamp 1477#>15 ubelong x DATE %#8.8x 1478# OS ID for level 1 1479>20 ubyte 1 1480# 0x20 types find for *.rom files 1481>>(21.b+24) ubyte <0x21 \b, %#x OS 1482# ascii type like M for MSDOS 1483>>(21.b+24) ubyte >0x20 \b, '%c' OS 1484# OS ID for level 2 1485>20 ubyte 2 1486#>>23 ubyte x \b, OS ID %#x 1487>>23 ubyte <0x21 \b, %#x OS 1488>>23 ubyte >0x20 \b, '%c' OS 1489# filename only for level 0 and 1 1490>20 ubyte <2 1491# length of filename 1492>>21 ubyte >0 \b, with 1493# filename 1494>>>21 pstring x "%s" 1495# 1496#2 string -lh0- LHarc 1.x/ARX archive data [lh0] 1497#!:mime application/x-lharc 14982 string -lh0- 1499>0 use lharc-file 1500#2 string -lh1- LHarc 1.x/ARX archive data [lh1] 1501#!:mime application/x-lharc 15022 string -lh1- 1503>0 use lharc-file 1504# NEW -lz2- ... -lz8- 15052 string -lz2- 1506>0 use lharc-file 15072 string -lz3- 1508>0 use lharc-file 15092 string -lz4- 1510>0 use lharc-file 15112 string -lz5- 1512>0 use lharc-file 15132 string -lz7- 1514>0 use lharc-file 15152 string -lz8- 1516>0 use lharc-file 1517# [never seen any but the last; -lh4- reported in comp.compression:] 1518#2 string -lzs- LHa/LZS archive data [lzs] 15192 string -lzs- 1520>0 use lharc-file 1521# According to wikipedia and others such a version does not exist 1522#2 string -lh\40- LHa 2.x? archive data [lh ] 1523#2 string -lhd- LHa 2.x? archive data [lhd] 15242 string -lhd- 1525>0 use lharc-file 1526#2 string -lh2- LHa 2.x? archive data [lh2] 15272 string -lh2- 1528>0 use lharc-file 1529#2 string -lh3- LHa 2.x? archive data [lh3] 15302 string -lh3- 1531>0 use lharc-file 1532#2 string -lh4- LHa (2.x) archive data [lh4] 15332 string -lh4- 1534>0 use lharc-file 1535#2 string -lh5- LHa (2.x) archive data [lh5] 15362 string -lh5- 1537>0 use lharc-file 1538#2 string -lh6- LHa (2.x) archive data [lh6] 15392 string -lh6- 1540>0 use lharc-file 1541#2 string -lh7- LHa (2.x)/LHark archive data [lh7] 15422 string -lh7- 1543# !:mime application/x-lha 1544# >20 byte x - header level %d 1545>0 use lharc-file 1546# NEW -lh8- ... -lhe- , -lhx- 15472 string -lh8- 1548>0 use lharc-file 15492 string -lh9- 1550>0 use lharc-file 15512 string -lha- 1552>0 use lharc-file 15532 string -lhb- 1554>0 use lharc-file 15552 string -lhc- 1556>0 use lharc-file 15572 string -lhe- 1558>0 use lharc-file 15592 string -lhx- 1560>0 use lharc-file 1561# taken from idarc [JW] 15622 string -lZ PUT archive data 1563# already done by LHarc magics 1564# this should never happen if all sub types of LZS archive are identified 1565#2 string -lz LZS archive data 15662 string -sw1- Swag archive data 1567 15680 name rar-file-header 1569>24 byte 15 \b, v1.5 1570>24 byte 20 \b, v2.0 1571>24 byte 29 \b, v4 1572>15 byte 0 \b, os: MS-DOS 1573>15 byte 1 \b, os: OS/2 1574>15 byte 2 \b, os: Win32 1575>15 byte 3 \b, os: Unix 1576>15 byte 4 \b, os: Mac OS 1577>15 byte 5 \b, os: BeOS 1578 15790 name rar-archive-header 1580>3 leshort&0x1ff >0 \b, flags: 1581>>3 leshort &0x01 ArchiveVolume 1582>>3 leshort &0x02 Commented 1583>>3 leshort &0x04 Locked 1584>>3 leshort &0x10 NewVolumeNaming 1585>>3 leshort &0x08 Solid 1586>>3 leshort &0x20 Authenticated 1587>>3 leshort &0x40 RecoveryRecordPresent 1588>>3 leshort &0x80 EncryptedBlockHeader 1589>>3 leshort &0x100 FirstVolume 1590 1591# RAR (Roshal Archive) archive 15920 string Rar!\x1a\7\0 RAR archive data 1593!:mime application/x-rar 1594!:ext rar/cbr 1595# file header 1596>(0xc.l+9) byte 0x74 1597>>(0xc.l+7) use rar-file-header 1598# subblock seems to share information with file header 1599>(0xc.l+9) byte 0x7a 1600>>(0xc.l+7) use rar-file-header 1601>9 byte 0x73 1602>>7 use rar-archive-header 1603 16040 string Rar!\x1a\7\1\0 RAR archive data, v5 1605!:mime application/x-rar 1606!:ext rar 1607 1608# Very old RAR archive 1609# https://jasonblanks.com/wp-includes/images/papers/KnowyourarchiveRAR.pdf 16100 string RE\x7e\x5e RAR archive data (<v1.5) 1611!:mime application/x-rar 1612!:ext rar/cbr 1613 1614# SQUISH archiver (Greg Roelofs, newt@uchicago.edu) 16150 string SQSH squished archive data (Acorn RISCOS) 1616 1617# UC2 archiver (Greg Roelofs, newt@uchicago.edu) 1618# [JW] see exe section for self-extracting version 16190 string UC2\x1a UC2 archive data 1620 1621# PKZIP multi-volume archive 16220 string PK\x07\x08PK\x03\x04 Zip multi-volume archive data, at least PKZIP v2.50 to extract 1623!:mime application/zip 1624!:ext zip/cbz 1625 1626# Android APK file (Zip archive) 16270 string PK\003\004 1628!:strength +1 1629# Starts with AndroidManifest.xml (file name length = 19) 1630>26 uleshort 19 1631>>30 string AndroidManifest.xml Android package (APK), with AndroidManifest.xml 1632!:mime application/vnd.android.package-archive 1633!:ext apk 1634>>>-22 string PK\005\006 1635>>>>(-6.l-16) string APK\x20Sig\x20Block\x2042 \b, with APK Signing Block 1636# Starts with META-INF/com/android/build/gradle/app-metadata.properties 1637>26 uleshort 57 1638>>30 string META-INF/com/android/build/gradle/ 1639>>>&0 string app-metadata.properties Android package (APK), with gradle app-metadata.properties 1640!:mime application/vnd.android.package-archive 1641!:ext apk 1642>>>>-22 string PK\005\006 1643>>>>>(-6.l-16) string APK\x20Sig\x20Block\x2042 \b, with APK Signing Block 1644# Starts with classes.dex (file name length = 11) 1645>26 uleshort 11 1646>>30 string classes.dex Android package (APK), with classes.dex 1647!:mime application/vnd.android.package-archive 1648!:ext apk 1649>>>-22 string PK\005\006 1650>>>>(-6.l-16) string APK\x20Sig\x20Block\x2042 \b, with APK Signing Block 1651# Starts with META-INF/MANIFEST.MF (file name length = 20) 1652# NB: checks for resources.arsc, classes.dex, etc. as well to avoid matching JAR files 1653>26 uleshort 20 1654>>30 string META-INF/MANIFEST.MF 1655# Contains resources.arsc (near the end, in the central directory) 1656>>>-512 search resources.arsc Android package (APK), with MANIFEST.MF and resources.arsc 1657!:mime application/vnd.android.package-archive 1658!:ext apk 1659>>>>-22 string PK\005\006 1660>>>>>(-6.l-16) string APK\x20Sig\x20Block\x2042 \b, with APK Signing Block 1661>>>-512 default x 1662# Contains classes.dex (near the end, in the central directory) 1663>>>>-512 search classes.dex Android package (APK), with MANIFEST.MF and classes.dex 1664!:mime application/vnd.android.package-archive 1665!:ext apk 1666>>>>>-22 string PK\005\006 1667>>>>>>(-6.l-16) string APK\x20Sig\x20Block\x2042 \b, with APK Signing Block 1668>>>>-512 default x 1669# Contains lib/armeabi (near the end, in the central directory) 1670>>>>>-512 search lib/armeabi Android package (APK), with MANIFEST.MF and armeabi lib 1671!:mime application/vnd.android.package-archive 1672!:ext apk 1673>>>>>>-22 string PK\005\006 1674>>>>>>>(-6.l-16) string APK\x20Sig\x20Block\x2042 \b, with APK Signing Block 1675>>>>>-512 default x 1676# Contains drawables (near the end, in the central directory) 1677>>>>>>-512 search res/drawable Android package (APK), with MANIFEST.MF and drawables 1678!:mime application/vnd.android.package-archive 1679!:ext apk 1680>>>>>>>-22 string PK\005\006 1681>>>>>>>>(-6.l-16) string APK\x20Sig\x20Block\x2042 \b, with APK Signing Block 1682# It may or may not be an APK file, but it's definitely a Java JAR file 1683>>>>>>-512 default x Java archive data (JAR) 1684!:mime application/java-archive 1685!:ext jar 1686# Starts with zipflinger virtual entry (28 + 104 = 132 bytes) 1687# See https://github.com/obfusk/apksigcopier/blob/666f5b7/apksigcopier/__init__.py#L230 1688>4 string \x00\x00\x00\x00\x00\x00 1689>>&0 string \x21\x08\x21\x02 1690>>>&0 string \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00 1691>>>>&0 string \x00\x00 Android package (APK), with zipflinger virtual entry 1692!:mime application/vnd.android.package-archive 1693!:ext apk 1694>>>>>-22 string PK\005\006 1695>>>>>>(-6.l-16) string APK\x20Sig\x20Block\x2042 \b, with APK Signing Block 1696# APK Signing Block 1697>0 default x 1698>>-22 string PK\005\006 1699>>>(-6.l-16) string APK\x20Sig\x20Block\x2042 Android package (APK), with APK Signing Block 1700!:mime application/vnd.android.package-archive 1701!:ext apk 1702 1703# Zip archives (Greg Roelofs, c/o zip-bugs@wkuvx1.wku.edu) 17040 string PK\005\006 Zip archive data (empty) 1705!:mime application/zip 1706!:ext zip/cbz 1707!:strength +1 17080 string PK\003\004 1709!:strength +1 1710 1711# Specialised zip formats which start with a member named 'mimetype' 1712# (stored uncompressed, with no 'extra field') containing the file's MIME type. 1713# Check for have 8-byte name, 0-byte extra field, name "mimetype", and 1714# contents starting with "application/": 1715>26 string \x8\0\0\0mimetypeapplication/ 1716 1717# KOffice / OpenOffice & StarOffice / OpenDocument formats 1718# From: Abel Cheung <abel@oaka.org> 1719 1720# KOffice (1.2 or above) formats 1721# (mimetype contains "application/vnd.kde.<SUBTYPE>") 1722>>50 string vnd.kde. KOffice (>=1.2) 1723>>>58 string karbon Karbon document 1724>>>58 string kchart KChart document 1725>>>58 string kformula KFormula document 1726>>>58 string kivio Kivio document 1727>>>58 string kontour Kontour document 1728>>>58 string kpresenter KPresenter document 1729>>>58 string kspread KSpread document 1730>>>58 string kword KWord document 1731 1732# OpenOffice formats (for OpenOffice 1.x / StarOffice 6/7) 1733# (mimetype contains "application/vnd.sun.xml.<SUBTYPE>") 1734# URL: https://en.wikipedia.org/wiki/OpenOffice.org_XML 1735# reference: http://fileformats.archiveteam.org/wiki/OpenOffice.org_XML 1736>>50 string vnd.sun.xml. OpenOffice.org 1.x 1737>>>62 string writer Writer 1738>>>>68 byte !0x2e document 1739!:mime application/vnd.sun.xml.writer 1740!:ext sxw 1741>>>>68 string .template template 1742!:mime application/vnd.sun.xml.writer.template 1743!:ext stw 1744>>>>68 string .web Web template 1745!:mime application/vnd.sun.xml.writer.web 1746!:ext stw 1747>>>>68 string .global global document 1748!:mime application/vnd.sun.xml.writer.global 1749!:ext sxg 1750>>>62 string calc Calc 1751>>>>66 byte !0x2e spreadsheet 1752!:mime application/vnd.sun.xml.calc 1753!:ext sxc 1754>>>>66 string .template template 1755!:mime application/vnd.sun.xml.calc.template 1756!:ext stc 1757>>>62 string draw Draw 1758>>>>66 byte !0x2e document 1759!:mime application/vnd.sun.xml.draw 1760!:ext sxd 1761>>>>66 string .template template 1762!:mime application/vnd.sun.xml.draw.template 1763!:ext std 1764>>>62 string impress Impress 1765>>>>69 byte !0x2e presentation 1766!:mime application/vnd.sun.xml.impress 1767!:ext sxi 1768>>>>69 string .template template 1769!:mime application/vnd.sun.xml.impress.template 1770!:ext sti 1771>>>62 string math Math document 1772!:mime application/vnd.sun.xml.math 1773!:ext sxm 1774>>>62 string base Database file 1775!:mime application/vnd.sun.xml.base 1776!:ext sdb 1777 1778# URL: https://wiki.openoffice.org/wiki/Documentation/DevGuide/Extensions/File_Format 1779# From: Joerg Jenderek 1780# Note: only few OXT samples are detected here by mimetype member 1781# is used by OpenOffice and LibreOffice and probably also NeoOffice 1782# verified by `unzip -Zv *.oxt` or `7z l -slt *.oxt` 1783>>50 string vnd.openofficeorg. OpenOffice 1784>>>68 string extension \b/LibreOffice Extension 1785# http://extension.nirsoft.net/oxt 1786!:mime application/vnd.openofficeorg.extension 1787# like: Gallery-Puzzle.2.1.0.1.oxt 1788!:ext oxt 1789 1790# OpenDocument formats (for OpenOffice 2.x / StarOffice >= 8) 1791# URL: http://fileformats.archiveteam.org/wiki/OpenDocument 1792# https://lists.oasis-open.org/archives/office/200505/msg00006.html 1793# (mimetype contains "application/vnd.oasis.opendocument.<SUBTYPE>") 1794>>50 string vnd.oasis.opendocument. OpenDocument 1795>>>73 string text 1796>>>>77 byte !0x2d Text 1797!:mime application/vnd.oasis.opendocument.text 1798!:ext odt 1799>>>>77 string -template Text Template 1800!:mime application/vnd.oasis.opendocument.text-template 1801!:ext ott 1802>>>>77 string -web HTML Document Template 1803!:mime application/vnd.oasis.opendocument.text-web 1804!:ext oth 1805>>>>77 string -master 1806>>>>>84 byte !0x2d Master Document 1807!:mime application/vnd.oasis.opendocument.text-master 1808!:ext odm 1809>>>>>84 string -template Master Template 1810!:mime application/vnd.oasis.opendocument.text-master-template 1811!:ext otm 1812>>>73 string graphics 1813>>>>81 byte !0x2d Drawing 1814!:mime application/vnd.oasis.opendocument.graphics 1815!:ext odg 1816>>>>81 string -template Drawing Template 1817!:mime application/vnd.oasis.opendocument.graphics-template 1818!:ext otg 1819>>>73 string presentation 1820>>>>85 byte !0x2d Presentation 1821!:mime application/vnd.oasis.opendocument.presentation 1822!:ext odp 1823>>>>85 string -template Presentation Template 1824!:mime application/vnd.oasis.opendocument.presentation-template 1825!:ext otp 1826>>>73 string spreadsheet 1827>>>>84 byte !0x2d Spreadsheet 1828!:mime application/vnd.oasis.opendocument.spreadsheet 1829!:ext ods 1830>>>>84 string -template Spreadsheet Template 1831!:mime application/vnd.oasis.opendocument.spreadsheet-template 1832!:ext ots 1833>>>73 string chart 1834>>>>78 byte !0x2d Chart 1835!:mime application/vnd.oasis.opendocument.chart 1836!:ext odc 1837>>>>78 string -template Chart Template 1838!:mime application/vnd.oasis.opendocument.chart-template 1839!:ext otc 1840>>>73 string formula 1841>>>>80 byte !0x2d Formula 1842!:mime application/vnd.oasis.opendocument.formula 1843!:ext odf 1844>>>>80 string -template Formula Template 1845!:mime application/vnd.oasis.opendocument.formula-template 1846!:ext otf 1847# https://www.loc.gov/preservation/digital/formats/fdd/fdd000441.shtml 1848>>>73 string database Database 1849!:mime application/vnd.oasis.opendocument.database 1850!:ext odb 1851# Valid for LibreOffice Base 6.0.1.1 at least 1852>>>73 string base Database 1853# https://bugs.documentfoundation.org/show_bug.cgi?id=45854 1854!:mime application/vnd.oasis.opendocument.base 1855!:ext odb 1856>>>73 string image 1857>>>>78 byte !0x2d Image 1858!:mime application/vnd.oasis.opendocument.image 1859!:ext odi 1860>>>>78 string -template Image Template 1861!:mime application/vnd.oasis.opendocument.image-template 1862!:ext oti 1863 1864# EPUB (OEBPS) books using OCF (OEBPS Container Format) 1865# https://www.idpf.org/ocf/ocf1.0/download/ocf10.htm, section 4. 1866# From: Ralf Brown <ralf.brown@gmail.com> 1867>>50 string epub+zip EPUB document 1868!:mime application/epub+zip 1869 1870# From: Hajin Jang <jb6804@naver.com> 1871# hwpx (OWPML) document format follows OCF specification. 1872# Hangul Word Processor 2010+ supports HWPX format. 1873# URL: https://www.hancom.com/etc/hwpDownload.do 1874# https://standard.go.kr/KSCI/standardIntro/getStandardSearchView.do?menuId=503&topMenuId=502&ksNo=KSX6101 1875# https://e-ks.kr/streamdocs/view/sd;streamdocsId=72059197557727331 1876>>50 string hwp+zip Hancom HWP (Hangul Word Processor) file, HWPX 1877!:mime application/x-hwp+zip 1878!:ext hwpx 1879 1880# From: Joerg Jenderek 1881# URL: http://en.wikipedia.org/wiki/CorelDRAW 1882# NOTE: version; til 2 WL-based; from 3 til 13 by ./riff; from 14 zip based 1883>>50 string x-vnd.corel. Corel 1884>>>62 string draw.document+zip Draw drawing, version 14-16 1885!:mime application/x-vnd.corel.draw.document+zip 1886!:ext cdr 1887>>>62 string draw.template+zip Draw template, version 14-16 1888!:mime application/x-vnd.corel.draw.template+zip 1889!:ext cdrt 1890>>>62 string zcf.draw.document+zip Draw drawing, version 17-22 1891!:mime application/x-vnd.corel.zcf.draw.document+zip 1892!:ext cdr 1893>>>62 string zcf.draw.template+zip Draw template, version 17-22 1894!:mime application/x-vnd.corel.zcf.draw.template+zip 1895!:ext cdt/cdrt 1896# URL: http://product.corel.com/help/CorelDRAW/540240626/Main/EN/Doc/CorelDRAW-Other-file-formats.html 1897>>>62 string zcf.pattern+zip Draw pattern, version 22 1898!:mime application/x-vnd.corel.zcf.pattern+zip 1899!:ext pat 1900# URL: https://en.wikipedia.org/wiki/Corel_Designer 1901# Reference: http://fileformats.archiveteam.org/wiki/Corel_Designer 1902# Note: called by TrID "Corel DESIGN graphics" 1903>>>62 string designer.document+zip DESIGNER graphics, version 14-16 1904!:mime application/x-vnd.corel.designer.document+zip 1905!:ext des 1906>>>62 string zcf.designer.document+zip DESIGNER graphics, version 17-21 1907!:mime application/x-vnd.corel.zcf.designer.document+zip 1908!:ext des 1909# URL: http://product.corel.com/help/CorelDRAW/540223850/Main/EN/Documentation/ 1910# CorelDRAW-Corel-Symbol-Library-CSL.html 1911>>>62 string symbol.library+zip Symbol Library, version 6-16.3 1912!:mime application/x-vnd.corel.symbol.library+zip 1913!:ext csl 1914>>>62 string zcf.symbol.library+zip Symbol Library, version 17-22 1915!:mime application/x-vnd.corel.zcf.symbol.library+zip 1916!:ext csl 1917 1918# Catch other ZIP-with-mimetype formats 1919# In a ZIP file, the bytes immediately after a member's contents are 1920# always "PK". The 2 regex rules here print the "mimetype" member's 1921# contents up to the first 'P'. Luckily, most MIME types don't contain 1922# any capital 'P's. This is a kludge. 1923# (mimetype contains "application/<OTHER>") 1924>>50 default x Zip data 1925>>>38 regex [!-OQ-~]+ (MIME type "%s"?) 1926!:mime application/zip 1927# (mimetype contents other than "application/*") 1928>26 string \x8\0\0\0mimetype 1929>>38 string !application/ 1930>>>38 regex [!-OQ-~]+ Zip data (MIME type "%s"?) 1931!:mime application/zip 1932 1933# Java Jar files (see also APK files above) 1934>(26.s+30) leshort 0xcafe Java archive data (JAR) 1935!:mime application/java-archive 1936!:ext jar 1937 1938# iOS App 1939>(26.s+30) leshort !0xcafe 1940>>26 string !\x8\0\0\0mimetype 1941>>>30 string Payload/ 1942>>>>38 search/64 .app/ iOS App 1943!:mime application/x-ios-app 1944 1945# Dup, see above. 1946#>30 search/100/b application/epub+zip EPUB document 1947#!:mime application/epub+zip 1948 1949# Generic zip archives (Greg Roelofs, c/o zip-bugs@wkuvx1.wku.edu) 1950# Next line excludes specialized formats: 1951>(26.s+30) leshort !0xcafe 1952>>30 search/100/b !application/epub+zip 1953>>>26 string !\x8\0\0\0mimetype Zip archive data 1954!:mime application/zip 1955>>>>4 beshort x \b, at least 1956>>>>4 use zipversion 1957>>>>4 beshort x to extract 1958>>>>8 beshort x \b, compression method= 1959>>>>8 use zipcompression 1960>>>>0x161 string WINZIP \b, WinZIP self-extracting 1961 1962# StarView Metafile 1963# From Pierre Ducroquet <pinaraf@pinaraf.info> 19640 string VCLMTF StarView MetaFile 1965>6 beshort x \b, version %d 1966>8 belong x \b, size %d 1967 1968# Zoo archiver 1969# Update: Joerg Jenderek 1970# URL: https://en.wikipedia.org/wiki/Zoo_(file_format) 1971# http://fileformats.archiveteam.org/wiki/Zoo 1972# Reference: http://mark0.net/download/triddefs_xml.7z/defs/a/ark-zoo-strict.trid.xml 1973# http://distcache.freebsd.org/ports-distfiles/zoo-2.10pl1.tar.gz/zoo.h 1974# Note: called "ZOO compressed archive (strict)" by TrID and "ZOO Compressed Archive" by DROID via PUID x-fmt/269 1975# verified by command like `deark -m zoo -l -d2 WHRCGA.ZOO` 197620 lelong 0xfdc4a7dc 1977# skip DROID x-fmt-269-signature-id-621.zoo by looking for valid major version to manipulate archive 1978>32 byte >0 Zoo archive data 1979!:mime application/x-zoo 1980# bak is extension of backup-ed zoo 1981!:ext zoo/bak 1982# version in text form like: 1.50 2.00 2.10 1983>>4 byte >48 \b, v%c. 1984>>>6 byte >47 \b%c 1985>>>>7 byte >47 \b%c 1986# ZOO files typically start with "ZOO ?.?? Archive.", followed by the bytes 0x1a 0x0 0x0; not used by Zoo and they may be anything 1987>>8 string !\040Archive.\032 \b, at 8 1988>>>8 string x text "%0.10s" 1989# major_ver.minor_ver; minimum version needed to manipulate archive like: 1.0 2.0 1990>>32 byte >0 \b, modify: v%d 1991>>>33 byte x \b.%d+ 1992# major_ver.minor_ver; minimum version needed to extract after modify like in old versions 1993>>(24.l+28) ubyte x \b, extract: v%u 1994>>(24.l+29) ubyte x \b.%u+ 1995# with zoo 2.00 additional fields have been added in the archive header 1996>>32 byte >1 1997# type; type of archive header like: 1 2 1998>>>34 ubyte !1 \b, header type %u 1999# acmt_pos; position of archive comment like: 6258 30599 61369 149501 2000>>>35 lelong >0 \b, at %d 2001# acmt_len; length of archive comment like: 258 2002>>>>39 uleshort x %u bytes comment 2003#>>>>(35.l) ubequad x COMMENT=%16.16llx 2004# 1st character of comment maybe is CarriageReturn (0x0d) 2005>>>>(35.l) ubyte <040 2006# 2nd character of comment maybe is LineFeed (0x0a) 2007>>>>>(35.l+1) ubyte <040 2008# comment string after CRLF like "Anonymous ftp site garbo.uwasa.fi 128.214.87.1 moderated by" 2009>>>>>>(35.l+2) string x %s 2010# next character of remaining comment maybe is CarriageReturn (0x0d) 2011>>>>>>>&0 ubyte <040 2012>>>>>>>>&0 ubyte <040 2013# 2nd comment part like: Timo Salmi ts@chyde.uwasa.fi PC directories and uploads\015\012Harri Valkama hv@chyde.uwasa.fi PC, Mac, Unix files, and upload 2014>>>>>>>>>&0 string >037 %s 2015# vdata; archive-level versioning byte like: 1 3 2016>>>41 ubyte !1 \b, vdata %#x 2017# zoo_start; pointer to 1st entry header 2018>>24 lelong x \b; at %u 2019# zoo_minus; zoo_start -1 for consistency checking 2020#>>28 lelong x \b, zoo_minus %#x 2021# zoo_tag; tag for check 2022#>>(24.l+0) ulelong !0xfdc4a7dc \b, zoo_tag=%8.8x 2023# type; type of directory entry like: 1 2 2024>>(24.l+4) ubyte !2 type=%u 2025# packing_method; 0~no packing 1~normal LZW 2~lzh 2026>>(24.l+5) ubyte x method= 2027>>>(24.l+5) ubyte 0 \bnot-compressed 2028>>>(24.l+5) ubyte 1 \blzd 2029>>>(24.l+5) ubyte 2 \blzh 2030# next; position of next directory entry 2031>>(24.l+6) ulelong x \b, next entry at %u 2032# offset; position of file data for this entry 2033#>>(24.l+10) ulelong x \b, data at %u 2034# file_crc; CRC-16 of file data 2035>>(24.l+18) uleshort x \b, CRC %#4.4x 2036# comment; zero if none or points to entry comment like ADD9h (WHRCGA.ZOO) 2037>>(24.l+32) lelong >0 \b, at %#x 2038# cmt_size; if not 0 for none then length of entry comment like: 46 2039>>>(24.l+36) uleshort >0 %u bytes comment 2040# entry comment itself like: "CGA .GL file showing menu input from keyboard" 2041>>>>(&-6.l) string x "%s" 2042# org_size; original size of file 2043>>(24.l+20) ulelong x \b, size %u 2044# size_now; compressed size of file 2045>>(24.l+24) ulelong x (%u compressed) 2046# major_ver.minor_ver; minimum version needed to extract already done 2047# deleted; will be 1 if deleted, 0 if not 2048>>(24.l+30) ubyte =1 \b, deleted 2049# struc; file structure if any; WHAT IS THAT? 2050>>(24.l+31) ubyte !0 \b, structured 2051# fname[13]; short/DOS file name like 12345678.012 2052>>(24.l+38) string x \b, %0.13s 2053# for directory entry type 2 with variable part 2054>>(24.l+4) ubyte =2 2055# var_dir_len; length of variable part of dir entry 2056>>>(24.l+51) uleshort >0 2057#>>>(24.l+51) uleshort >0 \b, variable part length %u 2058# namlen; length of long filename 2059#>>>>(24.l+56) ubyte x \b, namlen %u 2060# dirlen; length of directory name 2061#>>>>(24.l+57) ubyte x \b, dirlen %u 2062# if file length positive then show long file name 2063>>>>(24.l+56) ubyte >0 2064# lfname[256]; long file name \0-terminated 2065>>>>>(24.l+58) string x "%s" 2066# if directory length positive then jump before file name field and then jump this addtional length plus 2 (\0-terminator + dirlen field) to following directory name 2067>>>>(24.l+57) ubyte >0 2068>>>>>(24.l+55) ubyte x 2069# dirname[256]; directory name \0-terminated 2070>>>>>>&(&0.b+2) string x in "%s" 2071# dir_crc; CRC of directory entry 2072#>>>(24.l+54) uleshort x \b, entry CRC %#4.4x 2073# tz; timezone where file was archived; 7Fh~unknown 4~1.00hoursWestOfUTC 12 16 20~5.00hoursWestOfUTC -107~26.75hoursEastOfUTC -4~1.00hoursEastOfUTC 2074>>>(24.l+53) byte !0x7f \b, time zone %d/4 2075# date; last mod file date in DOS format 2076>>>(24.l+14) lemsdosdate x \b, modified %s 2077# time; last mod file time in DOS format 2078>>>(24.l+16) lemsdostime x %s 2079 2080# Shell archives 208110 string #\ This\ is\ a\ shell\ archive shell archive text 2082!:mime application/octet-stream 2083 2084# 2085# LBR. NB: May conflict with the questionable 2086# "binary Computer Graphics Metafile" format. 2087# 20880 string \0\ \ \ \ \ \ \ \ \ \ \ \0\0 LBR archive data 2089# 2090# PMA (CP/M derivative of LHA) 2091# Update: Joerg Jenderek 2092# URL: https://en.wikipedia.org/wiki/LHA_(file_format) 2093# 2094#2 string -pm0- PMarc archive data [pm0] 20952 string -pm0- 2096>0 use lharc-file 2097#2 string -pm1- PMarc archive data [pm1] 20982 string -pm1- 2099>0 use lharc-file 2100#2 string -pm2- PMarc archive data [pm2] 21012 string -pm2- 2102>0 use lharc-file 21032 string -pms- PMarc SFX archive (CP/M, DOS) 2104#!:mime application/x-foobar-exec 2105!:ext com 21065 string -pc1- PopCom compressed executable (CP/M) 2107#!:mime application/x- 2108#!:ext com 2109 2110# From Rafael Laboissiere <rafael@laboissiere.net> 2111# The Project Revision Control System (see 2112# http://prcs.sourceforge.net) generates a packaged project 2113# file which is recognized by the following entry: 21140 leshort 0xeb81 PRCS packaged project 2115 2116# Microsoft cabinets 2117# by David Necas (Yeti) <yeti@physics.muni.cz> 2118#0 string MSCF\0\0\0\0 Microsoft cabinet file data, 2119#>25 byte x v%d 2120#>24 byte x \b.%d 2121# MPi: All CABs have version 1.3, so this is pointless. 2122# Better magic in debian-additions. 2123 2124# GTKtalog catalogs 2125# by David Necas (Yeti) <yeti@physics.muni.cz> 21264 string gtktalog\ GTKtalog catalog data, 2127>13 string 3 version 3 2128>>14 beshort 0x677a (gzipped) 2129>>14 beshort !0x677a (not gzipped) 2130>13 string >3 version %s 2131 2132############################################################################ 2133# Parity archive reconstruction file, the 'par' file format now used on Usenet. 21340 string PAR\0 PARity archive data 2135>48 leshort =0 - Index file 2136>48 leshort >0 - file number %d 2137 2138# Felix von Leitner <felix-file@fefe.de> 21390 string d8:announce BitTorrent file 2140!:mime application/x-bittorrent 2141!:ext torrent 2142# Durval Menezes, <jmgthbfile at durval dot com> 21430 string d13:announce-list BitTorrent file 2144!:mime application/x-bittorrent 2145!:ext torrent 21460 string d7:comment BitTorrent file 2147!:mime application/x-bittorrent 2148!:ext torrent 21490 string d4:info BitTorrent file 2150!:mime application/x-bittorrent 2151!:ext torrent 2152 2153# Atari MSA archive - Teemu Hukkanen <tjhukkan@iki.fi> 2154# URL: http://fileformats.archiveteam.org/wiki/MSA_(Magic_Shadow_Archiver) 2155# Reference: http://info-coach.fr/atari/documents/_mydoc/FD_Image_File_Format.pdf 2156# http://mark0.net/download/triddefs_xml.7z/defs/m/msa.trid.xml 2157# Update: Joerg Jenderek 2158# Note: called by TrID "Atari MSA Disk Image" and verified by 2159# command like `deark -l -m msa -d2 PDATS578.msa` as " Atari ST floppy disk image" 2160# GRR: line below is too general as it matches setup.skin 21610 beshort 0x0e0f 2162# skip foo setup.skin with unrealistic high number 52255 of sides by check for valid "low" value 2163>4 ubeshort <2 Atari MSA archive data 2164#!:mime application/octet-stream 2165!:mime application/x-atari-msa 2166!:ext msa 2167# sectors per track like: 9 10 2168>>2 beshort x \b, %d sectors per track 2169# sides (0 or 1; add 1 to this to get correct number of sides) 2170>>4 beshort 0 \b, 1 sided 2171>>4 beshort 1 \b, 2 sided 2172# starting track like: 0 2173>>6 beshort x \b, starting track: %d 2174# ending track like: 39 79 80 81 2175>>8 beshort x \b, ending track: %d 2176# tracks content 2177#>>10 ubequad x \b, track content %#16.16llx 2178 2179# Alternate ZIP string (amc@arwen.cs.berkeley.edu) 21800 string PK00PK\003\004 Zip archive data 2181!:mime application/zip 2182!:ext zip/cbz 2183 2184# Recognize ZIP archives with prepended data by end-of-central-directory record 2185# https://en.wikipedia.org/wiki/ZIP_(file_format)#End_of_central_directory_record_(EOCD) 2186# by Michal Gorny <mgorny@gentoo.org> 2187-2 uleshort 0 2188>&-22 string PK\005\006 2189# without #! 2190>>0 string !#! Zip archive, with extra data prepended 2191!:mime application/zip 2192!:ext zip/cbz 2193# with #! 2194>>0 string/w #!\ a 2195>>>&-1 string/T x %s script executable (Zip archive) 2196 2197# ACE archive (from http://www.wotsit.org/download.asp?f=ace) 2198# by Stefan `Sec` Zehl <sec@42.org> 21997 string **ACE** ACE archive data 2200!:mime application/x-ace-compressed 2201!:ext ace 2202>15 byte >0 version %d 2203>16 byte =0x00 \b, from MS-DOS 2204>16 byte =0x01 \b, from OS/2 2205>16 byte =0x02 \b, from Win/32 2206>16 byte =0x03 \b, from Unix 2207>16 byte =0x04 \b, from MacOS 2208>16 byte =0x05 \b, from WinNT 2209>16 byte =0x06 \b, from Primos 2210>16 byte =0x07 \b, from AppleGS 2211>16 byte =0x08 \b, from Atari 2212>16 byte =0x09 \b, from Vax/VMS 2213>16 byte =0x0A \b, from Amiga 2214>16 byte =0x0B \b, from Next 2215>14 byte x \b, version %d to extract 2216>5 leshort &0x0080 \b, multiple volumes, 2217>>17 byte x \b (part %d), 2218>5 leshort &0x0002 \b, contains comment 2219>5 leshort &0x0200 \b, sfx 2220>5 leshort &0x0400 \b, small dictionary 2221>5 leshort &0x0800 \b, multi-volume 2222>5 leshort &0x1000 \b, contains AV-String 2223>>30 string \x16*UNREGISTERED\x20VERSION* (unregistered) 2224>5 leshort &0x2000 \b, with recovery record 2225>5 leshort &0x4000 \b, locked 2226>5 leshort &0x8000 \b, solid 2227# Date in MS-DOS format (whatever that is) 2228#>18 lelong x Created on 2229 2230# sfArk : compression program for Soundfonts (sf2) by Dirk Jagdmann 2231# <doj@cubic.org> 22320x1A string sfArk sfArk compressed Soundfont 2233>0x15 string 2 2234>>0x1 string >\0 Version %s 2235>>0x2A string >\0 : %s 2236 2237# DR-DOS 7.03 Packed File *.??_ 2238# Reference: http://www.antonis.de/dos/dos-tuts/mpdostip/html/nwdostip.htm 2239# Note: unpacked by PNUNPACK.EXE 22400 string Packed\ File\ 2241# by looking for Control-Z skip ASCII text starting with Packed File 2242>0x18 ubyte 0x1a Personal NetWare Packed File 2243!:mime application/x-novell-compress 2244!:ext ??_ 2245>>12 string x \b, was "%.12s" 2246# 1 or 2 2247#>>0x19 ubyte x \b, at 0x19 %u 2248>>0x1b ulelong x with %u bytes 2249 2250# EET archive 2251# From: Tilman Sauerbeck <tilman@code-monkey.de> 22520 belong 0x1ee7ff00 EET archive 2253!:mime application/x-eet 2254 2255# rzip archives 22560 string RZIP rzip compressed data 2257>4 byte x - version %d 2258>5 byte x \b.%d 2259>6 belong x (%d bytes) 2260 2261# From: Joerg Jenderek 2262# URL: https://help.foxitsoftware.com/kb/install-fzip-file.php 2263# reference: http://mark0.net/download/triddefs_xml.7z/ 2264# defs/f/fzip.trid.xml 2265# Note: unknown compression; No "PK" zip magic; normally in directory like 2266# "%APPDATA%\Foxit Software\Addon\Foxit Reader\Install" 22670 ubequad 0x2506781901010000 Foxit add-on/update 2268!:mime application/x-fzip 2269!:ext fzip 2270 2271# From: "Robert Dale" <robdale@gmail.com> 22720 belong 123 dar archive, 2273>4 belong x label "%.8x 2274>>8 belong x %.8x 2275>>>12 beshort x %.4x" 2276>14 byte 0x54 end slice 2277>14 beshort 0x4e4e multi-part 2278>14 beshort 0x4e53 multi-part, with -S 2279 2280# Symbian installation files 2281# https://www.thouky.co.uk/software/psifs/sis.html 2282# http://developer.symbian.com/main/downloads/papers/SymbianOSv91/softwareinstallsis.pdf 22838 lelong 0x10000419 Symbian installation file 2284!:mime application/vnd.symbian.install 2285>4 lelong 0x1000006D (EPOC release 3/4/5) 2286>4 lelong 0x10003A12 (EPOC release 6) 22870 lelong 0x10201A7A Symbian installation file (Symbian OS 9.x) 2288!:mime x-epoc/x-sisx-app 2289 2290# From "Nelson A. de Oliveira" <naoliv@gmail.com> 22910 string MPQ\032 MoPaQ (MPQ) archive 2292 2293# From: "Nelson A. de Oliveira" <naoliv@gmail.com> 2294# .kgb 22950 string KGB_arch KGB Archiver file 2296>10 string x with compression level %.1s 2297 2298# xar (eXtensible ARchiver) archive 2299# URL: https://en.wikipedia.org/wiki/Xar_(archiver) 2300# xar archive format: https://code.google.com/p/xar/ 2301# From: "David Remahl" <dremahl@apple.com> 2302# Update: Joerg Jenderek 2303# TODO: lzma compression; X509Data for pkg and xip 2304# Note: verified by `xar --dump-header -f FullBundleUpdate.xar` or 2305# 7z t -txar Xcode_10.2_beta_4.xip` 23060 string xar! xar archive 2307!:mime application/x-xar 2308# pkg for Mac OSX installer package like FullBundleUpdate.pkg 2309# xip for signed Apple software like Xcode_10.2_beta_4.xip 2310!:ext xar/pkg/xip 2311# always 28 in older archives 2312>4 ubeshort >28 \b, header size %u 2313# currently there exit only version 1 since about 2014 2314>6 ubeshort >1 version %u, 2315>8 ubequad x compressed TOC: %llu, 2316#>16 ubequad x uncompressed TOC: %llu, 2317# cksum_alg 0-2 in older and also 3-4 in newer 2318>24 belong 0 no checksum 2319>24 belong 1 SHA-1 checksum 2320>24 belong 2 MD5 checksum 2321>24 belong 3 SHA-256 checksum 2322>24 belong 4 SHA-512 checksum 2323>24 belong >4 unknown %#x checksum 2324#>24 belong >4 checksum 2325# For no compression jump 0 bytes 2326>24 belong 0 2327>>0 ubyte x 2328# jump more bytes forward by header size 2329>>>&(4.S) ubyte x 2330# jump more bytes forward by compressed table of contents size 2331#>>>>&(8.Q) ubequad x \b, heap data %#llx 2332>>>>&(8.Q) ubyte x 2333# look for data by ./compress after message with 1 space at end 2334>>>>>&-3 indirect x \b, contains 2335# For SHA-1 jump 20 minus 2 bytes 2336>24 belong 1 2337>>18 ubyte x 2338# jump more bytes forward by header size 2339>>>&(4.S) ubyte x 2340# jump more bytes forward by compressed table of contents size 2341>>>>&(8.Q) ubyte x 2342# data compressed by gzip, bzip, lzma or none 2343>>>>>&-1 indirect x \b, contains 2344# For SHA-256 jump 32 minus 2 bytes 2345>24 belong 3 2346>>30 ubyte x 2347# jump more bytes forward by header size 2348>>>&(4.S) ubyte x 2349# jump more bytes forward by compressed table of contents size 2350>>>>&(8.Q) ubyte x 2351>>>>>&-1 indirect x \b, contains 2352# For SHA-512 jump 64 minus 2 bytes 2353>24 belong 4 2354>>62 ubyte x 2355# jump more bytes forward by header size 2356>>>&(4.S) ubyte x 2357# jump more bytes forward by compressed table of contents size 2358>>>>&(8.Q) ubyte x 2359>>>>>&-1 indirect x \b, contains 2360 2361# Type: Parity Archive 2362# From: Daniel van Eeden <daniel_e@dds.nl> 23630 string PAR2 Parity Archive Volume Set 2364 2365# Bacula volume format. (Volumes always start with a block header.) 2366# URL: https://bacula.org/3.0.x-manuals/en/developers/developers/Block_Header.html 2367# From: Adam Buchbinder <adam.buchbinder@gmail.com> 236812 string BB02 Bacula volume 2369>20 bedate x \b, started %s 2370 2371# ePub is XHTML + XML inside a ZIP archive. The first member of the 2372# archive must be an uncompressed file called 'mimetype' with contents 2373# 'application/epub+zip' 2374 2375 2376# From: "Michael Gorny" <mgorny@gentoo.org> 2377# ZPAQ: http://mattmahoney.net/dc/zpaq.html 23780 string zPQ ZPAQ stream 2379>3 byte x \b, level %d 2380# From: Barry Carter <carter.barry@gmail.com> 2381# https://encode.ru/threads/456-zpaq-updates/page32 23820 string 7kSt ZPAQ file 2383 2384# BBeB ebook, unencrypted (LRF format) 2385# URL: https://www.sven.de/librie/Librie/LrfFormat 2386# From: Adam Buchbinder <adam.buchbinder@gmail.com> 23870 string L\0R\0F\0\0\0 BBeB ebook data, unencrypted 2388>8 beshort x \b, version %d 2389>36 byte 1 \b, front-to-back 2390>36 byte 16 \b, back-to-front 2391>42 beshort x \b, (%dx, 2392>44 beshort x %d) 2393 2394# Symantec GHOST image by Joerg Jenderek at May 2014 2395# https://us.norton.com/ghost/ 2396# https://www.garykessler.net/library/file_sigs.html 23970 ubelong&0xFFFFf7f0 0xFEEF0100 Norton GHost image 2398# *.GHO 2399>2 ubyte&0x08 0x00 \b, first file 2400# *.GHS or *.[0-9] with cns program option 2401>2 ubyte&0x08 0x08 \b, split file 2402# part of split index interesting for *.ghs 2403>>4 ubyte x id=%#x 2404# compression tag minus one equals numeric compression command line switch z[1-9] 2405>3 ubyte 0 \b, no compression 2406>3 ubyte 2 \b, fast compression (Z1) 2407>3 ubyte 3 \b, medium compression (Z2) 2408>3 ubyte >3 2409>>3 ubyte <11 \b, compression (Z%d-1) 2410>2 ubyte&0x08 0x00 2411# ~ 30 byte password field only for *.gho 2412>>12 ubequad !0 \b, password protected 2413>>44 ubyte !1 2414# 1~Image All, sector-by-sector only for *.gho 2415>>>10 ubyte 1 \b, sector copy 2416# 1~Image Boot track only for *.gho 2417>>>43 ubyte 1 \b, boot track 2418# 1~Image Disc only for *.gho implies Image Boot track and sector copy 2419>>44 ubyte 1 \b, disc sector copy 2420# optional image description only *.gho 2421>>0xff string >\0 "%-.254s" 2422# look for DOS sector end sequence 2423>0xE08 search/7776 \x55\xAA 2424>>&-512 indirect x \b; contains 2425 2426# Google Chrome extensions 2427# https://developer.chrome.com/extensions/crx 2428# https://developer.chrome.com/extensions/hosting 24290 string Cr24 Google Chrome extension 2430!:mime application/x-chrome-extension 2431>4 ulong x \b, version %u 2432 2433# SeqBox - Sequenced container 2434# ext: sbx, seqbox 2435# Marco Pontello marcopon@gmail.com 2436# reference: https://github.com/MarcoPon/SeqBox 24370 string SBx SeqBox, 2438>3 byte x version %d 2439 2440# LyNX archive 2441# Update: Joerg Jenderek 2442# URL: http://fileformats.archiveteam.org/wiki/Lynx_archive 2443# Reference: http://ist.uwaterloo.ca/~schepers/formats/LNX.TXT 2444# http://mark0.net/download/triddefs_xml.7z/defs/a/ark-lnx.trid.xml 2445# Note: called "Lynx archive" by TrID and "Commodore C64 BASIC program" with "POKE 53280" by ./c64 2446# TODO: merge and unify with Commodore C64 BASIC program 244756 string USE\040LYNX\040TO\040DISSOLVE\040THIS\040FILE LyNX archive 2448# display "Lynx archive" (strength=330) before Commodore C64 BASIC program (strength=50) handled by ./c64 2449#!:strength +0 2450#!:mime application/octet-stream 2451!:mime application/x-commodore-lnx 2452!:ext lnx 2453# afterwards look for BASIC tokenized GOTO (89h) 10, line terminator \0, end of programm tag \0\0 and CarriageReturn 2454>86 search/10 \x8910\0\0\0\r \b, 2455# for DEBUGGING 2456#>>&0 string x STRING="%s" 2457# number in ASCII of directory blocks with spaces on both sides like: 1 2 3 5 2458>>&0 regex [0-9]{1,5} %s directory blocks 2459# signature like: "*LYNX XII BY WILL CORLEY" " LYNX IX BY WILL CORLEY" "*LYNX BY CBMCONVERT 2.0*" 2460>>>&2 regex [^\r]{1,24} \b, signature "%s" 2461# number of files in ASCII surrounded by spaces and delimited by CR like: 2 3 6 13 69 144 (maximum?) 2462>>>>&1 regex [0-9]{1,3} \b, %s files 2463 2464# From: Joerg Jenderek 2465# URL: https://www.acronis.com/ 2466# Reference: https://en.wikipedia.org/wiki/TIB_(file_format) 2467# Note: only tested with True Image 2013 Build 5962 and 2019 Build 14110 24680 ubequad 0xce24b9a220000000 Acronis True Image backup 2469!:mime application/x-acronis-tib 2470!:ext tib 2471# 01000000 2472#>20 ubelong x \b, at 20 %#x 2473# 20000000 2474#>28 ubelong x \b, at 28 %#x 2475# strings like "Generic- SD/MMC 1.00" "Unknown Disk" "Msft Virtual Disk 1.0" 2476# ??? 2477# strings like "\Device\0000011e" "\Device\0000015a" 2478#>0 search/0x6852300/cs \\Device\\ 2479#>>&-1 pstring x \b, %s 2480# "\Device\HarddiskVolume30" "\Device\HarddiskVolume39" 2481#>>>&1 search/180/cs \\Device\\ 2482#>>>>&-1 pstring x \b, %s 2483#>>>>>&0 search/29/cs \0\0\xc8\0 2484# disk label 2485#>>>>>>&10 lestring16 x \b, disk label %11.11s 2486#>>>>>>&9 plestring16 x \b, disk label "%11.11s" 2487#>>>>>>&10 ubequad x %16.16llx 2488 2489 2490# Gentoo XPAK binary package 2491# by Michal Gorny <mgorny@gentoo.org> 2492# https://gitweb.gentoo.org/proj/portage.git/tree/man/xpak.5 2493-4 string STOP 2494>-16 string XPAKSTOP Gentoo binary package (XPAK) 2495!:mime application/vnd.gentoo.xpak 2496 2497# From: Joerg Jenderek 2498# URL: https://kodi.wiki/view/TexturePacker 2499# Reference: https://mirrors.kodi.tv/releases/source/17.3-Krypton.tar.gz 2500# /xbmc-Krypton/xbmc/guilib/XBTF.h 2501# /xbmc-Krypton/xbmc/guilib/XBTF.cpp 25020 string XBTF 2503# skip ASCII text by looking for terminating \0 of path 2504>264 ubyte 0 XBMC texture package 2505!:mime application/x-xbmc-xbt 2506!:ext xbt 2507# XBTF_VERSION 2 2508>>4 string !2 \b, version %-.1s 2509# nofFiles /xbmc-Krypton/xbmc/guilib/XBTFReader.cpp 2510>>5 ulelong x \b, %u file 2511# plural s 2512>>5 ulelong >1 \bs 2513# path[CXBTFFile[MaximumPathLength=256] 2514>>9 string x \b, 1st %s 2515 2516# ALZIP archive 2517# by Hyungjun Park <hyungjun.park@worksmobile.com>, Hajin Jang <hajin_jang@worksmobile.com> 2518# http://kippler.com/win/unalz/ 2519# https://salsa.debian.org/l10n-korean-team/unalz 25200 string ALZ\001 ALZ archive data 2521!:ext alz 2522 2523# https://cf-aldn.altools.co.kr/setup/EGG_Specification.zip 25240 string EGGA EGG archive data, 2525!:ext egg 2526>5 byte x version %u 2527>4 byte x \b.%u 2528>>0x0E ulelong =0x08E28222 2529>>0x0E ulelong =0x24F5A262 \b, split 2530>>0x0E ulelong =0x24E5A060 \b, solid 2531>>0x0E default x \b, unknown 2532 2533# PAQ9A archive 2534# URL: http://mattmahoney.net/dc/#paq9a 2535# Note: Line 1186 of paq9a.cpp gives the magic bytes 25360 string pQ9\001 PAQ9A archive 2537 2538# From wof (wof@stachelkaktus.net) 25390 string Unison\ archive\ format Unison archive format 2540 2541# https://ankiweb.net 254230 string collection.anki2 Anki APKG file 2543#!:ext .apkg 2544 2545# Synology archive (DiskStation Manager 7.0+) 2546# From: Alexandre Iooss <erdnaxe@crans.org> 2547# Note: These archives are signed and encrypted. 25480 ulelong&0xFFFFFF00 0xEFBEAD00 2549# MessagePack header (fixarray of 5 elements starting with a bin of 32 bytes) 2550>8 ulelong&0x00FFFFFF 0x20C495 Synology archive 2551!:ext spk 2552# Extract some properties from MessagePack third item 2553>>43 search/0x10000 package= 2554>>>&0 string x \b, package %s 2555>>43 search/0x10000 arch= 2556>>>&0 string x %s 2557>>43 search/0x10000 version= 2558>>>&0 string x %s 2559>>43 search/0x10000 create_time= 2560>>>&0 string x \b, created on %s 2561 2562# MonoGame/XNA processed assets archive 2563# From: Alexandre Iooss <erdnaxe@crans.org> 2564# URL: https://github.com/MonoGame/MonoGame/blob/v3.8.1/MonoGame.Framework/Content/ContentManager.cs 25650 string XNB 2566# XNB must be version 4 or 5 2567>4 byte <6 2568>>4 byte >3 2569# Size must be positive 2570>>>6 lelong >0 MonoGame/XNA processed assets 2571!:ext xnb 2572>>>>3 string =w \b, for Windows 2573>>>>3 string =x \b, for Xbox360 2574>>>>3 string =i \b, for iOS 2575>>>>3 string =a \b, for Android 2576>>>>3 string =d \b, for DesktopGL 2577>>>>3 string =X \b, for MacOSX 2578>>>>3 string =W \b, for WindowsStoreApp 2579>>>>3 string =n \b, for NativeClient 2580>>>>3 string =M \b, for WindowsPhone8 2581>>>>3 string =r \b, for RaspberryPi 2582>>>>3 string =P \b, for PlayStation4 2583>>>>3 string =5 \b, for PlayStation5 2584>>>>3 string =O \b, for XboxOne 2585>>>>3 string =S \b, for Nintendo Switch 2586>>>>3 string =G \b, for Google Stadia 2587>>>>3 string =b \b, for WebAssembly and Bridge.NET 2588>>>>3 string =m \b, for WindowsPhone7.0 (XNA) 2589>>>>3 string =p \b, for PlayStationMobile 2590>>>>3 string =v \b, for PSVita 2591>>>>3 string =g \b, for Windows (OpenGL) 2592>>>>3 string =l \b, for Linux 2593>>>>4 byte x \b, version %d 2594>>>>5 byte &0x80 \b, LZX compressed 2595>>>>>10 lelong x \b, decompressed size: %d bytes 2596>>>>5 byte &0x40 \b, LZ4 compressed 2597>>>>>10 lelong x \b, decompressed size: %d bytes 2598 2599# Electron ASAR archive 2600# From: Alexandre Iooss <erdnaxe@crans.org> 2601# URL: https://github.com/electron/asar 26020 ulelong 4 2603# Match JSON header start and end 2604>16 string {"files":{" 2605>>(12.l+12) string }}}} Electron ASAR archive 2606!:ext asar 2607>>>12 ulelong x \b, header length: %d bytes 2608