1b6cee71dSXin LI#------------------------------------------------------------------------------ 2*d38c30c0SXin LI# $File: archive,v 1.133 2019/11/15 21:03:14 christos Exp $ 3b6cee71dSXin LI# archive: file(1) magic for archive formats (see also "msdos" for self- 4b6cee71dSXin LI# extracting compressed archives) 5b6cee71dSXin LI# 6b6cee71dSXin LI# cpio, ar, arc, arj, hpack, lha/lharc, rar, squish, uc2, zip, zoo, etc. 758a0f0d0SEitan Adler# pre-POSIX "tar" archives are also handled in the C code ../../src/is_tar.c. 8b6cee71dSXin LI 9b6cee71dSXin LI# POSIX tar archives 1058a0f0d0SEitan Adler# URL: https://en.wikipedia.org/wiki/Tar_(computing) 1158a0f0d0SEitan Adler# Reference: https://www.freebsd.org/cgi/man.cgi?query=tar&sektion=5&manpath=FreeBSD+8-current 1258a0f0d0SEitan Adler# header mainly padded with nul bytes 1358a0f0d0SEitan Adler500 quad 0 142dc4dbb9SEitan Adler!:strength /2 1558a0f0d0SEitan Adler# filename or extended attribute printable strings in range space null til umlaut ue 1658a0f0d0SEitan Adler>0 ubeshort >0x1F00 1758a0f0d0SEitan Adler>>0 ubeshort <0xFCFD 1858a0f0d0SEitan Adler# last 4 header bytes often null but tar\0 in gtarfail2.tar gtarfail.tar-bad 1958a0f0d0SEitan Adler# at https://sourceforge.net/projects/s-tar/files/testscripts/ 2058a0f0d0SEitan Adler>>>508 ubelong&0x8B9E8DFF 0 2158a0f0d0SEitan Adler# nul, space or ascii digit 0-7 at start of mode 2258a0f0d0SEitan Adler>>>>100 ubyte&0xC8 =0 2358a0f0d0SEitan Adler>>>>>101 ubyte&0xC8 =0 2458a0f0d0SEitan Adler# nul, space at end of check sum 2558a0f0d0SEitan Adler>>>>>>155 ubyte&0xDF =0 2658a0f0d0SEitan Adler# space or ascii digit 0 at start of check sum 2758a0f0d0SEitan Adler>>>>>>>148 ubyte&0xEF =0x20 2858a0f0d0SEitan Adler>>>>>>>>0 use tar-file 2958a0f0d0SEitan Adler# minimal check and then display tar archive information which can also be 3058a0f0d0SEitan Adler# embedded inside others like Android Backup, Clam AntiVirus database 3158a0f0d0SEitan Adler0 name tar-file 3258a0f0d0SEitan Adler>257 string !ustar 3358a0f0d0SEitan Adler# header padded with nuls 3458a0f0d0SEitan Adler>>257 ulong =0 3558a0f0d0SEitan Adler# GNU tar version 1.29 with non pax format option without refusing 3658a0f0d0SEitan Adler# creates misleading V7 header for Long path, Multi-volume, Volume type 3758a0f0d0SEitan Adler>>>156 ubyte 0x4c GNU tar archive 3858a0f0d0SEitan Adler!:mime application/x-gtar 3958a0f0d0SEitan Adler!:ext tar/gtar 4058a0f0d0SEitan Adler>>>156 ubyte 0x4d GNU tar archive 4158a0f0d0SEitan Adler!:mime application/x-gtar 4258a0f0d0SEitan Adler!:ext tar/gtar 4358a0f0d0SEitan Adler>>>156 ubyte 0x56 GNU tar archive 4458a0f0d0SEitan Adler!:mime application/x-gtar 4558a0f0d0SEitan Adler!:ext tar/gtar 4658a0f0d0SEitan Adler>>>156 default x tar archive (V7) 4758a0f0d0SEitan Adler!:mime application/x-tar 4858a0f0d0SEitan Adler!:ext tar 4958a0f0d0SEitan Adler# other stuff in padding 5058a0f0d0SEitan Adler# some implementations add new fields to the blank area at the end of the header record 5158a0f0d0SEitan Adler# created for example by DOS TAR 3.20g 1994 Tim V.Shapore with -j option 5258a0f0d0SEitan Adler>>257 ulong !0 tar archive (old) 5358a0f0d0SEitan Adler!:mime application/x-tar 5458a0f0d0SEitan Adler!:ext tar 5558a0f0d0SEitan Adler# magic in newer, GNU, posix variants 5658a0f0d0SEitan Adler>257 string =ustar 5758a0f0d0SEitan Adler# 2 last char of magic and UStar version because string expression does not work 5858a0f0d0SEitan Adler# 2 space characters followed by a null for GNU variant 5958a0f0d0SEitan Adler>>261 ubelong =0x72202000 POSIX tar archive (GNU) 6058a0f0d0SEitan Adler!:mime application/x-gtar 6158a0f0d0SEitan Adler!:ext tar/gtar 6258a0f0d0SEitan Adler# UStar version with ASCII "00" 6358a0f0d0SEitan Adler>>261 ubelong 0x72003030 POSIX 6458a0f0d0SEitan Adler# gLOBAL and ExTENSION type only found in POSIX.1-2001 format 6558a0f0d0SEitan Adler>>>156 ubyte 0x67 \b.1-2001 6658a0f0d0SEitan Adler>>>156 ubyte 0x78 \b.1-2001 6758a0f0d0SEitan Adler>>>156 ubyte x tar archive 6858a0f0d0SEitan Adler!:mime application/x-ustar 6958a0f0d0SEitan Adler!:ext tar/ustar 7058a0f0d0SEitan Adler# version with 2 binary nuls embedded in Android Backup like com.android.settings.ab 7158a0f0d0SEitan Adler>>261 ubelong 0x72000000 tar archive (ustar) 7258a0f0d0SEitan Adler!:mime application/x-ustar 7358a0f0d0SEitan Adler!:ext tar/ustar 7458a0f0d0SEitan Adler# not seen ustar variant with garbish version 7558a0f0d0SEitan Adler>>261 default x tar archive (unknown ustar) 7658a0f0d0SEitan Adler!:mime application/x-ustar 7758a0f0d0SEitan Adler!:ext tar/ustar 7858a0f0d0SEitan Adler# type flag of 1st tar archive member 7958a0f0d0SEitan Adler#>156 ubyte x \b, %c-type 8058a0f0d0SEitan Adler>156 ubyte x 8158a0f0d0SEitan Adler>>156 ubyte 0 \b, file 8258a0f0d0SEitan Adler>>156 ubyte 0x30 \b, file 8358a0f0d0SEitan Adler>>156 ubyte 0x31 \b, hard link 8458a0f0d0SEitan Adler>>156 ubyte 0x32 \b, symlink 8558a0f0d0SEitan Adler>>156 ubyte 0x33 \b, char device 8658a0f0d0SEitan Adler>>156 ubyte 0x34 \b, block device 8758a0f0d0SEitan Adler>>156 ubyte 0x35 \b, directory 8858a0f0d0SEitan Adler>>156 ubyte 0x36 \b, fifo 8958a0f0d0SEitan Adler>>156 ubyte 0x37 \b, reserved 9058a0f0d0SEitan Adler>>156 ubyte 0x4c \b, long path 9158a0f0d0SEitan Adler>>156 ubyte 0x4d \b, multi volume 9258a0f0d0SEitan Adler>>156 ubyte 0x56 \b, volume 9358a0f0d0SEitan Adler>>156 ubyte 0x67 \b, global 9458a0f0d0SEitan Adler>>156 ubyte 0x78 \b, extension 9558a0f0d0SEitan Adler>>156 default x \b, type 9658a0f0d0SEitan Adler>>>156 ubyte x '%c' 9758a0f0d0SEitan Adler# name[100] 9858a0f0d0SEitan Adler>0 string >\0 %-.60s 9958a0f0d0SEitan Adler# mode mainly stored as an octal number in ASCII null or space terminated 10058a0f0d0SEitan Adler>100 string >\0 \b, mode %-.7s 10158a0f0d0SEitan Adler# user id mainly as octal numbers in ASCII null or space terminated 10258a0f0d0SEitan Adler>108 string >\0 \b, uid %-.7s 10358a0f0d0SEitan Adler# group id mainly as octal numbers in ASCII null or space terminated 10458a0f0d0SEitan Adler>116 string >\0 \b, gid %-.7s 10558a0f0d0SEitan Adler# size mainly as octal number in ASCII 10658a0f0d0SEitan Adler>124 ubyte <0x38 10758a0f0d0SEitan Adler>>124 string >\0 \b, size %-.12s 10858a0f0d0SEitan Adler# coding indicated by setting the high-order bit of the leftmost byte 10958a0f0d0SEitan Adler>124 ubyte >0xEF \b, size 0x 11058a0f0d0SEitan Adler>>124 ubyte !0xff \b%2.2x 11158a0f0d0SEitan Adler>>125 ubyte !0xff \b%2.2x 11258a0f0d0SEitan Adler>>126 ubyte !0xff \b%2.2x 11358a0f0d0SEitan Adler>>127 ubyte !0xff \b%2.2x 11458a0f0d0SEitan Adler>>128 ubyte !0xff \b%2.2x 11558a0f0d0SEitan Adler>>129 ubyte !0xff \b%2.2x 11658a0f0d0SEitan Adler>>130 ubyte !0xff \b%2.2x 11758a0f0d0SEitan Adler>>131 ubyte !0xff \b%2.2x 11858a0f0d0SEitan Adler>>132 ubyte !0xff \b%2.2x 11958a0f0d0SEitan Adler>>133 ubyte !0xff \b%2.2x 12058a0f0d0SEitan Adler>>134 ubyte !0xff \b%2.2x 12158a0f0d0SEitan Adler>>135 ubyte !0xff \b%2.2x 12258a0f0d0SEitan Adler# seconds since 0:0:0 1 jan 1970 UTC as octal number mainly in ASCII null or space terminated 12358a0f0d0SEitan Adler>136 string >\0 \b, seconds %-.11s 12458a0f0d0SEitan Adler# header checksum stored as an octal number in ASCII null or space terminated 12558a0f0d0SEitan Adler#>148 string x \b, cksum %.7s 12658a0f0d0SEitan Adler# linkname[100] 12758a0f0d0SEitan Adler>157 string >\0 \b, linkname %-.40s 12858a0f0d0SEitan Adler# additional fields for ustar 12958a0f0d0SEitan Adler>257 string =ustar 13058a0f0d0SEitan Adler# owner user name null terminated 13158a0f0d0SEitan Adler>>265 string >\0 \b, user %-.32s 13258a0f0d0SEitan Adler# group name null terminated 13358a0f0d0SEitan Adler>>297 string >\0 \b, group %-.32s 13458a0f0d0SEitan Adler# device major minor if not zero 13558a0f0d0SEitan Adler>>329 ubequad&0xCFCFCFCFcFcFcFdf !0 13658a0f0d0SEitan Adler>>>329 string x \b, devmaj %-.7s 13758a0f0d0SEitan Adler>>337 ubequad&0xCFCFCFCFcFcFcFdf !0 13858a0f0d0SEitan Adler>>>337 string x \b, devmin %-.7s 13958a0f0d0SEitan Adler# prefix[155] 14058a0f0d0SEitan Adler>>345 string >\0 \b, prefix %-.155s 14158a0f0d0SEitan Adler# old non ustar/POSIX tar 14258a0f0d0SEitan Adler>257 string !ustar 14358a0f0d0SEitan Adler>>508 string =tar\0 14458a0f0d0SEitan Adler# padding[255] in old star 14558a0f0d0SEitan Adler>>>257 string >\0 \b, padding: %-.40s 14658a0f0d0SEitan Adler>>508 default x 14758a0f0d0SEitan Adler# padding[255] in old tar sometimes comment field 14858a0f0d0SEitan Adler>>>257 string >\0 \b, comment: %-.40s 149b6cee71dSXin LI 150b6cee71dSXin LI# Incremental snapshot gnu-tar format from: 15148c779cdSXin LI# https://www.gnu.org/software/tar/manual/html_node/Snapshot-Files.html 152b6cee71dSXin LI0 string GNU\ tar- GNU tar incremental snapshot data 153b6cee71dSXin LI>&0 regex [0-9]\.[0-9]+-[0-9]+ version %s 154b6cee71dSXin LI 155b6cee71dSXin LI# cpio archives 156b6cee71dSXin LI# 157b6cee71dSXin LI# Yes, the top two "cpio archive" formats *are* supposed to just be "short". 158b6cee71dSXin LI# The idea is to indicate archives produced on machines with the same 159b6cee71dSXin LI# byte order as the machine running "file" with "cpio archive", and 160b6cee71dSXin LI# to indicate archives produced on machines with the opposite byte order 161b6cee71dSXin LI# from the machine running "file" with "byte-swapped cpio archive". 162b6cee71dSXin LI# 163b6cee71dSXin LI# The SVR4 "cpio(4)" hints that there are additional formats, but they 164b6cee71dSXin LI# are defined as "short"s; I think all the new formats are 165b6cee71dSXin LI# character-header formats and thus are strings, not numbers. 166b6cee71dSXin LI0 short 070707 cpio archive 167b6cee71dSXin LI!:mime application/x-cpio 168b6cee71dSXin LI0 short 0143561 byte-swapped cpio archive 169b6cee71dSXin LI!:mime application/x-cpio # encoding: swapped 170b6cee71dSXin LI0 string 070707 ASCII cpio archive (pre-SVR4 or odc) 171b6cee71dSXin LI0 string 070701 ASCII cpio archive (SVR4 with no CRC) 172b6cee71dSXin LI0 string 070702 ASCII cpio archive (SVR4 with CRC) 173b6cee71dSXin LI 174b6cee71dSXin LI# 175b6cee71dSXin LI# Various archive formats used by various versions of the "ar" 176b6cee71dSXin LI# command. 177b6cee71dSXin LI# 178b6cee71dSXin LI 179b6cee71dSXin LI# 180b6cee71dSXin LI# Original UNIX archive formats. 181b6cee71dSXin LI# They were written with binary values in host byte order, and 182b6cee71dSXin LI# the magic number was a host "int", which might have been 16 bits 183b6cee71dSXin LI# or 32 bits. We don't say "PDP-11" or "VAX", as there might have 184b6cee71dSXin LI# been ports to little-endian 16-bit-int or 32-bit-int platforms 185b6cee71dSXin LI# (x86?) using some of those formats; if none existed, feel free 186b6cee71dSXin LI# to use "PDP-11" for little-endian 16-bit and "VAX" for little-endian 187b6cee71dSXin LI# 32-bit. There might have been big-endian ports of that sort as 188b6cee71dSXin LI# well. 189b6cee71dSXin LI# 190b6cee71dSXin LI0 leshort 0177555 very old 16-bit-int little-endian archive 191b6cee71dSXin LI0 beshort 0177555 very old 16-bit-int big-endian archive 192b6cee71dSXin LI0 lelong 0177555 very old 32-bit-int little-endian archive 193b6cee71dSXin LI0 belong 0177555 very old 32-bit-int big-endian archive 194b6cee71dSXin LI 195b6cee71dSXin LI0 leshort 0177545 old 16-bit-int little-endian archive 196b6cee71dSXin LI>2 string __.SYMDEF random library 197b6cee71dSXin LI0 beshort 0177545 old 16-bit-int big-endian archive 198b6cee71dSXin LI>2 string __.SYMDEF random library 199b6cee71dSXin LI0 lelong 0177545 old 32-bit-int little-endian archive 200b6cee71dSXin LI>4 string __.SYMDEF random library 201b6cee71dSXin LI0 belong 0177545 old 32-bit-int big-endian archive 202b6cee71dSXin LI>4 string __.SYMDEF random library 203b6cee71dSXin LI 204b6cee71dSXin LI# 205b6cee71dSXin LI# From "pdp" (but why a 4-byte quantity?) 206b6cee71dSXin LI# 207b6cee71dSXin LI0 lelong 0x39bed PDP-11 old archive 208b6cee71dSXin LI0 lelong 0x39bee PDP-11 4.0 archive 209b6cee71dSXin LI 210b6cee71dSXin LI# 211b6cee71dSXin LI# XXX - what flavor of APL used this, and was it a variant of 212b6cee71dSXin LI# some ar archive format? It's similar to, but not the same 213b6cee71dSXin LI# as, the APL workspace magic numbers in pdp. 214b6cee71dSXin LI# 215b6cee71dSXin LI0 long 0100554 apl workspace 216b6cee71dSXin LI 217b6cee71dSXin LI# 218b6cee71dSXin LI# System V Release 1 portable(?) archive format. 219b6cee71dSXin LI# 220b6cee71dSXin LI0 string =<ar> System V Release 1 ar archive 221b6cee71dSXin LI!:mime application/x-archive 222b6cee71dSXin LI 223b6cee71dSXin LI# 224b6cee71dSXin LI# Debian package; it's in the portable archive format, and needs to go 225b6cee71dSXin LI# before the entry for regular portable archives, as it's recognized as 226b6cee71dSXin LI# a portable archive whose first member has a name beginning with 227b6cee71dSXin LI# "debian". 228b6cee71dSXin LI# 22948c779cdSXin LI# Update: Joerg Jenderek 23048c779cdSXin LI# URL: https://en.wikipedia.org/wiki/Deb_(file_format) 231b6cee71dSXin LI0 string =!<arch>\ndebian 23248c779cdSXin LI# https://manpages.debian.org/testing/dpkg/dpkg-split.1.en.html 23348c779cdSXin LI>14 string -split part of multipart Debian package 234b6cee71dSXin LI!:mime application/vnd.debian.binary-package 23548c779cdSXin LI# udeb is used for stripped down deb file 23648c779cdSXin LI!:ext deb/udeb 23748c779cdSXin LI>14 string -binary Debian binary package 238b6cee71dSXin LI!:mime application/vnd.debian.binary-package 23948c779cdSXin LI!:ext deb/udeb 24048c779cdSXin LI# This should not happen 24148c779cdSXin LI>14 default x Unknown Debian package 24248c779cdSXin LI# NL terminated version; for most Debian cases this is 2.0 or 2.1 for splitted 243b6cee71dSXin LI>68 string >\0 (format %s) 24448c779cdSXin LI#>68 string !2.0\n 24548c779cdSXin LI#>>68 string x (format %.3s) 24648c779cdSXin LI>68 string =2.0\n 24748c779cdSXin LI# 2nd archive name=control archive name like control.tar.gz or control.tar.xz 24848c779cdSXin LI>>72 string >\0 \b, with %.14s 24948c779cdSXin LI# look for 3rd archive name=data archive name like data.tar.{gz,xz,bz2,lzma} 25048c779cdSXin LI>>0 search/0x93e4f data.tar. \b, data compression 25148c779cdSXin LI# the above line only works if FILE_BYTES_MAX in ../../src/file.h is raised 25248c779cdSXin LI# for example like libreoffice-dev-doc_1%3a5.2.7-1+rpi1+deb9u3_all.deb 25348c779cdSXin LI>>>&0 string x %.4s 25448c779cdSXin LI# splitted debian package case 25548c779cdSXin LI>68 string =2.1\n 25648c779cdSXin LI# dpkg-1.18.25/dpkg-split/info.c 25748c779cdSXin LI# NL terminated ASCII package name like ckermit 25848c779cdSXin LI>>&0 string x \b, %s 25948c779cdSXin LI# NL terminated package version like 302-5.3 26048c779cdSXin LI>>>&1 string x %s 26148c779cdSXin LI# NL terminated MD5 checksum 26248c779cdSXin LI>>>>&1 string x \b, MD5 %s 26348c779cdSXin LI# NL terminated original package length 26448c779cdSXin LI>>>>>&1 string x \b, unsplitted size %s 26548c779cdSXin LI# NL terminated part length 266*d38c30c0SXin LI>>>>>>&1 string x \b, part length %s 26748c779cdSXin LI# NL terminated package part like n/m 26848c779cdSXin LI>>>>>>>&1 string x \b, part %s 26948c779cdSXin LI# NL terminated package architecture like armhf since dpkg 1.16.1 or later 27048c779cdSXin LI>>>>>>>>&1 string x \b, %s 271b6cee71dSXin LI 272b6cee71dSXin LI# 273b6cee71dSXin LI# MIPS archive; they're in the portable archive format, and need to go 274b6cee71dSXin LI# before the entry for regular portable archives, as it's recognized as 275b6cee71dSXin LI# a portable archive whose first member has a name beginning with 276b6cee71dSXin LI# "__________E". 277b6cee71dSXin LI# 278b6cee71dSXin LI0 string =!<arch>\n__________E MIPS archive 279b6cee71dSXin LI!:mime application/x-archive 280b6cee71dSXin LI>20 string U with MIPS Ucode members 281b6cee71dSXin LI>21 string L with MIPSEL members 282b6cee71dSXin LI>21 string B with MIPSEB members 283b6cee71dSXin LI>19 string L and an EL hash table 284b6cee71dSXin LI>19 string B and an EB hash table 285b6cee71dSXin LI>22 string X -- out of date 286b6cee71dSXin LI 287b6cee71dSXin LI# 288b6cee71dSXin LI# BSD/SVR2-and-later portable archive formats. 289b6cee71dSXin LI# 29048c779cdSXin LI# Update: Joerg Jenderek 29148c779cdSXin LI# URL: http://fileformats.archiveteam.org/wiki/AR 29248c779cdSXin LI# Reference: https://www.unix.com/man-page/opensolaris/3HEAD/ar.h/ 29348c779cdSXin LI# Note: Mach-O universal binary in ./cafebabe is dependent 29448c779cdSXin LI# TODO: unify current ar archive, MIPS archive, Debian package 29548c779cdSXin LI# distinguish BSD, SVR; 32, 64 bit; HP from other 32-bit SVR; 29648c779cdSXin LI# *.ar packages from *.a libraries. handle empty archive 2972dc4dbb9SEitan Adler0 string =!<arch>\n current ar archive 29848c779cdSXin LI# print first and possibly second ar_name[16] for debugging purpose 29948c779cdSXin LI#>8 string x \b, 1st "%.16s" 30048c779cdSXin LI#>68 string x \b, 2nd "%.16s" 301b6cee71dSXin LI!:mime application/x-archive 30248c779cdSXin LI# a in most case for libraries; lib for Microsoft libraries; ar else cases 30348c779cdSXin LI!:ext a/lib/ar 304b6cee71dSXin LI>8 string __.SYMDEF random library 30548c779cdSXin LI# first member with long marked name __.SYMDEF SORTED implies BSD library 306b6cee71dSXin LI>68 string __.SYMDEF\ SORTED random library 30748c779cdSXin LI# Reference: https://parisc.wiki.kernel.org/images-parisc/b/b2/Rad_11_0_32.pdf 30848c779cdSXin LI# "archive file" entry moved from ./hp 30948c779cdSXin LI# LST header system_id 0210h~PA-RISC 1.1,... identifies the target architecture 31048c779cdSXin LI# LST header a_magic 0619h~relocatable library 31148c779cdSXin LI>68 belong 0x020b0619 - PA-RISC1.0 relocatable library 31248c779cdSXin LI>68 belong 0x02100619 - PA-RISC1.1 relocatable library 31348c779cdSXin LI>68 belong 0x02110619 - PA-RISC1.2 relocatable library 31448c779cdSXin LI>68 belong 0x02140619 - PA-RISC2.0 relocatable library 31548c779cdSXin LI#EOF for common ar archives 316b6cee71dSXin LI 317b6cee71dSXin LI# 318b6cee71dSXin LI# "Thin" archive, as can be produced by GNU ar. 319b6cee71dSXin LI# 320b6cee71dSXin LI0 string =!<thin>\n thin archive with 321b6cee71dSXin LI>68 belong 0 no symbol entries 322b6cee71dSXin LI>68 belong 1 %d symbol entry 323b6cee71dSXin LI>68 belong >1 %d symbol entries 324b6cee71dSXin LI 32548c779cdSXin LI0 search/1 -h- Software Tools format archive text 32648c779cdSXin LI 327b6cee71dSXin LI# ARC archiver, from Daniel Quinlan (quinlan@yggdrasil.com) 328b6cee71dSXin LI# 329b6cee71dSXin LI# The first byte is the magic (0x1a), byte 2 is the compression type for 330b6cee71dSXin LI# the first file (0x01 through 0x09), and bytes 3 to 15 are the MS-DOS 331b6cee71dSXin LI# filename of the first file (null terminated). Since some types collide 332b6cee71dSXin LI# we only test some types on basis of frequency: 0x08 (83%), 0x09 (5%), 333b6cee71dSXin LI# 0x02 (5%), 0x03 (3%), 0x04 (2%), 0x06 (2%). 0x01 collides with terminfo. 334b6cee71dSXin LI0 lelong&0x8080ffff 0x0000081a ARC archive data, dynamic LZW 335b6cee71dSXin LI!:mime application/x-arc 336b6cee71dSXin LI0 lelong&0x8080ffff 0x0000091a ARC archive data, squashed 337b6cee71dSXin LI!:mime application/x-arc 338b6cee71dSXin LI0 lelong&0x8080ffff 0x0000021a ARC archive data, uncompressed 339b6cee71dSXin LI!:mime application/x-arc 340b6cee71dSXin LI0 lelong&0x8080ffff 0x0000031a ARC archive data, packed 341b6cee71dSXin LI!:mime application/x-arc 342b6cee71dSXin LI0 lelong&0x8080ffff 0x0000041a ARC archive data, squeezed 343b6cee71dSXin LI!:mime application/x-arc 344b6cee71dSXin LI0 lelong&0x8080ffff 0x0000061a ARC archive data, crunched 345b6cee71dSXin LI!:mime application/x-arc 346b6cee71dSXin LI# [JW] stuff taken from idarc, obviously ARC successors: 347b6cee71dSXin LI0 lelong&0x8080ffff 0x00000a1a PAK archive data 348b6cee71dSXin LI!:mime application/x-arc 349b6cee71dSXin LI0 lelong&0x8080ffff 0x0000141a ARC+ archive data 350b6cee71dSXin LI!:mime application/x-arc 351b6cee71dSXin LI0 lelong&0x8080ffff 0x0000481a HYP archive data 352b6cee71dSXin LI!:mime application/x-arc 353b6cee71dSXin LI 354b6cee71dSXin LI# Acorn archive formats (Disaster prone simpleton, m91dps@ecs.ox.ac.uk) 355b6cee71dSXin LI# I can't create either SPARK or ArcFS archives so I have not tested this stuff 356b6cee71dSXin LI# [GRR: the original entries collide with ARC, above; replaced with combined 357b6cee71dSXin LI# version (not tested)] 358b6cee71dSXin LI#0 byte 0x1a RISC OS archive (spark format) 359b6cee71dSXin LI0 string \032archive RISC OS archive (ArcFS format) 360b6cee71dSXin LI0 string Archive\000 RISC OS archive (ArcFS format) 361b6cee71dSXin LI 362b6cee71dSXin LI# All these were taken from idarc, many could not be verified. Unfortunately, 363b6cee71dSXin LI# there were many low-quality sigs, i.e. easy to trigger false positives. 364b6cee71dSXin LI# Please notify me of any real-world fishy/ambiguous signatures and I'll try 365b6cee71dSXin LI# to get my hands on the actual archiver and see if I find something better. [JW] 366b6cee71dSXin LI# probably many can be enhanced by finding some 0-byte or control char near the start 367b6cee71dSXin LI 368b6cee71dSXin LI# idarc calls this Crush/Uncompressed... *shrug* 369b6cee71dSXin LI0 string CRUSH Crush archive data 370b6cee71dSXin LI# Squeeze It (.sqz) 371b6cee71dSXin LI0 string HLSQZ Squeeze It archive data 372b6cee71dSXin LI# SQWEZ 373b6cee71dSXin LI0 string SQWEZ SQWEZ archive data 374b6cee71dSXin LI# HPack (.hpk) 375b6cee71dSXin LI0 string HPAK HPack archive data 376b6cee71dSXin LI# HAP 377b6cee71dSXin LI0 string \x91\x33HF HAP archive data 378b6cee71dSXin LI# MD/MDCD 379b6cee71dSXin LI0 string MDmd MDCD archive data 380b6cee71dSXin LI# LIM 381b6cee71dSXin LI0 string LIM\x1a LIM archive data 382b6cee71dSXin LI# SAR 383b6cee71dSXin LI3 string LH5 SAR archive data 384b6cee71dSXin LI# BSArc/BS2 385b6cee71dSXin LI0 string \212\3SB\020\0 BSArc/BS2 archive data 386b6cee71dSXin LI# Bethesda Softworks Archive (Oblivion) 387b6cee71dSXin LI0 string BSA\0 BSArc archive data 388b6cee71dSXin LI>4 lelong x version %d 389b6cee71dSXin LI# MAR 390b6cee71dSXin LI2 string =-ah MAR archive data 391b6cee71dSXin LI# ACB 392b6cee71dSXin LI#0 belong&0x00f800ff 0x00800000 ACB archive data 393b6cee71dSXin LI# CPZ 394b6cee71dSXin LI# TODO, this is what idarc says: 0 string \0\0\0 CPZ archive data 395b6cee71dSXin LI# JRC 396b6cee71dSXin LI0 string JRchive JRC archive data 397b6cee71dSXin LI# Quantum 398b6cee71dSXin LI0 string DS\0 Quantum archive data 399b6cee71dSXin LI# ReSOF 400b6cee71dSXin LI0 string PK\3\6 ReSOF archive data 401b6cee71dSXin LI# QuArk 402b6cee71dSXin LI0 string 7\4 QuArk archive data 403b6cee71dSXin LI# YAC 404b6cee71dSXin LI14 string YC YAC archive data 405b6cee71dSXin LI# X1 406b6cee71dSXin LI0 string X1 X1 archive data 407b6cee71dSXin LI0 string XhDr X1 archive data 408b6cee71dSXin LI# CDC Codec (.dqt) 409b6cee71dSXin LI0 belong&0xffffe000 0x76ff2000 CDC Codec archive data 410b6cee71dSXin LI# AMGC 411b6cee71dSXin LI0 string \xad6" AMGC archive data 412b6cee71dSXin LI# NuLIB 413b6cee71dSXin LI0 string N\xc3\xb5F\xc3\xa9lx\xc3\xa5 NuLIB archive data 414b6cee71dSXin LI# PakLeo 415b6cee71dSXin LI0 string LEOLZW PAKLeo archive data 416b6cee71dSXin LI# ChArc 417b6cee71dSXin LI0 string SChF ChArc archive data 418b6cee71dSXin LI# PSA 419b6cee71dSXin LI0 string PSA PSA archive data 420b6cee71dSXin LI# CrossePAC 421b6cee71dSXin LI0 string DSIGDCC CrossePAC archive data 422b6cee71dSXin LI# Freeze 423b6cee71dSXin LI0 string \x1f\x9f\x4a\x10\x0a Freeze archive data 424b6cee71dSXin LI# KBoom 425b6cee71dSXin LI0 string \xc2\xa8MP\xc2\xa8 KBoom archive data 426b6cee71dSXin LI# NSQ, must go after CDC Codec 427b6cee71dSXin LI0 string \x76\xff NSQ archive data 428b6cee71dSXin LI# DPA 429b6cee71dSXin LI0 string Dirk\ Paehl DPA archive data 430b6cee71dSXin LI# BA 431b6cee71dSXin LI# TODO: idarc says "bytes 0-2 == bytes 3-5" 432b6cee71dSXin LI# TTComp 4333e41d09dSXin LI# URL: http://fileformats.archiveteam.org/wiki/TTComp_archive 4343e41d09dSXin LI# Update: Joerg Jenderek 4353e41d09dSXin LI# GRR: line below is too general as it matches also Panorama database "TCDB 2003-10 demo.pan", others 4363e41d09dSXin LI0 string \0\6 4373e41d09dSXin LI# look for first keyword of Panorama database *.pan 4383e41d09dSXin LI>12 search/261 DESIGN 4393e41d09dSXin LI# skip keyword with low entropy 4403e41d09dSXin LI>12 default x TTComp archive, binary, 4K dictionary 4413e41d09dSXin LI# (version 5.25) labeled the above entry as "TTComp archive data" 442*d38c30c0SXin LI# From: Joerg Jenderek 443*d38c30c0SXin LI# URL: https://wiki.68kmla.org/DiskCopy_4.2_format_specification 444*d38c30c0SXin LI# reference: http://nulib.com/library/FTN.e00005.htm 445*d38c30c0SXin LI0x52 ubeshort 0x0100 446*d38c30c0SXin LI# test for disk size equal or above 400k 447*d38c30c0SXin LI>0x40 ubelong >409599 Apple DiskCopy 4.2 image 448*d38c30c0SXin LI#!:mime application/octet-stream 449*d38c30c0SXin LI!:apple dCpydImg 450*d38c30c0SXin LI!:ext image/dc42 451*d38c30c0SXin LI# image pascal name padded with NULs like Microsoft Mail 452*d38c30c0SXin LI>>00 pstring/B x %s 453*d38c30c0SXin LI# data size in bytes like 409600 454*d38c30c0SXin LI>>0x40 ubelong x \b, %u bytes 455*d38c30c0SXin LI# tag size in bytes 456*d38c30c0SXin LI>>0x44 ubelong >0 \b, 0x%x tag size 457*d38c30c0SXin LI# data checksum 458*d38c30c0SXin LI#>>0x48 ubelong x \b, 0x%x checksum 459*d38c30c0SXin LI# tag checksum 460*d38c30c0SXin LI#>>0x4c ubelong x \b, 0x%x tag checksum 461*d38c30c0SXin LI# disk encoding 462*d38c30c0SXin LI>>0x50 ubyte 0 \b, GCR CLV ssdd (400k) 463*d38c30c0SXin LI>>0x50 ubyte 1 \b, GCR CLV dsdd (800k) 464*d38c30c0SXin LI>>0x50 ubyte 2 \b, MFM CAV dsdd (720k) 465*d38c30c0SXin LI>>0x50 ubyte 3 \b, MFM CAV dshd (1440k) 466*d38c30c0SXin LI>>0x50 ubyte >3 \b, 0x%x encoding 467*d38c30c0SXin LI# format byte 468*d38c30c0SXin LI>>0x51 ubyte x \b, 0x%x format 469*d38c30c0SXin LI#>>0x54 ubequad x \b, data 0x%16.16llx 470b6cee71dSXin LI# ESP, could this conflict with Easy Software Products' (e.g.ESP ghostscript) documentation? 471b6cee71dSXin LI0 string ESP ESP archive data 472b6cee71dSXin LI# ZPack 473b6cee71dSXin LI0 string \1ZPK\1 ZPack archive data 474b6cee71dSXin LI# Sky 475b6cee71dSXin LI0 string \xbc\x40 Sky archive data 476b6cee71dSXin LI# UFA 477b6cee71dSXin LI0 string UFA UFA archive data 478b6cee71dSXin LI# Dry 479b6cee71dSXin LI0 string =-H2O DRY archive data 480b6cee71dSXin LI# FoxSQZ 481b6cee71dSXin LI0 string FOXSQZ FoxSQZ archive data 482b6cee71dSXin LI# AR7 483b6cee71dSXin LI0 string ,AR7 AR7 archive data 484b6cee71dSXin LI# PPMZ 485b6cee71dSXin LI0 string PPMZ PPMZ archive data 486b6cee71dSXin LI# MS Compress 48758a0f0d0SEitan Adler# Update: Joerg Jenderek 48858a0f0d0SEitan Adler# URL: http://fileformats.archiveteam.org/wiki/MS-DOS_installation_compression 48958a0f0d0SEitan Adler# Reference: https://hwiegman.home.xs4all.nl/fileformats/compress/szdd_kwaj_format.html 49058a0f0d0SEitan Adler# Note: use correct version of extracting tool like EXPAND, UNPACK, DECOMP or 7Z 49158a0f0d0SEitan Adler4 string \x88\xf0\x27 49258a0f0d0SEitan Adler# KWAJ variant 49358a0f0d0SEitan Adler>0 string KWAJ MS Compress archive data, KWAJ variant 49458a0f0d0SEitan Adler!:mime application/x-ms-compress-kwaj 49558a0f0d0SEitan Adler# extension not working in version 5.32 49658a0f0d0SEitan Adler# magic/Magdir/archive, 284: Warning: EXTENSION type ` ??_' has bad char '?' 49758a0f0d0SEitan Adler# file: line 284: Bad magic entry ' ??_' 49858a0f0d0SEitan Adler!:ext ??_ 49958a0f0d0SEitan Adler# compression method (0-4) 50058a0f0d0SEitan Adler>>8 uleshort x \b, %u method 50158a0f0d0SEitan Adler# offset of compressed data 50258a0f0d0SEitan Adler>>10 uleshort x \b, 0x%x offset 50358a0f0d0SEitan Adler#>>(10.s) uleshort x 50458a0f0d0SEitan Adler#>>>&-6 string x \b, TEST extension %-.3s 50558a0f0d0SEitan Adler# header flags to mark header extensions 50658a0f0d0SEitan Adler>>12 uleshort >0 \b, 0x%x flags 50758a0f0d0SEitan Adler# 4 bytes: decompressed length of file 50858a0f0d0SEitan Adler>>12 uleshort &0x01 50958a0f0d0SEitan Adler>>>14 ulelong x \b, original size: %u bytes 51058a0f0d0SEitan Adler# 2 bytes: unknown purpose 51158a0f0d0SEitan Adler# 2 bytes: length of unknown data + mentioned bytes 51258a0f0d0SEitan Adler# 1-9 bytes: null-terminated file name 51358a0f0d0SEitan Adler# 1-4 bytes: null-terminated file extension 51458a0f0d0SEitan Adler>>12 uleshort &0x08 51558a0f0d0SEitan Adler>>>12 uleshort ^0x01 51658a0f0d0SEitan Adler>>>>12 uleshort ^0x02 51758a0f0d0SEitan Adler>>>>>12 uleshort ^0x04 51858a0f0d0SEitan Adler>>>>>>12 uleshort ^0x10 51958a0f0d0SEitan Adler>>>>>>>14 string x \b, %-.8s 52058a0f0d0SEitan Adler>>>>>>12 uleshort &0x10 52158a0f0d0SEitan Adler>>>>>>>14 string x \b, %-.8s 52258a0f0d0SEitan Adler>>>>>>>>&1 string x \b.%-.3s 52358a0f0d0SEitan Adler>>>>>12 uleshort &0x04 52458a0f0d0SEitan Adler>>>>>>12 uleshort ^0x10 52558a0f0d0SEitan Adler>>>>>>>(14.s) uleshort x 52658a0f0d0SEitan Adler>>>>>>>>&14 string x \b, %-.8s 52758a0f0d0SEitan Adler>>>>>>12 uleshort &0x10 52858a0f0d0SEitan Adler>>>>>>>(14.s) uleshort x 52958a0f0d0SEitan Adler>>>>>>>>&14 string x \b, %-.8s 53058a0f0d0SEitan Adler>>>>>>>>>&1 string x \b.%-.3s 53158a0f0d0SEitan Adler>>>>12 uleshort &0x02 53258a0f0d0SEitan Adler>>>>>12 uleshort ^0x04 53358a0f0d0SEitan Adler>>>>>>12 uleshort ^0x10 53458a0f0d0SEitan Adler>>>>>>>16 string x \b, %-.8s 53558a0f0d0SEitan Adler>>>>>>12 uleshort &0x10 53658a0f0d0SEitan Adler>>>>>>>16 string x \b, %-.8s 53758a0f0d0SEitan Adler>>>>>>>>&1 string x \b.%-.3s 53858a0f0d0SEitan Adler>>>>>12 uleshort &0x04 53958a0f0d0SEitan Adler>>>>>>12 uleshort ^0x10 54058a0f0d0SEitan Adler>>>>>>>(16.s) uleshort x 54158a0f0d0SEitan Adler>>>>>>>>&16 string x \b, %-.8s 54258a0f0d0SEitan Adler>>>>>>12 uleshort &0x10 54358a0f0d0SEitan Adler>>>>>>>(16.s) uleshort x 54458a0f0d0SEitan Adler>>>>>>>&16 string x %-.8s 54558a0f0d0SEitan Adler>>>>>>>>&1 string x \b.%-.3s 54658a0f0d0SEitan Adler>>>12 uleshort &0x01 54758a0f0d0SEitan Adler>>>>12 uleshort ^0x02 54858a0f0d0SEitan Adler>>>>>12 uleshort ^0x04 54958a0f0d0SEitan Adler>>>>>>12 uleshort ^0x10 55058a0f0d0SEitan Adler>>>>>>>18 string x \b, %-.8s 55158a0f0d0SEitan Adler>>>>>>12 uleshort &0x10 55258a0f0d0SEitan Adler>>>>>>>18 string x \b, %-.8s 55358a0f0d0SEitan Adler>>>>>>>>&1 string x \b.%-.3s 55458a0f0d0SEitan Adler>>>>>12 uleshort &0x04 55558a0f0d0SEitan Adler>>>>>>12 uleshort ^0x10 55658a0f0d0SEitan Adler>>>>>>>(18.s) uleshort x 55758a0f0d0SEitan Adler>>>>>>>>&18 string x \b, %-.8s 55858a0f0d0SEitan Adler>>>>>>12 uleshort &0x10 55958a0f0d0SEitan Adler>>>>>>>(18.s) uleshort x 56058a0f0d0SEitan Adler>>>>>>>>&18 string x \b, %-.8s 56158a0f0d0SEitan Adler>>>>>>>>>&1 string x \b.%-.3s 56258a0f0d0SEitan Adler>>>>12 uleshort &0x02 56358a0f0d0SEitan Adler>>>>>12 uleshort ^0x04 56458a0f0d0SEitan Adler>>>>>>12 uleshort ^0x10 56558a0f0d0SEitan Adler>>>>>>>20 string x \b, %-.8s 56658a0f0d0SEitan Adler>>>>>>12 uleshort &0x10 56758a0f0d0SEitan Adler>>>>>>>20 string x \b, %-.8s 56858a0f0d0SEitan Adler>>>>>>>>&1 string x \b.%-.3s 56958a0f0d0SEitan Adler>>>>>12 uleshort &0x04 57058a0f0d0SEitan Adler>>>>>>12 uleshort ^0x10 57158a0f0d0SEitan Adler>>>>>>>(20.s) uleshort x 57258a0f0d0SEitan Adler>>>>>>>>&20 string x \b, %-.8s 57358a0f0d0SEitan Adler>>>>>>12 uleshort &0x10 57458a0f0d0SEitan Adler>>>>>>>(20.s) uleshort x 57558a0f0d0SEitan Adler>>>>>>>>&20 string x \b, %-.8s 57658a0f0d0SEitan Adler>>>>>>>>>&1 string x \b.%-.3s 57758a0f0d0SEitan Adler# 2 bytes: length of data + mentioned bytes 57858a0f0d0SEitan Adler# 57958a0f0d0SEitan Adler# SZDD variant Haruhiko Okumura's LZSS or 7z type MsLZ 58058a0f0d0SEitan Adler>0 string SZDD MS Compress archive data, SZDD variant 58158a0f0d0SEitan Adler!:mime application/x-ms-compress-szdd 58258a0f0d0SEitan Adler!:ext ??_ 58358a0f0d0SEitan Adler# The character missing from the end of the filename (0=unknown) 58458a0f0d0SEitan Adler>>9 string >\0 \b, %-.1s is last character of original name 58558a0f0d0SEitan Adler# https://www.betaarchive.com/forum/viewtopic.php?t=26161 58658a0f0d0SEitan Adler# Compression mode: "A" (0x41) found but sometimes "B" in Windows 3.1 builds 026 and 034e 58758a0f0d0SEitan Adler>>8 string !A \b, %-.1s method 58858a0f0d0SEitan Adler>>10 ulelong >0 \b, original size: %u bytes 58958a0f0d0SEitan Adler# QBasic SZDD variant 59058a0f0d0SEitan Adler3 string \x88\xf0\x27 59158a0f0d0SEitan Adler>0 string SZ\x20 MS Compress archive data, QBasic variant 59258a0f0d0SEitan Adler!:mime application/x-ms-compress-sz 59358a0f0d0SEitan Adler!:ext ??$ 59458a0f0d0SEitan Adler>>8 ulelong >0 \b, original size: %u bytes 59558a0f0d0SEitan Adler 596b6cee71dSXin LI# MP3 (archiver, not lossy audio compression) 597b6cee71dSXin LI0 string MP3\x1a MP3-Archiver archive data 598b6cee71dSXin LI# ZET 599b6cee71dSXin LI0 string OZ\xc3\x9d ZET archive data 600b6cee71dSXin LI# TSComp 601b6cee71dSXin LI0 string \x65\x5d\x13\x8c\x08\x01\x03\x00 TSComp archive data 602b6cee71dSXin LI# ARQ 603b6cee71dSXin LI0 string gW\4\1 ARQ archive data 604b6cee71dSXin LI# Squash 605b6cee71dSXin LI3 string OctSqu Squash archive data 606b6cee71dSXin LI# Terse 607b6cee71dSXin LI0 string \5\1\1\0 Terse archive data 608b6cee71dSXin LI# PUCrunch 609b6cee71dSXin LI0 string \x01\x08\x0b\x08\xef\x00\x9e\x32\x30\x36\x31 PUCrunch archive data 610b6cee71dSXin LI# UHarc 611b6cee71dSXin LI0 string UHA UHarc archive data 612b6cee71dSXin LI# ABComp 613b6cee71dSXin LI0 string \2AB ABComp archive data 614b6cee71dSXin LI0 string \3AB2 ABComp archive data 615b6cee71dSXin LI# CMP 616b6cee71dSXin LI0 string CO\0 CMP archive data 617b6cee71dSXin LI# Splint 618b6cee71dSXin LI0 string \x93\xb9\x06 Splint archive data 619b6cee71dSXin LI# InstallShield 620b6cee71dSXin LI0 string \x13\x5d\x65\x8c InstallShield Z archive Data 621b6cee71dSXin LI# Gather 622b6cee71dSXin LI1 string GTH Gather archive data 623b6cee71dSXin LI# BOA 624b6cee71dSXin LI0 string BOA BOA archive data 625b6cee71dSXin LI# RAX 626b6cee71dSXin LI0 string ULEB\xa RAX archive data 627b6cee71dSXin LI# Xtreme 628b6cee71dSXin LI0 string ULEB\0 Xtreme archive data 629b6cee71dSXin LI# Pack Magic 630b6cee71dSXin LI0 string @\xc3\xa2\1\0 Pack Magic archive data 631b6cee71dSXin LI# BTS 632b6cee71dSXin LI0 belong&0xfeffffff 0x1a034465 BTS archive data 633b6cee71dSXin LI# ELI 5750 634b6cee71dSXin LI0 string Ora\ ELI 5750 archive data 635b6cee71dSXin LI# QFC 636b6cee71dSXin LI0 string \x1aFC\x1a QFC archive data 637b6cee71dSXin LI0 string \x1aQF\x1a QFC archive data 638b6cee71dSXin LI# PRO-PACK 639b6cee71dSXin LI0 string RNC PRO-PACK archive data 640b6cee71dSXin LI# 777 641b6cee71dSXin LI0 string 777 777 archive data 642b6cee71dSXin LI# LZS221 643b6cee71dSXin LI0 string sTaC LZS221 archive data 644b6cee71dSXin LI# HPA 645b6cee71dSXin LI0 string HPA HPA archive data 646b6cee71dSXin LI# Arhangel 647b6cee71dSXin LI0 string LG Arhangel archive data 648b6cee71dSXin LI# EXP1, uses bzip2 649b6cee71dSXin LI0 string 0123456789012345BZh EXP1 archive data 650b6cee71dSXin LI# IMP 651b6cee71dSXin LI0 string IMP\xa IMP archive data 652b6cee71dSXin LI# NRV 653b6cee71dSXin LI0 string \x00\x9E\x6E\x72\x76\xFF NRV archive data 654b6cee71dSXin LI# Squish 655b6cee71dSXin LI0 string \x73\xb2\x90\xf4 Squish archive data 656b6cee71dSXin LI# Par 657b6cee71dSXin LI0 string PHILIPP Par archive data 658b6cee71dSXin LI0 string PAR Par archive data 659b6cee71dSXin LI# HIT 660b6cee71dSXin LI0 string UB HIT archive data 661b6cee71dSXin LI# SBX 662b6cee71dSXin LI0 belong&0xfffff000 0x53423000 SBX archive data 663b6cee71dSXin LI# NaShrink 664b6cee71dSXin LI0 string NSK NaShrink archive data 665b6cee71dSXin LI# SAPCAR 666b6cee71dSXin LI0 string #\ CAR\ archive\ header SAPCAR archive data 667b6cee71dSXin LI0 string CAR\ 2.00RG SAPCAR archive data 668b6cee71dSXin LI# Disintegrator 669b6cee71dSXin LI0 string DST Disintegrator archive data 670b6cee71dSXin LI# ASD 671b6cee71dSXin LI0 string ASD ASD archive data 672b6cee71dSXin LI# InstallShield CAB 673b6cee71dSXin LI0 string ISc( InstallShield CAB 674b6cee71dSXin LI# TOP4 675b6cee71dSXin LI0 string T4\x1a TOP4 archive data 676b6cee71dSXin LI# BatComp left out: sig looks like COM executable 677b6cee71dSXin LI# so TODO: get real 4dos batcomp file and find sig 678b6cee71dSXin LI# BlakHole 679b6cee71dSXin LI0 string BH\5\7 BlakHole archive data 680b6cee71dSXin LI# BIX 681b6cee71dSXin LI0 string BIX0 BIX archive data 682b6cee71dSXin LI# ChiefLZA 683b6cee71dSXin LI0 string ChfLZ ChiefLZA archive data 684b6cee71dSXin LI# Blink 685b6cee71dSXin LI0 string Blink Blink archive data 686b6cee71dSXin LI# Logitech Compress 687b6cee71dSXin LI0 string \xda\xfa Logitech Compress archive data 688b6cee71dSXin LI# ARS-Sfx (FIXME: really a SFX? then goto COM/EXE) 689b6cee71dSXin LI1 string (C)\ STEPANYUK ARS-Sfx archive data 690b6cee71dSXin LI# AKT/AKT32 691b6cee71dSXin LI0 string AKT32 AKT32 archive data 692b6cee71dSXin LI0 string AKT AKT archive data 693b6cee71dSXin LI# NPack 694b6cee71dSXin LI0 string MSTSM NPack archive data 695b6cee71dSXin LI# PFT 696b6cee71dSXin LI0 string \0\x50\0\x14 PFT archive data 697b6cee71dSXin LI# SemOne 698b6cee71dSXin LI0 string SEM SemOne archive data 699b6cee71dSXin LI# PPMD 700b6cee71dSXin LI0 string \x8f\xaf\xac\x84 PPMD archive data 701b6cee71dSXin LI# FIZ 702b6cee71dSXin LI0 string FIZ FIZ archive data 703b6cee71dSXin LI# MSXiE 704b6cee71dSXin LI0 belong&0xfffff0f0 0x4d530000 MSXiE archive data 705b6cee71dSXin LI# DeepFreezer 706b6cee71dSXin LI0 belong&0xfffffff0 0x797a3030 DeepFreezer archive data 707b6cee71dSXin LI# DC 708b6cee71dSXin LI0 string =<DC- DC archive data 709b6cee71dSXin LI# TPac 710b6cee71dSXin LI0 string \4TPAC\3 TPac archive data 711b6cee71dSXin LI# Ai 712b6cee71dSXin LI0 string Ai\1\1\0 Ai archive data 713b6cee71dSXin LI0 string Ai\1\0\0 Ai archive data 714b6cee71dSXin LI# Ai32 715b6cee71dSXin LI0 string Ai\2\0 Ai32 archive data 716b6cee71dSXin LI0 string Ai\2\1 Ai32 archive data 717b6cee71dSXin LI# SBC 718b6cee71dSXin LI0 string SBC SBC archive data 719b6cee71dSXin LI# Ybs 720b6cee71dSXin LI0 string YBS Ybs archive data 721b6cee71dSXin LI# DitPack 722b6cee71dSXin LI0 string \x9e\0\0 DitPack archive data 723b6cee71dSXin LI# DMS 724b6cee71dSXin LI0 string DMS! DMS archive data 725b6cee71dSXin LI# EPC 726b6cee71dSXin LI0 string \x8f\xaf\xac\x8c EPC archive data 727b6cee71dSXin LI# VSARC 728b6cee71dSXin LI0 string VS\x1a VSARC archive data 729b6cee71dSXin LI# PDZ 730b6cee71dSXin LI0 string PDZ PDZ archive data 731b6cee71dSXin LI# ReDuq 732b6cee71dSXin LI0 string rdqx ReDuq archive data 733b6cee71dSXin LI# GCA 734b6cee71dSXin LI0 string GCAX GCA archive data 735b6cee71dSXin LI# PPMN 736b6cee71dSXin LI0 string pN PPMN archive data 737b6cee71dSXin LI# WinImage 738b6cee71dSXin LI3 string WINIMAGE WinImage archive data 739b6cee71dSXin LI# Compressia 740b6cee71dSXin LI0 string CMP0CMP Compressia archive data 741b6cee71dSXin LI# UHBC 742b6cee71dSXin LI0 string UHB UHBC archive data 743b6cee71dSXin LI# WinHKI 744b6cee71dSXin LI0 string \x61\x5C\x04\x05 WinHKI archive data 745b6cee71dSXin LI# WWPack data file 746b6cee71dSXin LI0 string WWP WWPack archive data 747b6cee71dSXin LI# BSN (BSA, PTS-DOS) 748b6cee71dSXin LI0 string \xffBSG BSN archive data 749b6cee71dSXin LI1 string \xffBSG BSN archive data 750b6cee71dSXin LI3 string \xffBSG BSN archive data 751b6cee71dSXin LI1 string \0\xae\2 BSN archive data 752b6cee71dSXin LI1 string \0\xae\3 BSN archive data 753b6cee71dSXin LI1 string \0\xae\7 BSN archive data 754b6cee71dSXin LI# AIN 755b6cee71dSXin LI0 string \x33\x18 AIN archive data 756b6cee71dSXin LI0 string \x33\x17 AIN archive data 7579ce06829SXin LI# XPA32 test moved and merged with XPA by Joerg Jenderek at Sep 2015 758b6cee71dSXin LI# SZip (TODO: doesn't catch all versions) 759b6cee71dSXin LI0 string SZ\x0a\4 SZip archive data 760b6cee71dSXin LI# XPack DiskImage 7619ce06829SXin LI# *.XDI updated by Joerg Jenderek Sep 2015 7629ce06829SXin LI# ftp://ftp.sac.sk/pub/sac/pack/0index.txt 7639ce06829SXin LI# GRR: this test is still too general as it catches also text files starting with jm 7649ce06829SXin LI0 string jm 7659ce06829SXin LI# only found examples with this additional characteristic 2 bytes 7669ce06829SXin LI>2 string \x2\x4 Xpack DiskImage archive data 7679ce06829SXin LI#!:ext xdi 768b6cee71dSXin LI# XPack Data 7699ce06829SXin LI# *.xpa updated by Joerg Jenderek Sep 2015 7709ce06829SXin LI# ftp://ftp.elf.stuba.sk/pub/pc/pack/ 7719ce06829SXin LI0 string xpa XPA 7729ce06829SXin LI!:ext xpa 7739ce06829SXin LI# XPA32 7749ce06829SXin LI# ftp://ftp.elf.stuba.sk/pub/pc/pack/xpa32.zip 7759ce06829SXin LI# created by XPA32.EXE version 1.0.2 for Windows 7769ce06829SXin LI>0 string xpa\0\1 \b32 archive data 7779ce06829SXin LI# created by XPACK.COM version 1.67m or 1.67r with short 0x1800 7789ce06829SXin LI>3 ubeshort !0x0001 \bck archive data 779b6cee71dSXin LI# XPack Single Data 7809ce06829SXin LI# changed by Joerg Jenderek Sep 2015 back to like in version 5.12 7819ce06829SXin LI# letter 'I'+ acute accent is equivalent to \xcd 7829ce06829SXin LI0 string \xcd\ jm Xpack single archive data 7839ce06829SXin LI#!:mime application/x-xpa-compressed 7849ce06829SXin LI!:ext xpa 785b6cee71dSXin LI 786b6cee71dSXin LI# TODO: missing due to unknown magic/magic at end of file: 787b6cee71dSXin LI#DWC 788b6cee71dSXin LI#ARG 789b6cee71dSXin LI#ZAR 790b6cee71dSXin LI#PC/3270 791b6cee71dSXin LI#InstallIt 792b6cee71dSXin LI#RKive 793b6cee71dSXin LI#RK 794b6cee71dSXin LI#XPack Diskimage 795b6cee71dSXin LI 796b6cee71dSXin LI# These were inspired by idarc, but actually verified 797b6cee71dSXin LI# Dzip archiver (.dz) 79858a0f0d0SEitan Adler# Update: Joerg Jenderek 79958a0f0d0SEitan Adler# URL: http://speeddemosarchive.com/dzip/ 80058a0f0d0SEitan Adler# reference: http://speeddemosarchive.com/dzip/dz29src.zip/main.c 80158a0f0d0SEitan Adler# GRR: line below is too general as it matches also ASCII texts like Doszip commander help dz.txt 80258a0f0d0SEitan Adler0 string DZ 80358a0f0d0SEitan Adler# latest version is 2.9 dated 7 may 2003 80458a0f0d0SEitan Adler>2 byte <4 Dzip archive data 80558a0f0d0SEitan Adler!:mime application/x-dzip 80658a0f0d0SEitan Adler!:ext dz 80758a0f0d0SEitan Adler>>2 byte x \b, version %i 80858a0f0d0SEitan Adler>>3 byte x \b.%i 80958a0f0d0SEitan Adler>>4 ulelong x \b, offset 0x%x 81058a0f0d0SEitan Adler>>8 ulelong x \b, %u files 811b6cee71dSXin LI# ZZip archiver (.zz) 812b6cee71dSXin LI0 string ZZ\ \0\0 ZZip archive data 813b6cee71dSXin LI0 string ZZ0 ZZip archive data 814b6cee71dSXin LI# PAQ archiver (.paq) 815b6cee71dSXin LI0 string \xaa\x40\x5f\x77\x1f\xe5\x82\x0d PAQ archive data 816b6cee71dSXin LI0 string PAQ PAQ archive data 817b6cee71dSXin LI>3 byte&0xf0 0x30 818b6cee71dSXin LI>>3 byte x (v%c) 819b6cee71dSXin LI# JAR archiver (.j), this is the successor to ARJ, not Java's JAR (which is essentially ZIP) 820b6cee71dSXin LI0xe string \x1aJar\x1b JAR (ARJ Software, Inc.) archive data 821b6cee71dSXin LI0 string JARCS JAR (ARJ Software, Inc.) archive data 822b6cee71dSXin LI 823b6cee71dSXin LI# ARJ archiver (jason@jarthur.Claremont.EDU) 824b6cee71dSXin LI0 leshort 0xea60 ARJ archive data 825b6cee71dSXin LI!:mime application/x-arj 826b6cee71dSXin LI>5 byte x \b, v%d, 827b6cee71dSXin LI>8 byte &0x04 multi-volume, 828b6cee71dSXin LI>8 byte &0x10 slash-switched, 829b6cee71dSXin LI>8 byte &0x20 backup, 830b6cee71dSXin LI>34 string x original name: %s, 831b6cee71dSXin LI>7 byte 0 os: MS-DOS 832b6cee71dSXin LI>7 byte 1 os: PRIMOS 833b6cee71dSXin LI>7 byte 2 os: Unix 834b6cee71dSXin LI>7 byte 3 os: Amiga 835b6cee71dSXin LI>7 byte 4 os: Macintosh 836b6cee71dSXin LI>7 byte 5 os: OS/2 837b6cee71dSXin LI>7 byte 6 os: Apple ][ GS 838b6cee71dSXin LI>7 byte 7 os: Atari ST 839b6cee71dSXin LI>7 byte 8 os: NeXT 840b6cee71dSXin LI>7 byte 9 os: VAX/VMS 841b6cee71dSXin LI>3 byte >0 %d] 842b6cee71dSXin LI# [JW] idarc says this is also possible 843b6cee71dSXin LI2 leshort 0xea60 ARJ archive data 844b6cee71dSXin LI 845b6cee71dSXin LI# HA archiver (Greg Roelofs, newt@uchicago.edu) 846b6cee71dSXin LI# This is a really bad format. A file containing HAWAII will match this... 847b6cee71dSXin LI#0 string HA HA archive data, 848b6cee71dSXin LI#>2 leshort =1 1 file, 849b6cee71dSXin LI#>2 leshort >1 %hu files, 850b6cee71dSXin LI#>4 byte&0x0f =0 first is type CPY 851b6cee71dSXin LI#>4 byte&0x0f =1 first is type ASC 852b6cee71dSXin LI#>4 byte&0x0f =2 first is type HSC 853b6cee71dSXin LI#>4 byte&0x0f =0x0e first is type DIR 854b6cee71dSXin LI#>4 byte&0x0f =0x0f first is type SPECIAL 855b6cee71dSXin LI# suggestion: at least identify small archives (<1024 files) 856b6cee71dSXin LI0 belong&0xffff00fc 0x48410000 HA archive data 857b6cee71dSXin LI>2 leshort =1 1 file, 858b6cee71dSXin LI>2 leshort >1 %u files, 859b6cee71dSXin LI>4 byte&0x0f =0 first is type CPY 860b6cee71dSXin LI>4 byte&0x0f =1 first is type ASC 861b6cee71dSXin LI>4 byte&0x0f =2 first is type HSC 862b6cee71dSXin LI>4 byte&0x0f =0x0e first is type DIR 863b6cee71dSXin LI>4 byte&0x0f =0x0f first is type SPECIAL 864b6cee71dSXin LI 865b6cee71dSXin LI# HPACK archiver (Peter Gutmann, pgut1@cs.aukuni.ac.nz) 866b6cee71dSXin LI0 string HPAK HPACK archive data 867b6cee71dSXin LI 868b6cee71dSXin LI# JAM Archive volume format, by Dmitry.Kohmanyuk@UA.net 869b6cee71dSXin LI0 string \351,\001JAM\ JAM archive, 870b6cee71dSXin LI>7 string >\0 version %.4s 871b6cee71dSXin LI>0x26 byte =0x27 - 872b6cee71dSXin LI>>0x2b string >\0 label %.11s, 873b6cee71dSXin LI>>0x27 lelong x serial %08x, 874b6cee71dSXin LI>>0x36 string >\0 fstype %.8s 875b6cee71dSXin LI 876b6cee71dSXin LI# LHARC/LHA archiver (Greg Roelofs, newt@uchicago.edu) 8773e41d09dSXin LI# Update: Joerg Jenderek 8783e41d09dSXin LI# URL: https://en.wikipedia.org/wiki/LHA_(file_format) 87948c779cdSXin LI# Reference: https://web.archive.org/web/20021005080911/http://www.osirusoft.com/joejared/lzhformat.html 8803e41d09dSXin LI# 8813e41d09dSXin LI# check and display information of lharc (LHa,PMarc) file 8823e41d09dSXin LI0 name lharc-file 8833e41d09dSXin LI# check 1st character of method id like -lz4- -lh5- or -pm2- 8843e41d09dSXin LI>2 string - 8853e41d09dSXin LI# check 5th character of method id 8863e41d09dSXin LI>>6 string - 8873e41d09dSXin LI# check header level 0 1 2 3 8883e41d09dSXin LI>>>20 ubyte <4 8893e41d09dSXin LI# check 2nd, 3th and 4th character of method id 8903e41d09dSXin LI>>>>3 regex \^(lh[0-9a-ex]|lz[s2-8]|pm[012]|pc1) \b 8913e41d09dSXin LI!:mime application/x-lzh-compressed 8923e41d09dSXin LI# creator type "LHA " 8933e41d09dSXin LI!:apple ????LHA 8943e41d09dSXin LI# display archive type name like "LHa/LZS archive data" or "LArc archive" 8953e41d09dSXin LI>>>>>2 string -lz \b 8963e41d09dSXin LI!:ext lzs 8973e41d09dSXin LI# already known -lzs- -lz4- -lz5- with old names 8983e41d09dSXin LI>>>>>>2 string -lzs LHa/LZS archive data 8993e41d09dSXin LI>>>>>>3 regex \^lz[45] LHarc 1.x archive data 9003e41d09dSXin LI# missing -lz?- with wikipedia names 9013e41d09dSXin LI>>>>>>3 regex \^lz[2378] LArc archive 9023e41d09dSXin LI# display archive type name like "LHa (2.x) archive data" 9033e41d09dSXin LI>>>>>2 string -lh \b 9043e41d09dSXin LI# already known -lh0- -lh1- -lh2- -lh3- -lh4- -lh5- -lh6- -lh7- -lhd- variants with old names 9053e41d09dSXin LI>>>>>>3 regex \^lh[01] LHarc 1.x/ARX archive data 9063e41d09dSXin LI# LHice archiver use ".ICE" as name extension instead usual one ".lzh" 9073e41d09dSXin LI# FOOBAR archiver use ".foo" as name extension instead usual one 9083e41d09dSXin LI# "Florain Orjanov's and Olga Bachetska's ARchiver" not found at the moment 9093e41d09dSXin LI>>>>>>>2 string -lh1 \b 9103e41d09dSXin LI!:ext lha/lzh/ice 9113e41d09dSXin LI>>>>>>3 regex \^lh[23d] LHa 2.x? archive data 9123e41d09dSXin LI>>>>>>3 regex \^lh[7] LHa (2.x)/LHark archive data 9133e41d09dSXin LI>>>>>>3 regex \^lh[456] LHa (2.x) archive data 9143e41d09dSXin LI>>>>>>>2 string -lh5 \b 9153e41d09dSXin LI# https://en.wikipedia.org/wiki/BIOS 9163e41d09dSXin LI# Some mainboard BIOS like Award use LHa compression. So archives with unusal extension are found like 9173e41d09dSXin LI# bios.rom , kd7_v14.bin, 1010.004, ... 9183e41d09dSXin LI!:ext lha/lzh/rom/bin 9193e41d09dSXin LI# missing -lh?- variants (Joe Jared) 9203e41d09dSXin LI>>>>>>3 regex \^lh[89a-ce] LHa (Joe Jared) archive 9213e41d09dSXin LI# UNLHA32 2.67a 9223e41d09dSXin LI>>>>>>2 string -lhx LHa (UNLHA32) archive 9233e41d09dSXin LI# lha archives with standard file name extensions ".lha" ".lzh" 9243e41d09dSXin LI>>>>>>3 regex !\^(lh1|lh5) \b 9253e41d09dSXin LI!:ext lha/lzh 9263e41d09dSXin LI# this should not happen if all -lh variants are described 9273e41d09dSXin LI>>>>>>2 default x LHa (unknown) archive 9283e41d09dSXin LI#!:ext lha 9293e41d09dSXin LI# PMarc 9303e41d09dSXin LI>>>>>3 regex \^pm[012] PMarc archive data 9313e41d09dSXin LI!:ext pma 9323e41d09dSXin LI# append method id without leading and trailing minus character 9333e41d09dSXin LI>>>>>3 string x [%3.3s] 9343e41d09dSXin LI>>>>>>0 use lharc-header 9353e41d09dSXin LI# 9363e41d09dSXin LI# check and display information of lharc header 9373e41d09dSXin LI0 name lharc-header 9383e41d09dSXin LI# header size 0x4 , 0x1b-0x61 9393e41d09dSXin LI>0 ubyte x 9403e41d09dSXin LI# compressed data size != compressed file size 9413e41d09dSXin LI#>7 ulelong x \b, data size %d 9423e41d09dSXin LI# attribute: 0x2~?? 0x10~symlink|target 0x20~normal 9433e41d09dSXin LI#>19 ubyte x \b, 19_0x%x 9443e41d09dSXin LI# level identifier 0 1 2 3 9453e41d09dSXin LI#>20 ubyte x \b, level %d 9463e41d09dSXin LI# time stamp 9473e41d09dSXin LI#>15 ubelong x DATE 0x%8.8x 9483e41d09dSXin LI# OS ID for level 1 9493e41d09dSXin LI>20 ubyte 1 9503e41d09dSXin LI# 0x20 types find for *.rom files 9513e41d09dSXin LI>>(21.b+24) ubyte <0x21 \b, 0x%x OS 9523e41d09dSXin LI# ascii type like M for MSDOS 9533e41d09dSXin LI>>(21.b+24) ubyte >0x20 \b, '%c' OS 9543e41d09dSXin LI# OS ID for level 2 9553e41d09dSXin LI>20 ubyte 2 9563e41d09dSXin LI#>>23 ubyte x \b, OS ID 0x%x 9573e41d09dSXin LI>>23 ubyte <0x21 \b, 0x%x OS 9583e41d09dSXin LI>>23 ubyte >0x20 \b, '%c' OS 9593e41d09dSXin LI# filename only for level 0 and 1 9603e41d09dSXin LI>20 ubyte <2 9613e41d09dSXin LI# length of filename 9623e41d09dSXin LI>>21 ubyte >0 \b, with 9633e41d09dSXin LI# filename 9643e41d09dSXin LI>>>21 pstring x "%s" 9653e41d09dSXin LI# 9663e41d09dSXin LI#2 string -lh0- LHarc 1.x/ARX archive data [lh0] 9673e41d09dSXin LI#!:mime application/x-lharc 9683e41d09dSXin LI2 string -lh0- 9693e41d09dSXin LI>0 use lharc-file 9703e41d09dSXin LI#2 string -lh1- LHarc 1.x/ARX archive data [lh1] 9713e41d09dSXin LI#!:mime application/x-lharc 9723e41d09dSXin LI2 string -lh1- 9733e41d09dSXin LI>0 use lharc-file 9743e41d09dSXin LI# NEW -lz2- ... -lz8- 9753e41d09dSXin LI2 string -lz2- 9763e41d09dSXin LI>0 use lharc-file 9773e41d09dSXin LI2 string -lz3- 9783e41d09dSXin LI>0 use lharc-file 9793e41d09dSXin LI2 string -lz4- 9803e41d09dSXin LI>0 use lharc-file 9813e41d09dSXin LI2 string -lz5- 9823e41d09dSXin LI>0 use lharc-file 9833e41d09dSXin LI2 string -lz7- 9843e41d09dSXin LI>0 use lharc-file 9853e41d09dSXin LI2 string -lz8- 9863e41d09dSXin LI>0 use lharc-file 987b6cee71dSXin LI# [never seen any but the last; -lh4- reported in comp.compression:] 9883e41d09dSXin LI#2 string -lzs- LHa/LZS archive data [lzs] 9893e41d09dSXin LI2 string -lzs- 9903e41d09dSXin LI>0 use lharc-file 9913e41d09dSXin LI# According to wikipedia and others such a version does not exist 9923e41d09dSXin LI#2 string -lh\40- LHa 2.x? archive data [lh ] 9933e41d09dSXin LI#2 string -lhd- LHa 2.x? archive data [lhd] 9943e41d09dSXin LI2 string -lhd- 9953e41d09dSXin LI>0 use lharc-file 9963e41d09dSXin LI#2 string -lh2- LHa 2.x? archive data [lh2] 9973e41d09dSXin LI2 string -lh2- 9983e41d09dSXin LI>0 use lharc-file 9993e41d09dSXin LI#2 string -lh3- LHa 2.x? archive data [lh3] 10003e41d09dSXin LI2 string -lh3- 10013e41d09dSXin LI>0 use lharc-file 10023e41d09dSXin LI#2 string -lh4- LHa (2.x) archive data [lh4] 10033e41d09dSXin LI2 string -lh4- 10043e41d09dSXin LI>0 use lharc-file 10053e41d09dSXin LI#2 string -lh5- LHa (2.x) archive data [lh5] 10063e41d09dSXin LI2 string -lh5- 10073e41d09dSXin LI>0 use lharc-file 10083e41d09dSXin LI#2 string -lh6- LHa (2.x) archive data [lh6] 10093e41d09dSXin LI2 string -lh6- 10103e41d09dSXin LI>0 use lharc-file 10113e41d09dSXin LI#2 string -lh7- LHa (2.x)/LHark archive data [lh7] 10123e41d09dSXin LI2 string -lh7- 10133e41d09dSXin LI# !:mime application/x-lha 10143e41d09dSXin LI# >20 byte x - header level %d 10153e41d09dSXin LI>0 use lharc-file 10163e41d09dSXin LI# NEW -lh8- ... -lhe- , -lhx- 10173e41d09dSXin LI2 string -lh8- 10183e41d09dSXin LI>0 use lharc-file 10193e41d09dSXin LI2 string -lh9- 10203e41d09dSXin LI>0 use lharc-file 10213e41d09dSXin LI2 string -lha- 10223e41d09dSXin LI>0 use lharc-file 10233e41d09dSXin LI2 string -lhb- 10243e41d09dSXin LI>0 use lharc-file 10253e41d09dSXin LI2 string -lhc- 10263e41d09dSXin LI>0 use lharc-file 10273e41d09dSXin LI2 string -lhe- 10283e41d09dSXin LI>0 use lharc-file 10293e41d09dSXin LI2 string -lhx- 10303e41d09dSXin LI>0 use lharc-file 1031b6cee71dSXin LI# taken from idarc [JW] 1032b6cee71dSXin LI2 string -lZ PUT archive data 10333e41d09dSXin LI# already done by LHarc magics 10343e41d09dSXin LI# this should never happen if all sub types of LZS archive are identified 10353e41d09dSXin LI#2 string -lz LZS archive data 1036b6cee71dSXin LI2 string -sw1- Swag archive data 1037b6cee71dSXin LI 10383e41d09dSXin LI0 name rar-file-header 10393e41d09dSXin LI>24 byte 15 \b, v1.5 10403e41d09dSXin LI>24 byte 20 \b, v2.0 10413e41d09dSXin LI>24 byte 29 \b, v4 10423e41d09dSXin LI>15 byte 0 \b, os: MS-DOS 10433e41d09dSXin LI>15 byte 1 \b, os: OS/2 10443e41d09dSXin LI>15 byte 2 \b, os: Win32 10453e41d09dSXin LI>15 byte 3 \b, os: Unix 10463e41d09dSXin LI>15 byte 4 \b, os: Mac OS 10473e41d09dSXin LI>15 byte 5 \b, os: BeOS 10483e41d09dSXin LI 10493e41d09dSXin LI0 name rar-archive-header 10503e41d09dSXin LI>3 leshort&0x1ff >0 \b, flags: 10513e41d09dSXin LI>>3 leshort &0x01 ArchiveVolume 10523e41d09dSXin LI>>3 leshort &0x02 Commented 10533e41d09dSXin LI>>3 leshort &0x04 Locked 10543e41d09dSXin LI>>3 leshort &0x10 NewVolumeNaming 10553e41d09dSXin LI>>3 leshort &0x08 Solid 10563e41d09dSXin LI>>3 leshort &0x20 Authenticated 10573e41d09dSXin LI>>3 leshort &0x40 RecoveryRecordPresent 10583e41d09dSXin LI>>3 leshort &0x80 EncryptedBlockHeader 10593e41d09dSXin LI>>3 leshort &0x100 FirstVolume 10603e41d09dSXin LI 10613e41d09dSXin LI# RAR (Roshal Archive) archive 10623e41d09dSXin LI0 string Rar!\x1a\7\0 RAR archive data 1063b6cee71dSXin LI!:mime application/x-rar 10643e41d09dSXin LI!:ext rar/cbr 10653e41d09dSXin LI# file header 10663e41d09dSXin LI>(0xc.l+9) byte 0x74 10673e41d09dSXin LI>>(0xc.l+7) use rar-file-header 10683e41d09dSXin LI# subblock seems to share information with file header 10693e41d09dSXin LI>(0xc.l+9) byte 0x7a 10703e41d09dSXin LI>>(0xc.l+7) use rar-file-header 10713e41d09dSXin LI>9 byte 0x73 10723e41d09dSXin LI>>7 use rar-archive-header 10733e41d09dSXin LI 10743e41d09dSXin LI0 string Rar!\x1a\7\1\0 RAR archive data, v5 10753e41d09dSXin LI!:mime application/x-rar 10763e41d09dSXin LI!:ext rar 10773e41d09dSXin LI 10783e41d09dSXin LI# Very old RAR archive 107948c779cdSXin LI# https://jasonblanks.com/wp-includes/images/papers/KnowyourarchiveRAR.pdf 10803e41d09dSXin LI0 string RE\x7e\x5e RAR archive data (<v1.5) 10813e41d09dSXin LI!:mime application/x-rar 10823e41d09dSXin LI!:ext rar/cbr 1083b6cee71dSXin LI 1084b6cee71dSXin LI# SQUISH archiver (Greg Roelofs, newt@uchicago.edu) 1085b6cee71dSXin LI0 string SQSH squished archive data (Acorn RISCOS) 1086b6cee71dSXin LI 1087b6cee71dSXin LI# UC2 archiver (Greg Roelofs, newt@uchicago.edu) 1088b6cee71dSXin LI# [JW] see exe section for self-extracting version 1089b6cee71dSXin LI0 string UC2\x1a UC2 archive data 1090b6cee71dSXin LI 1091b6cee71dSXin LI# PKZIP multi-volume archive 1092b6cee71dSXin LI0 string PK\x07\x08PK\x03\x04 Zip multi-volume archive data, at least PKZIP v2.50 to extract 1093b6cee71dSXin LI!:mime application/zip 10943e41d09dSXin LI!:ext zip/cbz 1095b6cee71dSXin LI 1096b6cee71dSXin LI# Zip archives (Greg Roelofs, c/o zip-bugs@wkuvx1.wku.edu) 1097b6cee71dSXin LI0 string PK\005\006 Zip archive data (empty) 10983e41d09dSXin LI!:mime application/zip 10993e41d09dSXin LI!:ext zip/cbz 110048c779cdSXin LI!:strength +1 1101b6cee71dSXin LI0 string PK\003\004 110248c779cdSXin LI!:strength +1 1103b6cee71dSXin LI 1104b6cee71dSXin LI# Specialised zip formats which start with a member named 'mimetype' 1105b6cee71dSXin LI# (stored uncompressed, with no 'extra field') containing the file's MIME type. 1106b6cee71dSXin LI# Check for have 8-byte name, 0-byte extra field, name "mimetype", and 1107b6cee71dSXin LI# contents starting with "application/": 1108b6cee71dSXin LI>26 string \x8\0\0\0mimetypeapplication/ 1109b6cee71dSXin LI 1110b6cee71dSXin LI# KOffice / OpenOffice & StarOffice / OpenDocument formats 1111b6cee71dSXin LI# From: Abel Cheung <abel@oaka.org> 1112b6cee71dSXin LI 1113b6cee71dSXin LI# KOffice (1.2 or above) formats 1114b6cee71dSXin LI# (mimetype contains "application/vnd.kde.<SUBTYPE>") 1115b6cee71dSXin LI>>50 string vnd.kde. KOffice (>=1.2) 1116b6cee71dSXin LI>>>58 string karbon Karbon document 1117b6cee71dSXin LI>>>58 string kchart KChart document 1118b6cee71dSXin LI>>>58 string kformula KFormula document 1119b6cee71dSXin LI>>>58 string kivio Kivio document 1120b6cee71dSXin LI>>>58 string kontour Kontour document 1121b6cee71dSXin LI>>>58 string kpresenter KPresenter document 1122b6cee71dSXin LI>>>58 string kspread KSpread document 1123b6cee71dSXin LI>>>58 string kword KWord document 1124b6cee71dSXin LI 1125b6cee71dSXin LI# OpenOffice formats (for OpenOffice 1.x / StarOffice 6/7) 1126b6cee71dSXin LI# (mimetype contains "application/vnd.sun.xml.<SUBTYPE>") 1127b6cee71dSXin LI>>50 string vnd.sun.xml. OpenOffice.org 1.x 1128b6cee71dSXin LI>>>62 string writer Writer 1129b6cee71dSXin LI>>>>68 byte !0x2e document 1130b6cee71dSXin LI>>>>68 string .template template 1131b6cee71dSXin LI>>>>68 string .global global document 1132b6cee71dSXin LI>>>62 string calc Calc 1133b6cee71dSXin LI>>>>66 byte !0x2e spreadsheet 1134b6cee71dSXin LI>>>>66 string .template template 1135b6cee71dSXin LI>>>62 string draw Draw 1136b6cee71dSXin LI>>>>66 byte !0x2e document 1137b6cee71dSXin LI>>>>66 string .template template 1138b6cee71dSXin LI>>>62 string impress Impress 1139b6cee71dSXin LI>>>>69 byte !0x2e presentation 1140b6cee71dSXin LI>>>>69 string .template template 1141b6cee71dSXin LI>>>62 string math Math document 1142b6cee71dSXin LI>>>62 string base Database file 1143b6cee71dSXin LI 1144b6cee71dSXin LI# OpenDocument formats (for OpenOffice 2.x / StarOffice >= 8) 114548c779cdSXin LI# https://lists.oasis-open.org/archives/office/200505/msg00006.html 1146b6cee71dSXin LI# (mimetype contains "application/vnd.oasis.opendocument.<SUBTYPE>") 1147b6cee71dSXin LI>>50 string vnd.oasis.opendocument. OpenDocument 1148b6cee71dSXin LI>>>73 string text 1149b6cee71dSXin LI>>>>77 byte !0x2d Text 1150b6cee71dSXin LI!:mime application/vnd.oasis.opendocument.text 1151b6cee71dSXin LI>>>>77 string -template Text Template 1152b6cee71dSXin LI!:mime application/vnd.oasis.opendocument.text-template 1153b6cee71dSXin LI>>>>77 string -web HTML Document Template 1154b6cee71dSXin LI!:mime application/vnd.oasis.opendocument.text-web 1155b6cee71dSXin LI>>>>77 string -master Master Document 1156b6cee71dSXin LI!:mime application/vnd.oasis.opendocument.text-master 1157b6cee71dSXin LI>>>73 string graphics 1158b6cee71dSXin LI>>>>81 byte !0x2d Drawing 1159b6cee71dSXin LI!:mime application/vnd.oasis.opendocument.graphics 1160b6cee71dSXin LI>>>>81 string -template Template 1161b6cee71dSXin LI!:mime application/vnd.oasis.opendocument.graphics-template 1162b6cee71dSXin LI>>>73 string presentation 1163b6cee71dSXin LI>>>>85 byte !0x2d Presentation 1164b6cee71dSXin LI!:mime application/vnd.oasis.opendocument.presentation 1165b6cee71dSXin LI>>>>85 string -template Template 1166b6cee71dSXin LI!:mime application/vnd.oasis.opendocument.presentation-template 1167b6cee71dSXin LI>>>73 string spreadsheet 1168b6cee71dSXin LI>>>>84 byte !0x2d Spreadsheet 1169b6cee71dSXin LI!:mime application/vnd.oasis.opendocument.spreadsheet 1170b6cee71dSXin LI>>>>84 string -template Template 1171b6cee71dSXin LI!:mime application/vnd.oasis.opendocument.spreadsheet-template 1172b6cee71dSXin LI>>>73 string chart 1173b6cee71dSXin LI>>>>78 byte !0x2d Chart 1174b6cee71dSXin LI!:mime application/vnd.oasis.opendocument.chart 1175b6cee71dSXin LI>>>>78 string -template Template 1176b6cee71dSXin LI!:mime application/vnd.oasis.opendocument.chart-template 1177b6cee71dSXin LI>>>73 string formula 1178b6cee71dSXin LI>>>>80 byte !0x2d Formula 1179b6cee71dSXin LI!:mime application/vnd.oasis.opendocument.formula 1180b6cee71dSXin LI>>>>80 string -template Template 1181b6cee71dSXin LI!:mime application/vnd.oasis.opendocument.formula-template 1182b6cee71dSXin LI>>>73 string database Database 1183b6cee71dSXin LI!:mime application/vnd.oasis.opendocument.database 118458a0f0d0SEitan Adler# Valid for LibreOffice Base 6.0.1.1 at least 118558a0f0d0SEitan Adler>>>73 string base Database 118658a0f0d0SEitan Adler!:mime application/vnd.oasis.opendocument.base 1187b6cee71dSXin LI>>>73 string image 1188b6cee71dSXin LI>>>>78 byte !0x2d Image 1189b6cee71dSXin LI!:mime application/vnd.oasis.opendocument.image 1190b6cee71dSXin LI>>>>78 string -template Template 1191b6cee71dSXin LI!:mime application/vnd.oasis.opendocument.image-template 1192b6cee71dSXin LI 1193b6cee71dSXin LI# EPUB (OEBPS) books using OCF (OEBPS Container Format) 119448c779cdSXin LI# https://www.idpf.org/ocf/ocf1.0/download/ocf10.htm, section 4. 1195b6cee71dSXin LI# From: Ralf Brown <ralf.brown@gmail.com> 1196b6cee71dSXin LI>>50 string epub+zip EPUB document 1197b6cee71dSXin LI!:mime application/epub+zip 1198b6cee71dSXin LI 1199*d38c30c0SXin LI# From: Joerg Jenderek 1200*d38c30c0SXin LI# URL: http://en.wikipedia.org/wiki/CorelDRAW 1201*d38c30c0SXin LI# NOTE: version; til 2 WL-based; from 3 til 13 by ./riff; from 14 zip based 1202*d38c30c0SXin LI>>50 string x-vnd.corel. Corel 1203*d38c30c0SXin LI>>>62 string draw.document+zip Draw drawing, version 14-16 1204*d38c30c0SXin LI!:mime application/x-vnd.corel.draw.document+zip 1205*d38c30c0SXin LI!:ext cdr 1206*d38c30c0SXin LI>>>62 string draw.template+zip Draw template, version 14-16 1207*d38c30c0SXin LI!:mime application/x-vnd.corel.draw.template+zip 1208*d38c30c0SXin LI!:ext cdrt 1209*d38c30c0SXin LI>>>62 string zcf.draw.document+zip Draw drawing, version 17-21 1210*d38c30c0SXin LI!:mime application/x-vnd.corel.zcf.draw.document+zip 1211*d38c30c0SXin LI!:ext cdr 1212*d38c30c0SXin LI>>>62 string zcf.draw.template+zip Draw template, version 17-21 1213*d38c30c0SXin LI!:mime application/x-vnd.corel.zcf.draw.template+zip 1214*d38c30c0SXin LI!:ext cdt/cdrt 1215*d38c30c0SXin LI 1216b6cee71dSXin LI# Catch other ZIP-with-mimetype formats 1217b6cee71dSXin LI# In a ZIP file, the bytes immediately after a member's contents are 1218b6cee71dSXin LI# always "PK". The 2 regex rules here print the "mimetype" member's 1219b6cee71dSXin LI# contents up to the first 'P'. Luckily, most MIME types don't contain 1220b6cee71dSXin LI# any capital 'P's. This is a kludge. 1221b6cee71dSXin LI# (mimetype contains "application/<OTHER>") 1222*d38c30c0SXin LI>>50 default x Zip data 1223*d38c30c0SXin LI>>>38 regex [!-OQ-~]+ (MIME type "%s"?) 1224b6cee71dSXin LI!:mime application/zip 1225b6cee71dSXin LI# (mimetype contents other than "application/*") 1226b6cee71dSXin LI>26 string \x8\0\0\0mimetype 1227b6cee71dSXin LI>>38 string !application/ 1228b6cee71dSXin LI>>>38 regex [!-OQ-~]+ Zip data (MIME type "%s"?) 1229b6cee71dSXin LI!:mime application/zip 1230b6cee71dSXin LI 1231b6cee71dSXin LI# Java Jar files 1232b6cee71dSXin LI>(26.s+30) leshort 0xcafe Java archive data (JAR) 1233b6cee71dSXin LI!:mime application/java-archive 1234b6cee71dSXin LI 123520f8619dSXin LI# iOS App 123620f8619dSXin LI>(26.s+30) leshort !0xcafe 123720f8619dSXin LI>>26 string !\x8\0\0\0mimetype 123820f8619dSXin LI>>>30 string Payload/ 123920f8619dSXin LI>>>>38 search/64 .app/ iOS App 124020f8619dSXin LI!:mime application/x-ios-app 124120f8619dSXin LI 124220f8619dSXin LI 1243b6cee71dSXin LI# Generic zip archives (Greg Roelofs, c/o zip-bugs@wkuvx1.wku.edu) 1244b6cee71dSXin LI# Next line excludes specialized formats: 1245b6cee71dSXin LI>(26.s+30) leshort !0xcafe 1246b6cee71dSXin LI>>26 string !\x8\0\0\0mimetype Zip archive data 1247b6cee71dSXin LI!:mime application/zip 124858a0f0d0SEitan Adler>>>4 beshort x \b, at least 124958a0f0d0SEitan Adler>>>4 use zipversion 125058a0f0d0SEitan Adler>>>4 beshort x to extract 1251b6cee71dSXin LI>>>0x161 string WINZIP \b, WinZIP self-extracting 1252b6cee71dSXin LI 1253b6cee71dSXin LI# StarView Metafile 1254b6cee71dSXin LI# From Pierre Ducroquet <pinaraf@pinaraf.info> 1255b6cee71dSXin LI0 string VCLMTF StarView MetaFile 1256b6cee71dSXin LI>6 beshort x \b, version %d 1257b6cee71dSXin LI>8 belong x \b, size %d 1258b6cee71dSXin LI 1259b6cee71dSXin LI# Zoo archiver 1260b6cee71dSXin LI20 lelong 0xfdc4a7dc Zoo archive data 1261b6cee71dSXin LI!:mime application/x-zoo 1262b6cee71dSXin LI>4 byte >48 \b, v%c. 1263b6cee71dSXin LI>>6 byte >47 \b%c 1264b6cee71dSXin LI>>>7 byte >47 \b%c 1265b6cee71dSXin LI>32 byte >0 \b, modify: v%d 1266b6cee71dSXin LI>>33 byte x \b.%d+ 1267b6cee71dSXin LI>42 lelong 0xfdc4a7dc \b, 1268b6cee71dSXin LI>>70 byte >0 extract: v%d 1269b6cee71dSXin LI>>>71 byte x \b.%d+ 1270b6cee71dSXin LI 1271b6cee71dSXin LI# Shell archives 1272b6cee71dSXin LI10 string #\ This\ is\ a\ shell\ archive shell archive text 1273b6cee71dSXin LI!:mime application/octet-stream 1274b6cee71dSXin LI 1275b6cee71dSXin LI# 1276b6cee71dSXin LI# LBR. NB: May conflict with the questionable 1277b6cee71dSXin LI# "binary Computer Graphics Metafile" format. 1278b6cee71dSXin LI# 1279b6cee71dSXin LI0 string \0\ \ \ \ \ \ \ \ \ \ \ \0\0 LBR archive data 1280b6cee71dSXin LI# 1281b6cee71dSXin LI# PMA (CP/M derivative of LHA) 12823e41d09dSXin LI# Update: Joerg Jenderek 12833e41d09dSXin LI# URL: https://en.wikipedia.org/wiki/LHA_(file_format) 1284b6cee71dSXin LI# 12853e41d09dSXin LI#2 string -pm0- PMarc archive data [pm0] 12863e41d09dSXin LI2 string -pm0- 12873e41d09dSXin LI>0 use lharc-file 12883e41d09dSXin LI#2 string -pm1- PMarc archive data [pm1] 12893e41d09dSXin LI2 string -pm1- 12903e41d09dSXin LI>0 use lharc-file 12913e41d09dSXin LI#2 string -pm2- PMarc archive data [pm2] 12923e41d09dSXin LI2 string -pm2- 12933e41d09dSXin LI>0 use lharc-file 1294b6cee71dSXin LI2 string -pms- PMarc SFX archive (CP/M, DOS) 12953e41d09dSXin LI#!:mime application/x-foobar-exec 12963e41d09dSXin LI!:ext com 1297b6cee71dSXin LI5 string -pc1- PopCom compressed executable (CP/M) 12983e41d09dSXin LI#!:mime application/x- 12993e41d09dSXin LI#!:ext com 1300b6cee71dSXin LI 1301b6cee71dSXin LI# From Rafael Laboissiere <rafael@laboissiere.net> 1302b6cee71dSXin LI# The Project Revision Control System (see 1303b6cee71dSXin LI# http://prcs.sourceforge.net) generates a packaged project 1304b6cee71dSXin LI# file which is recognized by the following entry: 1305b6cee71dSXin LI0 leshort 0xeb81 PRCS packaged project 1306b6cee71dSXin LI 1307b6cee71dSXin LI# Microsoft cabinets 1308b6cee71dSXin LI# by David Necas (Yeti) <yeti@physics.muni.cz> 1309b6cee71dSXin LI#0 string MSCF\0\0\0\0 Microsoft cabinet file data, 1310b6cee71dSXin LI#>25 byte x v%d 1311b6cee71dSXin LI#>24 byte x \b.%d 1312b6cee71dSXin LI# MPi: All CABs have version 1.3, so this is pointless. 1313b6cee71dSXin LI# Better magic in debian-additions. 1314b6cee71dSXin LI 1315b6cee71dSXin LI# GTKtalog catalogs 1316b6cee71dSXin LI# by David Necas (Yeti) <yeti@physics.muni.cz> 1317b6cee71dSXin LI4 string gtktalog\ GTKtalog catalog data, 1318b6cee71dSXin LI>13 string 3 version 3 1319b6cee71dSXin LI>>14 beshort 0x677a (gzipped) 1320b6cee71dSXin LI>>14 beshort !0x677a (not gzipped) 1321b6cee71dSXin LI>13 string >3 version %s 1322b6cee71dSXin LI 1323b6cee71dSXin LI############################################################################ 1324b6cee71dSXin LI# Parity archive reconstruction file, the 'par' file format now used on Usenet. 1325b6cee71dSXin LI0 string PAR\0 PARity archive data 1326b6cee71dSXin LI>48 leshort =0 - Index file 1327b6cee71dSXin LI>48 leshort >0 - file number %d 1328b6cee71dSXin LI 1329b6cee71dSXin LI# Felix von Leitner <felix-file@fefe.de> 1330b6cee71dSXin LI0 string d8:announce BitTorrent file 1331b6cee71dSXin LI!:mime application/x-bittorrent 13323e41d09dSXin LI# Durval Menezes, <jmgthbfile at durval dot com> 13333e41d09dSXin LI0 string d13:announce-list BitTorrent file 13343e41d09dSXin LI!:mime application/x-bittorrent 1335*d38c30c0SXin LI0 string d7:comment BitTorrent file 1336*d38c30c0SXin LI!:mime application/x-bittorrent 1337*d38c30c0SXin LI0 string d4:info BitTorrent file 1338*d38c30c0SXin LI!:mime application/x-bittorrent 1339b6cee71dSXin LI 1340b6cee71dSXin LI# Atari MSA archive - Teemu Hukkanen <tjhukkan@iki.fi> 1341b6cee71dSXin LI0 beshort 0x0e0f Atari MSA archive data 1342b6cee71dSXin LI>2 beshort x \b, %d sectors per track 1343b6cee71dSXin LI>4 beshort 0 \b, 1 sided 1344b6cee71dSXin LI>4 beshort 1 \b, 2 sided 1345b6cee71dSXin LI>6 beshort x \b, starting track: %d 1346b6cee71dSXin LI>8 beshort x \b, ending track: %d 1347b6cee71dSXin LI 1348b6cee71dSXin LI# Alternate ZIP string (amc@arwen.cs.berkeley.edu) 1349b6cee71dSXin LI0 string PK00PK\003\004 Zip archive data 135058a0f0d0SEitan Adler!:mime application/zip 135158a0f0d0SEitan Adler!:ext zip/cbz 1352b6cee71dSXin LI 1353b6cee71dSXin LI# ACE archive (from http://www.wotsit.org/download.asp?f=ace) 1354b6cee71dSXin LI# by Stefan `Sec` Zehl <sec@42.org> 1355b6cee71dSXin LI7 string **ACE** ACE archive data 1356b6cee71dSXin LI>15 byte >0 version %d 1357b6cee71dSXin LI>16 byte =0x00 \b, from MS-DOS 1358b6cee71dSXin LI>16 byte =0x01 \b, from OS/2 1359b6cee71dSXin LI>16 byte =0x02 \b, from Win/32 1360b6cee71dSXin LI>16 byte =0x03 \b, from Unix 1361b6cee71dSXin LI>16 byte =0x04 \b, from MacOS 1362b6cee71dSXin LI>16 byte =0x05 \b, from WinNT 1363b6cee71dSXin LI>16 byte =0x06 \b, from Primos 1364b6cee71dSXin LI>16 byte =0x07 \b, from AppleGS 1365b6cee71dSXin LI>16 byte =0x08 \b, from Atari 1366b6cee71dSXin LI>16 byte =0x09 \b, from Vax/VMS 1367b6cee71dSXin LI>16 byte =0x0A \b, from Amiga 1368b6cee71dSXin LI>16 byte =0x0B \b, from Next 1369b6cee71dSXin LI>14 byte x \b, version %d to extract 1370b6cee71dSXin LI>5 leshort &0x0080 \b, multiple volumes, 1371b6cee71dSXin LI>>17 byte x \b (part %d), 1372b6cee71dSXin LI>5 leshort &0x0002 \b, contains comment 1373b6cee71dSXin LI>5 leshort &0x0200 \b, sfx 1374b6cee71dSXin LI>5 leshort &0x0400 \b, small dictionary 1375b6cee71dSXin LI>5 leshort &0x0800 \b, multi-volume 1376b6cee71dSXin LI>5 leshort &0x1000 \b, contains AV-String 1377b6cee71dSXin LI>>30 string \x16*UNREGISTERED\x20VERSION* (unregistered) 1378b6cee71dSXin LI>5 leshort &0x2000 \b, with recovery record 1379b6cee71dSXin LI>5 leshort &0x4000 \b, locked 1380b6cee71dSXin LI>5 leshort &0x8000 \b, solid 1381b6cee71dSXin LI# Date in MS-DOS format (whatever that is) 1382b6cee71dSXin LI#>18 lelong x Created on 1383b6cee71dSXin LI 1384b6cee71dSXin LI# sfArk : compression program for Soundfonts (sf2) by Dirk Jagdmann 1385b6cee71dSXin LI# <doj@cubic.org> 1386b6cee71dSXin LI0x1A string sfArk sfArk compressed Soundfont 1387b6cee71dSXin LI>0x15 string 2 1388b6cee71dSXin LI>>0x1 string >\0 Version %s 1389b6cee71dSXin LI>>0x2A string >\0 : %s 1390b6cee71dSXin LI 1391b6cee71dSXin LI# DR-DOS 7.03 Packed File *.??_ 1392b6cee71dSXin LI0 string Packed\ File\ Personal NetWare Packed File 1393b6cee71dSXin LI>12 string x \b, was "%.12s" 1394b6cee71dSXin LI 1395b6cee71dSXin LI# EET archive 1396b6cee71dSXin LI# From: Tilman Sauerbeck <tilman@code-monkey.de> 1397b6cee71dSXin LI0 belong 0x1ee7ff00 EET archive 1398b6cee71dSXin LI!:mime application/x-eet 1399b6cee71dSXin LI 1400b6cee71dSXin LI# rzip archives 1401b6cee71dSXin LI0 string RZIP rzip compressed data 1402b6cee71dSXin LI>4 byte x - version %d 1403b6cee71dSXin LI>5 byte x \b.%d 1404b6cee71dSXin LI>6 belong x (%d bytes) 1405b6cee71dSXin LI 140648c779cdSXin LI# From: Joerg Jenderek 140748c779cdSXin LI# URL: https://help.foxitsoftware.com/kb/install-fzip-file.php 140848c779cdSXin LI# reference: http://mark0.net/download/triddefs_xml.7z/ 140948c779cdSXin LI# defs/f/fzip.trid.xml 141048c779cdSXin LI# Note: unknown compression; No "PK" zip magic; normally in directory like 141148c779cdSXin LI# "%APPDATA%\Foxit Software\Addon\Foxit Reader\Install" 141248c779cdSXin LI0 ubequad 0x2506781901010000 Foxit add-on/update 141348c779cdSXin LI!:mime application/x-fzip 141448c779cdSXin LI!:ext fzip 141548c779cdSXin LI 1416b6cee71dSXin LI# From: "Robert Dale" <robdale@gmail.com> 1417b6cee71dSXin LI0 belong 123 dar archive, 1418b6cee71dSXin LI>4 belong x label "%.8x 1419b6cee71dSXin LI>>8 belong x %.8x 1420b6cee71dSXin LI>>>12 beshort x %.4x" 1421b6cee71dSXin LI>14 byte 0x54 end slice 1422b6cee71dSXin LI>14 beshort 0x4e4e multi-part 1423b6cee71dSXin LI>14 beshort 0x4e53 multi-part, with -S 1424b6cee71dSXin LI 1425b6cee71dSXin LI# Symbian installation files 142648c779cdSXin LI# https://www.thouky.co.uk/software/psifs/sis.html 1427b6cee71dSXin LI# http://developer.symbian.com/main/downloads/papers/SymbianOSv91/softwareinstallsis.pdf 1428b6cee71dSXin LI8 lelong 0x10000419 Symbian installation file 1429b6cee71dSXin LI!:mime application/vnd.symbian.install 1430b6cee71dSXin LI>4 lelong 0x1000006D (EPOC release 3/4/5) 1431b6cee71dSXin LI>4 lelong 0x10003A12 (EPOC release 6) 1432b6cee71dSXin LI0 lelong 0x10201A7A Symbian installation file (Symbian OS 9.x) 1433b6cee71dSXin LI!:mime x-epoc/x-sisx-app 1434b6cee71dSXin LI 1435b6cee71dSXin LI# From "Nelson A. de Oliveira" <naoliv@gmail.com> 1436b6cee71dSXin LI0 string MPQ\032 MoPaQ (MPQ) archive 1437b6cee71dSXin LI 1438b6cee71dSXin LI# From: "Nelson A. de Oliveira" <naoliv@gmail.com> 1439b6cee71dSXin LI# .kgb 1440b6cee71dSXin LI0 string KGB_arch KGB Archiver file 1441b6cee71dSXin LI>10 string x with compression level %.1s 1442b6cee71dSXin LI 1443b6cee71dSXin LI# xar (eXtensible ARchiver) archive 144448c779cdSXin LI# URL: https://en.wikipedia.org/wiki/Xar_(archiver) 144548c779cdSXin LI# xar archive format: https://code.google.com/p/xar/ 1446b6cee71dSXin LI# From: "David Remahl" <dremahl@apple.com> 144748c779cdSXin LI# Update: Joerg Jenderek 144848c779cdSXin LI# TODO: lzma compression; X509Data for pkg and xip 144948c779cdSXin LI# Note: verified by `xar --dump-header -f FullBundleUpdate.xar` or 145048c779cdSXin LI# 7z t -txar Xcode_10.2_beta_4.xip` 1451b6cee71dSXin LI0 string xar! xar archive 14523e41d09dSXin LI!:mime application/x-xar 145348c779cdSXin LI# pkg for Mac OSX installer package like FullBundleUpdate.pkg 145448c779cdSXin LI# xip for signed Apple software like Xcode_10.2_beta_4.xip 145548c779cdSXin LI!:ext xar/pkg/xip 145648c779cdSXin LI# always 28 in older archives 145748c779cdSXin LI>4 ubeshort >28 \b, header size %u 145848c779cdSXin LI# currently there exit only version 1 since about 2014 145948c779cdSXin LI>6 ubeshort >1 version %u, 146048c779cdSXin LI>8 ubequad x compressed TOC: %llu, 146148c779cdSXin LI#>16 ubequad x uncompressed TOC: %llu, 146248c779cdSXin LI# cksum_alg 0-2 in older and also 3-4 in newer 1463b6cee71dSXin LI>24 belong 0 no checksum 1464b6cee71dSXin LI>24 belong 1 SHA-1 checksum 1465b6cee71dSXin LI>24 belong 2 MD5 checksum 146648c779cdSXin LI>24 belong 3 SHA-256 checksum 146748c779cdSXin LI>24 belong 4 SHA-512 checksum 146848c779cdSXin LI>24 belong >4 unknown 0x%x checksum 146948c779cdSXin LI#>24 belong >4 checksum 147048c779cdSXin LI# For no compression jump 0 bytes 147148c779cdSXin LI>24 belong 0 147248c779cdSXin LI>>0 ubyte x 147348c779cdSXin LI# jump more bytes forward by header size 147448c779cdSXin LI>>>&(4.S) ubyte x 147548c779cdSXin LI# jump more bytes forward by compressed table of contents size 147648c779cdSXin LI#>>>>&(8.Q) ubequad x \b, heap data 0x%llx 147748c779cdSXin LI>>>>&(8.Q) ubyte x 147848c779cdSXin LI# look for data by ./compress after message with 1 space at end 147948c779cdSXin LI>>>>>&-3 indirect x \b, contains 148048c779cdSXin LI# For SHA-1 jump 20 minus 2 bytes 148148c779cdSXin LI>24 belong 1 148248c779cdSXin LI>>18 ubyte x 148348c779cdSXin LI# jump more bytes forward by header size 148448c779cdSXin LI>>>&(4.S) ubyte x 148548c779cdSXin LI# jump more bytes forward by compressed table of contents size 148648c779cdSXin LI>>>>&(8.Q) ubyte x 148748c779cdSXin LI# data compressed by gzip, bzip, lzma or none 148848c779cdSXin LI>>>>>&-1 indirect x \b, contains 148948c779cdSXin LI# For SHA-256 jump 32 minus 2 bytes 149048c779cdSXin LI>24 belong 3 149148c779cdSXin LI>>30 ubyte x 149248c779cdSXin LI# jump more bytes forward by header size 149348c779cdSXin LI>>>&(4.S) ubyte x 149448c779cdSXin LI# jump more bytes forward by compressed table of contents size 149548c779cdSXin LI>>>>&(8.Q) ubyte x 149648c779cdSXin LI>>>>>&-1 indirect x \b, contains 149748c779cdSXin LI# For SHA-512 jump 64 minus 2 bytes 149848c779cdSXin LI>24 belong 4 149948c779cdSXin LI>>62 ubyte x 150048c779cdSXin LI# jump more bytes forward by header size 150148c779cdSXin LI>>>&(4.S) ubyte x 150248c779cdSXin LI# jump more bytes forward by compressed table of contents size 150348c779cdSXin LI>>>>&(8.Q) ubyte x 150448c779cdSXin LI>>>>>&-1 indirect x \b, contains 1505b6cee71dSXin LI 1506b6cee71dSXin LI# Type: Parity Archive 1507b6cee71dSXin LI# From: Daniel van Eeden <daniel_e@dds.nl> 1508b6cee71dSXin LI0 string PAR2 Parity Archive Volume Set 1509b6cee71dSXin LI 1510b6cee71dSXin LI# Bacula volume format. (Volumes always start with a block header.) 151148c779cdSXin LI# URL: https://bacula.org/3.0.x-manuals/en/developers/developers/Block_Header.html 1512b6cee71dSXin LI# From: Adam Buchbinder <adam.buchbinder@gmail.com> 1513b6cee71dSXin LI12 string BB02 Bacula volume 1514b6cee71dSXin LI>20 bedate x \b, started %s 1515b6cee71dSXin LI 1516b6cee71dSXin LI# ePub is XHTML + XML inside a ZIP archive. The first member of the 1517b6cee71dSXin LI# archive must be an uncompressed file called 'mimetype' with contents 1518b6cee71dSXin LI# 'application/epub+zip' 1519b6cee71dSXin LI 1520b6cee71dSXin LI 1521b6cee71dSXin LI# From: "Michael Gorny" <mgorny@gentoo.org> 1522b6cee71dSXin LI# ZPAQ: http://mattmahoney.net/dc/zpaq.html 1523b6cee71dSXin LI0 string zPQ ZPAQ stream 1524b6cee71dSXin LI>3 byte x \b, level %d 15255f0216bdSXin LI# From: Barry Carter <carter.barry@gmail.com> 152648c779cdSXin LI# https://encode.ru/threads/456-zpaq-updates/page32 15275f0216bdSXin LI0 string 7kSt ZPAQ file 1528b6cee71dSXin LI 1529b6cee71dSXin LI# BBeB ebook, unencrypted (LRF format) 153048c779cdSXin LI# URL: https://www.sven.de/librie/Librie/LrfFormat 1531b6cee71dSXin LI# From: Adam Buchbinder <adam.buchbinder@gmail.com> 1532b6cee71dSXin LI0 string L\0R\0F\0\0\0 BBeB ebook data, unencrypted 1533b6cee71dSXin LI>8 beshort x \b, version %d 1534b6cee71dSXin LI>36 byte 1 \b, front-to-back 1535b6cee71dSXin LI>36 byte 16 \b, back-to-front 1536b6cee71dSXin LI>42 beshort x \b, (%dx, 1537b6cee71dSXin LI>44 beshort x %d) 1538b6cee71dSXin LI 1539b6cee71dSXin LI# Symantec GHOST image by Joerg Jenderek at May 2014 154048c779cdSXin LI# https://us.norton.com/ghost/ 154148c779cdSXin LI# https://www.garykessler.net/library/file_sigs.html 1542b6cee71dSXin LI0 ubelong&0xFFFFf7f0 0xFEEF0100 Norton GHost image 1543b6cee71dSXin LI# *.GHO 1544b6cee71dSXin LI>2 ubyte&0x08 0x00 \b, first file 1545b6cee71dSXin LI# *.GHS or *.[0-9] with cns program option 1546b6cee71dSXin LI>2 ubyte&0x08 0x08 \b, split file 1547b6cee71dSXin LI# part of split index interesting for *.ghs 1548b6cee71dSXin LI>>4 ubyte x id=0x%x 1549b6cee71dSXin LI# compression tag minus one equals numeric compression command line switch z[1-9] 1550b6cee71dSXin LI>3 ubyte 0 \b, no compression 1551b6cee71dSXin LI>3 ubyte 2 \b, fast compression (Z1) 1552b6cee71dSXin LI>3 ubyte 3 \b, medium compression (Z2) 1553b6cee71dSXin LI>3 ubyte >3 1554b6cee71dSXin LI>>3 ubyte <11 \b, compression (Z%d-1) 1555b6cee71dSXin LI>2 ubyte&0x08 0x00 1556b6cee71dSXin LI# ~ 30 byte password field only for *.gho 1557b6cee71dSXin LI>>12 ubequad !0 \b, password protected 1558b6cee71dSXin LI>>44 ubyte !1 1559b6cee71dSXin LI# 1~Image All, sector-by-sector only for *.gho 1560b6cee71dSXin LI>>>10 ubyte 1 \b, sector copy 1561b6cee71dSXin LI# 1~Image Boot track only for *.gho 1562b6cee71dSXin LI>>>43 ubyte 1 \b, boot track 1563b6cee71dSXin LI# 1~Image Disc only for *.gho implies Image Boot track and sector copy 1564b6cee71dSXin LI>>44 ubyte 1 \b, disc sector copy 1565b6cee71dSXin LI# optional image description only *.gho 1566b6cee71dSXin LI>>0xff string >\0 "%-.254s" 1567b6cee71dSXin LI# look for DOS sector end sequence 1568b6cee71dSXin LI>0xE08 search/7776 \x55\xAA 1569b6cee71dSXin LI>>&-512 indirect x \b; contains 1570b6cee71dSXin LI 15713e41d09dSXin LI# Google Chrome extensions 15723e41d09dSXin LI# https://developer.chrome.com/extensions/crx 15733e41d09dSXin LI# https://developer.chrome.com/extensions/hosting 15743e41d09dSXin LI0 string Cr24 Google Chrome extension 15753e41d09dSXin LI!:mime application/x-chrome-extension 15763e41d09dSXin LI>4 ulong x \b, version %u 157740427ccaSGordon Tetlow 157840427ccaSGordon Tetlow# SeqBox - Sequenced container 157940427ccaSGordon Tetlow# ext: sbx, seqbox 158040427ccaSGordon Tetlow# Marco Pontello marcopon@gmail.com 158140427ccaSGordon Tetlow# reference: https://github.com/MarcoPon/SeqBox 158240427ccaSGordon Tetlow0 string SBx SeqBox, 158340427ccaSGordon Tetlow>3 byte x version %d 158458a0f0d0SEitan Adler 158558a0f0d0SEitan Adler# LyNX archive 158658a0f0d0SEitan Adler56 string USE\040LYNX\040TO\040DISSOLVE\040THIS\040FILE LyNX archive 158748c779cdSXin LI 158848c779cdSXin LI# From: Joerg Jenderek 158948c779cdSXin LI# URL: https://www.acronis.com/ 159048c779cdSXin LI# Reference: https://en.wikipedia.org/wiki/TIB_(file_format) 159148c779cdSXin LI# Note: only tested with True Image 2013 Build 5962 and 2019 Build 14110 159248c779cdSXin LI0 ubequad 0xce24b9a220000000 Acronis True Image backup 159348c779cdSXin LI!:mime application/x-acronis-tib 159448c779cdSXin LI!:ext tib 159548c779cdSXin LI# 01000000 159648c779cdSXin LI#>20 ubelong x \b, at 20 0x%x 159748c779cdSXin LI# 20000000 159848c779cdSXin LI#>28 ubelong x \b, at 28 0x%x 159948c779cdSXin LI# strings like "Generic- SD/MMC 1.00" "Unknown Disk" "Msft Virtual Disk 1.0" 160048c779cdSXin LI# ??? 160148c779cdSXin LI# strings like "\Device\0000011e" "\Device\0000015a" 160248c779cdSXin LI#>0 search/0x6852300/cs \\Device\\ 160348c779cdSXin LI#>>&-1 pstring x \b, %s 160448c779cdSXin LI# "\Device\HarddiskVolume30" "\Device\HarddiskVolume39" 160548c779cdSXin LI#>>>&1 search/180/cs \\Device\\ 160648c779cdSXin LI#>>>>&-1 pstring x \b, %s 160748c779cdSXin LI#>>>>>&0 search/29/cs \0\0\xc8\0 160848c779cdSXin LI# disk label 160948c779cdSXin LI#>>>>>>&10 lestring16 x \b, disk label %11.11s 161048c779cdSXin LI#>>>>>>&9 plestring16 x \b, disk label "%11.11s" 161148c779cdSXin LI#>>>>>>&10 ubequad x %16.16llx 161248c779cdSXin LI 161348c779cdSXin LI 161448c779cdSXin LI# Gentoo XPAK binary package 161548c779cdSXin LI# by Michal Gorny <mgorny@gentoo.org> 161648c779cdSXin LI# https://gitweb.gentoo.org/proj/portage.git/tree/man/xpak.5 161748c779cdSXin LI-4 string STOP 161848c779cdSXin LI>-16 string XPAKSTOP Gentoo binary package (XPAK) 161948c779cdSXin LI 162048c779cdSXin LI# From: Joerg Jenderek 162148c779cdSXin LI# URL: https://kodi.wiki/view/TexturePacker 162248c779cdSXin LI# Reference: https://mirrors.kodi.tv/releases/source/17.3-Krypton.tar.gz 162348c779cdSXin LI# /xbmc-Krypton/xbmc/guilib/XBTF.h 162448c779cdSXin LI# /xbmc-Krypton/xbmc/guilib/XBTF.cpp 162548c779cdSXin LI0 string XBTF 162648c779cdSXin LI# skip ASCII text by looking for terminating \0 of path 162748c779cdSXin LI>264 ubyte 0 XBMC texture package 162848c779cdSXin LI!:mime application/x-xbmc-xbt 162948c779cdSXin LI!:ext xbt 163048c779cdSXin LI# XBTF_VERSION 2 163148c779cdSXin LI>>4 string !2 \b, version %-.1s 163248c779cdSXin LI# nofFiles /xbmc-Krypton/xbmc/guilib/XBTFReader.cpp 163348c779cdSXin LI>>5 ulelong x \b, %u file 163448c779cdSXin LI# plural s 163548c779cdSXin LI>>5 ulelong >1 \bs 163648c779cdSXin LI# path[CXBTFFile[MaximumPathLength=256] 163748c779cdSXin LI>>9 string x \b, 1st %s 163848c779cdSXin LI 1639