1b6cee71dSXin LI#------------------------------------------------------------------------------ 2*2dc4dbb9SEitan Adler# $File: archive,v 1.119 2018/04/24 23:19:45 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 14*2dc4dbb9SEitan 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: 151b6cee71dSXin LI# http://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# 229b6cee71dSXin LI0 string =!<arch>\ndebian 230b6cee71dSXin LI>8 string debian-split part of multipart Debian package 231b6cee71dSXin LI!:mime application/vnd.debian.binary-package 232b6cee71dSXin LI>8 string debian-binary Debian binary package 233b6cee71dSXin LI!:mime application/vnd.debian.binary-package 234b6cee71dSXin LI>8 string !debian 235b6cee71dSXin LI>68 string >\0 (format %s) 236b6cee71dSXin LI# These next two lines do not work, because a bzip2 Debian archive 237b6cee71dSXin LI# still uses gzip for the control.tar (first in the archive). Only 238b6cee71dSXin LI# data.tar varies, and the location of its filename varies too. 239b6cee71dSXin LI# file/libmagic does not current have support for ascii-string based 240b6cee71dSXin LI# (offsets) as of 2005-09-15. 241b6cee71dSXin LI#>81 string bz2 \b, uses bzip2 compression 242b6cee71dSXin LI#>84 string gz \b, uses gzip compression 243b6cee71dSXin LI#>136 ledate x created: %s 244b6cee71dSXin LI 245b6cee71dSXin LI# 246b6cee71dSXin LI# MIPS archive; they're in the portable archive format, and need to go 247b6cee71dSXin LI# before the entry for regular portable archives, as it's recognized as 248b6cee71dSXin LI# a portable archive whose first member has a name beginning with 249b6cee71dSXin LI# "__________E". 250b6cee71dSXin LI# 251b6cee71dSXin LI0 string =!<arch>\n__________E MIPS archive 252b6cee71dSXin LI!:mime application/x-archive 253b6cee71dSXin LI>20 string U with MIPS Ucode members 254b6cee71dSXin LI>21 string L with MIPSEL members 255b6cee71dSXin LI>21 string B with MIPSEB members 256b6cee71dSXin LI>19 string L and an EL hash table 257b6cee71dSXin LI>19 string B and an EB hash table 258b6cee71dSXin LI>22 string X -- out of date 259b6cee71dSXin LI 260b6cee71dSXin LI0 search/1 -h- Software Tools format archive text 261b6cee71dSXin LI 262b6cee71dSXin LI# 263b6cee71dSXin LI# BSD/SVR2-and-later portable archive formats. 264b6cee71dSXin LI# 265*2dc4dbb9SEitan Adler0 string =!<arch>\n current ar archive 266b6cee71dSXin LI!:mime application/x-archive 267b6cee71dSXin LI>8 string __.SYMDEF random library 268b6cee71dSXin LI>68 string __.SYMDEF\ SORTED random library 269b6cee71dSXin LI 270b6cee71dSXin LI# 271b6cee71dSXin LI# "Thin" archive, as can be produced by GNU ar. 272b6cee71dSXin LI# 273b6cee71dSXin LI0 string =!<thin>\n thin archive with 274b6cee71dSXin LI>68 belong 0 no symbol entries 275b6cee71dSXin LI>68 belong 1 %d symbol entry 276b6cee71dSXin LI>68 belong >1 %d symbol entries 277b6cee71dSXin LI 278b6cee71dSXin LI# ARC archiver, from Daniel Quinlan (quinlan@yggdrasil.com) 279b6cee71dSXin LI# 280b6cee71dSXin LI# The first byte is the magic (0x1a), byte 2 is the compression type for 281b6cee71dSXin LI# the first file (0x01 through 0x09), and bytes 3 to 15 are the MS-DOS 282b6cee71dSXin LI# filename of the first file (null terminated). Since some types collide 283b6cee71dSXin LI# we only test some types on basis of frequency: 0x08 (83%), 0x09 (5%), 284b6cee71dSXin LI# 0x02 (5%), 0x03 (3%), 0x04 (2%), 0x06 (2%). 0x01 collides with terminfo. 285b6cee71dSXin LI0 lelong&0x8080ffff 0x0000081a ARC archive data, dynamic LZW 286b6cee71dSXin LI!:mime application/x-arc 287b6cee71dSXin LI0 lelong&0x8080ffff 0x0000091a ARC archive data, squashed 288b6cee71dSXin LI!:mime application/x-arc 289b6cee71dSXin LI0 lelong&0x8080ffff 0x0000021a ARC archive data, uncompressed 290b6cee71dSXin LI!:mime application/x-arc 291b6cee71dSXin LI0 lelong&0x8080ffff 0x0000031a ARC archive data, packed 292b6cee71dSXin LI!:mime application/x-arc 293b6cee71dSXin LI0 lelong&0x8080ffff 0x0000041a ARC archive data, squeezed 294b6cee71dSXin LI!:mime application/x-arc 295b6cee71dSXin LI0 lelong&0x8080ffff 0x0000061a ARC archive data, crunched 296b6cee71dSXin LI!:mime application/x-arc 297b6cee71dSXin LI# [JW] stuff taken from idarc, obviously ARC successors: 298b6cee71dSXin LI0 lelong&0x8080ffff 0x00000a1a PAK archive data 299b6cee71dSXin LI!:mime application/x-arc 300b6cee71dSXin LI0 lelong&0x8080ffff 0x0000141a ARC+ archive data 301b6cee71dSXin LI!:mime application/x-arc 302b6cee71dSXin LI0 lelong&0x8080ffff 0x0000481a HYP archive data 303b6cee71dSXin LI!:mime application/x-arc 304b6cee71dSXin LI 305b6cee71dSXin LI# Acorn archive formats (Disaster prone simpleton, m91dps@ecs.ox.ac.uk) 306b6cee71dSXin LI# I can't create either SPARK or ArcFS archives so I have not tested this stuff 307b6cee71dSXin LI# [GRR: the original entries collide with ARC, above; replaced with combined 308b6cee71dSXin LI# version (not tested)] 309b6cee71dSXin LI#0 byte 0x1a RISC OS archive (spark format) 310b6cee71dSXin LI0 string \032archive RISC OS archive (ArcFS format) 311b6cee71dSXin LI0 string Archive\000 RISC OS archive (ArcFS format) 312b6cee71dSXin LI 313b6cee71dSXin LI# All these were taken from idarc, many could not be verified. Unfortunately, 314b6cee71dSXin LI# there were many low-quality sigs, i.e. easy to trigger false positives. 315b6cee71dSXin LI# Please notify me of any real-world fishy/ambiguous signatures and I'll try 316b6cee71dSXin LI# to get my hands on the actual archiver and see if I find something better. [JW] 317b6cee71dSXin LI# probably many can be enhanced by finding some 0-byte or control char near the start 318b6cee71dSXin LI 319b6cee71dSXin LI# idarc calls this Crush/Uncompressed... *shrug* 320b6cee71dSXin LI0 string CRUSH Crush archive data 321b6cee71dSXin LI# Squeeze It (.sqz) 322b6cee71dSXin LI0 string HLSQZ Squeeze It archive data 323b6cee71dSXin LI# SQWEZ 324b6cee71dSXin LI0 string SQWEZ SQWEZ archive data 325b6cee71dSXin LI# HPack (.hpk) 326b6cee71dSXin LI0 string HPAK HPack archive data 327b6cee71dSXin LI# HAP 328b6cee71dSXin LI0 string \x91\x33HF HAP archive data 329b6cee71dSXin LI# MD/MDCD 330b6cee71dSXin LI0 string MDmd MDCD archive data 331b6cee71dSXin LI# LIM 332b6cee71dSXin LI0 string LIM\x1a LIM archive data 333b6cee71dSXin LI# SAR 334b6cee71dSXin LI3 string LH5 SAR archive data 335b6cee71dSXin LI# BSArc/BS2 336b6cee71dSXin LI0 string \212\3SB\020\0 BSArc/BS2 archive data 337b6cee71dSXin LI# Bethesda Softworks Archive (Oblivion) 338b6cee71dSXin LI0 string BSA\0 BSArc archive data 339b6cee71dSXin LI>4 lelong x version %d 340b6cee71dSXin LI# MAR 341b6cee71dSXin LI2 string =-ah MAR archive data 342b6cee71dSXin LI# ACB 343b6cee71dSXin LI#0 belong&0x00f800ff 0x00800000 ACB archive data 344b6cee71dSXin LI# CPZ 345b6cee71dSXin LI# TODO, this is what idarc says: 0 string \0\0\0 CPZ archive data 346b6cee71dSXin LI# JRC 347b6cee71dSXin LI0 string JRchive JRC archive data 348b6cee71dSXin LI# Quantum 349b6cee71dSXin LI0 string DS\0 Quantum archive data 350b6cee71dSXin LI# ReSOF 351b6cee71dSXin LI0 string PK\3\6 ReSOF archive data 352b6cee71dSXin LI# QuArk 353b6cee71dSXin LI0 string 7\4 QuArk archive data 354b6cee71dSXin LI# YAC 355b6cee71dSXin LI14 string YC YAC archive data 356b6cee71dSXin LI# X1 357b6cee71dSXin LI0 string X1 X1 archive data 358b6cee71dSXin LI0 string XhDr X1 archive data 359b6cee71dSXin LI# CDC Codec (.dqt) 360b6cee71dSXin LI0 belong&0xffffe000 0x76ff2000 CDC Codec archive data 361b6cee71dSXin LI# AMGC 362b6cee71dSXin LI0 string \xad6" AMGC archive data 363b6cee71dSXin LI# NuLIB 364b6cee71dSXin LI0 string N\xc3\xb5F\xc3\xa9lx\xc3\xa5 NuLIB archive data 365b6cee71dSXin LI# PakLeo 366b6cee71dSXin LI0 string LEOLZW PAKLeo archive data 367b6cee71dSXin LI# ChArc 368b6cee71dSXin LI0 string SChF ChArc archive data 369b6cee71dSXin LI# PSA 370b6cee71dSXin LI0 string PSA PSA archive data 371b6cee71dSXin LI# CrossePAC 372b6cee71dSXin LI0 string DSIGDCC CrossePAC archive data 373b6cee71dSXin LI# Freeze 374b6cee71dSXin LI0 string \x1f\x9f\x4a\x10\x0a Freeze archive data 375b6cee71dSXin LI# KBoom 376b6cee71dSXin LI0 string \xc2\xa8MP\xc2\xa8 KBoom archive data 377b6cee71dSXin LI# NSQ, must go after CDC Codec 378b6cee71dSXin LI0 string \x76\xff NSQ archive data 379b6cee71dSXin LI# DPA 380b6cee71dSXin LI0 string Dirk\ Paehl DPA archive data 381b6cee71dSXin LI# BA 382b6cee71dSXin LI# TODO: idarc says "bytes 0-2 == bytes 3-5" 383b6cee71dSXin LI# TTComp 3843e41d09dSXin LI# URL: http://fileformats.archiveteam.org/wiki/TTComp_archive 3853e41d09dSXin LI# Update: Joerg Jenderek 3863e41d09dSXin LI# GRR: line below is too general as it matches also Panorama database "TCDB 2003-10 demo.pan", others 3873e41d09dSXin LI0 string \0\6 3883e41d09dSXin LI# look for first keyword of Panorama database *.pan 3893e41d09dSXin LI>12 search/261 DESIGN 3903e41d09dSXin LI# skip keyword with low entropy 3913e41d09dSXin LI>12 default x TTComp archive, binary, 4K dictionary 3923e41d09dSXin LI# (version 5.25) labeled the above entry as "TTComp archive data" 393b6cee71dSXin LI# ESP, could this conflict with Easy Software Products' (e.g.ESP ghostscript) documentation? 394b6cee71dSXin LI0 string ESP ESP archive data 395b6cee71dSXin LI# ZPack 396b6cee71dSXin LI0 string \1ZPK\1 ZPack archive data 397b6cee71dSXin LI# Sky 398b6cee71dSXin LI0 string \xbc\x40 Sky archive data 399b6cee71dSXin LI# UFA 400b6cee71dSXin LI0 string UFA UFA archive data 401b6cee71dSXin LI# Dry 402b6cee71dSXin LI0 string =-H2O DRY archive data 403b6cee71dSXin LI# FoxSQZ 404b6cee71dSXin LI0 string FOXSQZ FoxSQZ archive data 405b6cee71dSXin LI# AR7 406b6cee71dSXin LI0 string ,AR7 AR7 archive data 407b6cee71dSXin LI# PPMZ 408b6cee71dSXin LI0 string PPMZ PPMZ archive data 409b6cee71dSXin LI# MS Compress 41058a0f0d0SEitan Adler# Update: Joerg Jenderek 41158a0f0d0SEitan Adler# URL: http://fileformats.archiveteam.org/wiki/MS-DOS_installation_compression 41258a0f0d0SEitan Adler# Reference: https://hwiegman.home.xs4all.nl/fileformats/compress/szdd_kwaj_format.html 41358a0f0d0SEitan Adler# Note: use correct version of extracting tool like EXPAND, UNPACK, DECOMP or 7Z 41458a0f0d0SEitan Adler4 string \x88\xf0\x27 41558a0f0d0SEitan Adler# KWAJ variant 41658a0f0d0SEitan Adler>0 string KWAJ MS Compress archive data, KWAJ variant 41758a0f0d0SEitan Adler!:mime application/x-ms-compress-kwaj 41858a0f0d0SEitan Adler# extension not working in version 5.32 41958a0f0d0SEitan Adler# magic/Magdir/archive, 284: Warning: EXTENSION type ` ??_' has bad char '?' 42058a0f0d0SEitan Adler# file: line 284: Bad magic entry ' ??_' 42158a0f0d0SEitan Adler!:ext ??_ 42258a0f0d0SEitan Adler# compression method (0-4) 42358a0f0d0SEitan Adler>>8 uleshort x \b, %u method 42458a0f0d0SEitan Adler# offset of compressed data 42558a0f0d0SEitan Adler>>10 uleshort x \b, 0x%x offset 42658a0f0d0SEitan Adler#>>(10.s) uleshort x 42758a0f0d0SEitan Adler#>>>&-6 string x \b, TEST extension %-.3s 42858a0f0d0SEitan Adler# header flags to mark header extensions 42958a0f0d0SEitan Adler>>12 uleshort >0 \b, 0x%x flags 43058a0f0d0SEitan Adler# 4 bytes: decompressed length of file 43158a0f0d0SEitan Adler>>12 uleshort &0x01 43258a0f0d0SEitan Adler>>>14 ulelong x \b, original size: %u bytes 43358a0f0d0SEitan Adler# 2 bytes: unknown purpose 43458a0f0d0SEitan Adler# 2 bytes: length of unknown data + mentioned bytes 43558a0f0d0SEitan Adler# 1-9 bytes: null-terminated file name 43658a0f0d0SEitan Adler# 1-4 bytes: null-terminated file extension 43758a0f0d0SEitan Adler>>12 uleshort &0x08 43858a0f0d0SEitan Adler>>>12 uleshort ^0x01 43958a0f0d0SEitan Adler>>>>12 uleshort ^0x02 44058a0f0d0SEitan Adler>>>>>12 uleshort ^0x04 44158a0f0d0SEitan Adler>>>>>>12 uleshort ^0x10 44258a0f0d0SEitan Adler>>>>>>>14 string x \b, %-.8s 44358a0f0d0SEitan Adler>>>>>>12 uleshort &0x10 44458a0f0d0SEitan Adler>>>>>>>14 string x \b, %-.8s 44558a0f0d0SEitan Adler>>>>>>>>&1 string x \b.%-.3s 44658a0f0d0SEitan Adler>>>>>12 uleshort &0x04 44758a0f0d0SEitan Adler>>>>>>12 uleshort ^0x10 44858a0f0d0SEitan Adler>>>>>>>(14.s) uleshort x 44958a0f0d0SEitan Adler>>>>>>>>&14 string x \b, %-.8s 45058a0f0d0SEitan Adler>>>>>>12 uleshort &0x10 45158a0f0d0SEitan Adler>>>>>>>(14.s) uleshort x 45258a0f0d0SEitan Adler>>>>>>>>&14 string x \b, %-.8s 45358a0f0d0SEitan Adler>>>>>>>>>&1 string x \b.%-.3s 45458a0f0d0SEitan Adler>>>>12 uleshort &0x02 45558a0f0d0SEitan Adler>>>>>12 uleshort ^0x04 45658a0f0d0SEitan Adler>>>>>>12 uleshort ^0x10 45758a0f0d0SEitan Adler>>>>>>>16 string x \b, %-.8s 45858a0f0d0SEitan Adler>>>>>>12 uleshort &0x10 45958a0f0d0SEitan Adler>>>>>>>16 string x \b, %-.8s 46058a0f0d0SEitan Adler>>>>>>>>&1 string x \b.%-.3s 46158a0f0d0SEitan Adler>>>>>12 uleshort &0x04 46258a0f0d0SEitan Adler>>>>>>12 uleshort ^0x10 46358a0f0d0SEitan Adler>>>>>>>(16.s) uleshort x 46458a0f0d0SEitan Adler>>>>>>>>&16 string x \b, %-.8s 46558a0f0d0SEitan Adler>>>>>>12 uleshort &0x10 46658a0f0d0SEitan Adler>>>>>>>(16.s) uleshort x 46758a0f0d0SEitan Adler>>>>>>>&16 string x %-.8s 46858a0f0d0SEitan Adler>>>>>>>>&1 string x \b.%-.3s 46958a0f0d0SEitan Adler>>>12 uleshort &0x01 47058a0f0d0SEitan Adler>>>>12 uleshort ^0x02 47158a0f0d0SEitan Adler>>>>>12 uleshort ^0x04 47258a0f0d0SEitan Adler>>>>>>12 uleshort ^0x10 47358a0f0d0SEitan Adler>>>>>>>18 string x \b, %-.8s 47458a0f0d0SEitan Adler>>>>>>12 uleshort &0x10 47558a0f0d0SEitan Adler>>>>>>>18 string x \b, %-.8s 47658a0f0d0SEitan Adler>>>>>>>>&1 string x \b.%-.3s 47758a0f0d0SEitan Adler>>>>>12 uleshort &0x04 47858a0f0d0SEitan Adler>>>>>>12 uleshort ^0x10 47958a0f0d0SEitan Adler>>>>>>>(18.s) uleshort x 48058a0f0d0SEitan Adler>>>>>>>>&18 string x \b, %-.8s 48158a0f0d0SEitan Adler>>>>>>12 uleshort &0x10 48258a0f0d0SEitan Adler>>>>>>>(18.s) uleshort x 48358a0f0d0SEitan Adler>>>>>>>>&18 string x \b, %-.8s 48458a0f0d0SEitan Adler>>>>>>>>>&1 string x \b.%-.3s 48558a0f0d0SEitan Adler>>>>12 uleshort &0x02 48658a0f0d0SEitan Adler>>>>>12 uleshort ^0x04 48758a0f0d0SEitan Adler>>>>>>12 uleshort ^0x10 48858a0f0d0SEitan Adler>>>>>>>20 string x \b, %-.8s 48958a0f0d0SEitan Adler>>>>>>12 uleshort &0x10 49058a0f0d0SEitan Adler>>>>>>>20 string x \b, %-.8s 49158a0f0d0SEitan Adler>>>>>>>>&1 string x \b.%-.3s 49258a0f0d0SEitan Adler>>>>>12 uleshort &0x04 49358a0f0d0SEitan Adler>>>>>>12 uleshort ^0x10 49458a0f0d0SEitan Adler>>>>>>>(20.s) uleshort x 49558a0f0d0SEitan Adler>>>>>>>>&20 string x \b, %-.8s 49658a0f0d0SEitan Adler>>>>>>12 uleshort &0x10 49758a0f0d0SEitan Adler>>>>>>>(20.s) uleshort x 49858a0f0d0SEitan Adler>>>>>>>>&20 string x \b, %-.8s 49958a0f0d0SEitan Adler>>>>>>>>>&1 string x \b.%-.3s 50058a0f0d0SEitan Adler# 2 bytes: length of data + mentioned bytes 50158a0f0d0SEitan Adler# 50258a0f0d0SEitan Adler# SZDD variant Haruhiko Okumura's LZSS or 7z type MsLZ 50358a0f0d0SEitan Adler>0 string SZDD MS Compress archive data, SZDD variant 50458a0f0d0SEitan Adler!:mime application/x-ms-compress-szdd 50558a0f0d0SEitan Adler!:ext ??_ 50658a0f0d0SEitan Adler# The character missing from the end of the filename (0=unknown) 50758a0f0d0SEitan Adler>>9 string >\0 \b, %-.1s is last character of original name 50858a0f0d0SEitan Adler# https://www.betaarchive.com/forum/viewtopic.php?t=26161 50958a0f0d0SEitan Adler# Compression mode: "A" (0x41) found but sometimes "B" in Windows 3.1 builds 026 and 034e 51058a0f0d0SEitan Adler>>8 string !A \b, %-.1s method 51158a0f0d0SEitan Adler>>10 ulelong >0 \b, original size: %u bytes 51258a0f0d0SEitan Adler# QBasic SZDD variant 51358a0f0d0SEitan Adler3 string \x88\xf0\x27 51458a0f0d0SEitan Adler>0 string SZ\x20 MS Compress archive data, QBasic variant 51558a0f0d0SEitan Adler!:mime application/x-ms-compress-sz 51658a0f0d0SEitan Adler!:ext ??$ 51758a0f0d0SEitan Adler>>8 ulelong >0 \b, original size: %u bytes 51858a0f0d0SEitan Adler 519b6cee71dSXin LI# MP3 (archiver, not lossy audio compression) 520b6cee71dSXin LI0 string MP3\x1a MP3-Archiver archive data 521b6cee71dSXin LI# ZET 522b6cee71dSXin LI0 string OZ\xc3\x9d ZET archive data 523b6cee71dSXin LI# TSComp 524b6cee71dSXin LI0 string \x65\x5d\x13\x8c\x08\x01\x03\x00 TSComp archive data 525b6cee71dSXin LI# ARQ 526b6cee71dSXin LI0 string gW\4\1 ARQ archive data 527b6cee71dSXin LI# Squash 528b6cee71dSXin LI3 string OctSqu Squash archive data 529b6cee71dSXin LI# Terse 530b6cee71dSXin LI0 string \5\1\1\0 Terse archive data 531b6cee71dSXin LI# PUCrunch 532b6cee71dSXin LI0 string \x01\x08\x0b\x08\xef\x00\x9e\x32\x30\x36\x31 PUCrunch archive data 533b6cee71dSXin LI# UHarc 534b6cee71dSXin LI0 string UHA UHarc archive data 535b6cee71dSXin LI# ABComp 536b6cee71dSXin LI0 string \2AB ABComp archive data 537b6cee71dSXin LI0 string \3AB2 ABComp archive data 538b6cee71dSXin LI# CMP 539b6cee71dSXin LI0 string CO\0 CMP archive data 540b6cee71dSXin LI# Splint 541b6cee71dSXin LI0 string \x93\xb9\x06 Splint archive data 542b6cee71dSXin LI# InstallShield 543b6cee71dSXin LI0 string \x13\x5d\x65\x8c InstallShield Z archive Data 544b6cee71dSXin LI# Gather 545b6cee71dSXin LI1 string GTH Gather archive data 546b6cee71dSXin LI# BOA 547b6cee71dSXin LI0 string BOA BOA archive data 548b6cee71dSXin LI# RAX 549b6cee71dSXin LI0 string ULEB\xa RAX archive data 550b6cee71dSXin LI# Xtreme 551b6cee71dSXin LI0 string ULEB\0 Xtreme archive data 552b6cee71dSXin LI# Pack Magic 553b6cee71dSXin LI0 string @\xc3\xa2\1\0 Pack Magic archive data 554b6cee71dSXin LI# BTS 555b6cee71dSXin LI0 belong&0xfeffffff 0x1a034465 BTS archive data 556b6cee71dSXin LI# ELI 5750 557b6cee71dSXin LI0 string Ora\ ELI 5750 archive data 558b6cee71dSXin LI# QFC 559b6cee71dSXin LI0 string \x1aFC\x1a QFC archive data 560b6cee71dSXin LI0 string \x1aQF\x1a QFC archive data 561b6cee71dSXin LI# PRO-PACK 562b6cee71dSXin LI0 string RNC PRO-PACK archive data 563b6cee71dSXin LI# 777 564b6cee71dSXin LI0 string 777 777 archive data 565b6cee71dSXin LI# LZS221 566b6cee71dSXin LI0 string sTaC LZS221 archive data 567b6cee71dSXin LI# HPA 568b6cee71dSXin LI0 string HPA HPA archive data 569b6cee71dSXin LI# Arhangel 570b6cee71dSXin LI0 string LG Arhangel archive data 571b6cee71dSXin LI# EXP1, uses bzip2 572b6cee71dSXin LI0 string 0123456789012345BZh EXP1 archive data 573b6cee71dSXin LI# IMP 574b6cee71dSXin LI0 string IMP\xa IMP archive data 575b6cee71dSXin LI# NRV 576b6cee71dSXin LI0 string \x00\x9E\x6E\x72\x76\xFF NRV archive data 577b6cee71dSXin LI# Squish 578b6cee71dSXin LI0 string \x73\xb2\x90\xf4 Squish archive data 579b6cee71dSXin LI# Par 580b6cee71dSXin LI0 string PHILIPP Par archive data 581b6cee71dSXin LI0 string PAR Par archive data 582b6cee71dSXin LI# HIT 583b6cee71dSXin LI0 string UB HIT archive data 584b6cee71dSXin LI# SBX 585b6cee71dSXin LI0 belong&0xfffff000 0x53423000 SBX archive data 586b6cee71dSXin LI# NaShrink 587b6cee71dSXin LI0 string NSK NaShrink archive data 588b6cee71dSXin LI# SAPCAR 589b6cee71dSXin LI0 string #\ CAR\ archive\ header SAPCAR archive data 590b6cee71dSXin LI0 string CAR\ 2.00RG SAPCAR archive data 591b6cee71dSXin LI# Disintegrator 592b6cee71dSXin LI0 string DST Disintegrator archive data 593b6cee71dSXin LI# ASD 594b6cee71dSXin LI0 string ASD ASD archive data 595b6cee71dSXin LI# InstallShield CAB 596b6cee71dSXin LI0 string ISc( InstallShield CAB 597b6cee71dSXin LI# TOP4 598b6cee71dSXin LI0 string T4\x1a TOP4 archive data 599b6cee71dSXin LI# BatComp left out: sig looks like COM executable 600b6cee71dSXin LI# so TODO: get real 4dos batcomp file and find sig 601b6cee71dSXin LI# BlakHole 602b6cee71dSXin LI0 string BH\5\7 BlakHole archive data 603b6cee71dSXin LI# BIX 604b6cee71dSXin LI0 string BIX0 BIX archive data 605b6cee71dSXin LI# ChiefLZA 606b6cee71dSXin LI0 string ChfLZ ChiefLZA archive data 607b6cee71dSXin LI# Blink 608b6cee71dSXin LI0 string Blink Blink archive data 609b6cee71dSXin LI# Logitech Compress 610b6cee71dSXin LI0 string \xda\xfa Logitech Compress archive data 611b6cee71dSXin LI# ARS-Sfx (FIXME: really a SFX? then goto COM/EXE) 612b6cee71dSXin LI1 string (C)\ STEPANYUK ARS-Sfx archive data 613b6cee71dSXin LI# AKT/AKT32 614b6cee71dSXin LI0 string AKT32 AKT32 archive data 615b6cee71dSXin LI0 string AKT AKT archive data 616b6cee71dSXin LI# NPack 617b6cee71dSXin LI0 string MSTSM NPack archive data 618b6cee71dSXin LI# PFT 619b6cee71dSXin LI0 string \0\x50\0\x14 PFT archive data 620b6cee71dSXin LI# SemOne 621b6cee71dSXin LI0 string SEM SemOne archive data 622b6cee71dSXin LI# PPMD 623b6cee71dSXin LI0 string \x8f\xaf\xac\x84 PPMD archive data 624b6cee71dSXin LI# FIZ 625b6cee71dSXin LI0 string FIZ FIZ archive data 626b6cee71dSXin LI# MSXiE 627b6cee71dSXin LI0 belong&0xfffff0f0 0x4d530000 MSXiE archive data 628b6cee71dSXin LI# DeepFreezer 629b6cee71dSXin LI0 belong&0xfffffff0 0x797a3030 DeepFreezer archive data 630b6cee71dSXin LI# DC 631b6cee71dSXin LI0 string =<DC- DC archive data 632b6cee71dSXin LI# TPac 633b6cee71dSXin LI0 string \4TPAC\3 TPac archive data 634b6cee71dSXin LI# Ai 635b6cee71dSXin LI0 string Ai\1\1\0 Ai archive data 636b6cee71dSXin LI0 string Ai\1\0\0 Ai archive data 637b6cee71dSXin LI# Ai32 638b6cee71dSXin LI0 string Ai\2\0 Ai32 archive data 639b6cee71dSXin LI0 string Ai\2\1 Ai32 archive data 640b6cee71dSXin LI# SBC 641b6cee71dSXin LI0 string SBC SBC archive data 642b6cee71dSXin LI# Ybs 643b6cee71dSXin LI0 string YBS Ybs archive data 644b6cee71dSXin LI# DitPack 645b6cee71dSXin LI0 string \x9e\0\0 DitPack archive data 646b6cee71dSXin LI# DMS 647b6cee71dSXin LI0 string DMS! DMS archive data 648b6cee71dSXin LI# EPC 649b6cee71dSXin LI0 string \x8f\xaf\xac\x8c EPC archive data 650b6cee71dSXin LI# VSARC 651b6cee71dSXin LI0 string VS\x1a VSARC archive data 652b6cee71dSXin LI# PDZ 653b6cee71dSXin LI0 string PDZ PDZ archive data 654b6cee71dSXin LI# ReDuq 655b6cee71dSXin LI0 string rdqx ReDuq archive data 656b6cee71dSXin LI# GCA 657b6cee71dSXin LI0 string GCAX GCA archive data 658b6cee71dSXin LI# PPMN 659b6cee71dSXin LI0 string pN PPMN archive data 660b6cee71dSXin LI# WinImage 661b6cee71dSXin LI3 string WINIMAGE WinImage archive data 662b6cee71dSXin LI# Compressia 663b6cee71dSXin LI0 string CMP0CMP Compressia archive data 664b6cee71dSXin LI# UHBC 665b6cee71dSXin LI0 string UHB UHBC archive data 666b6cee71dSXin LI# WinHKI 667b6cee71dSXin LI0 string \x61\x5C\x04\x05 WinHKI archive data 668b6cee71dSXin LI# WWPack data file 669b6cee71dSXin LI0 string WWP WWPack archive data 670b6cee71dSXin LI# BSN (BSA, PTS-DOS) 671b6cee71dSXin LI0 string \xffBSG BSN archive data 672b6cee71dSXin LI1 string \xffBSG BSN archive data 673b6cee71dSXin LI3 string \xffBSG BSN archive data 674b6cee71dSXin LI1 string \0\xae\2 BSN archive data 675b6cee71dSXin LI1 string \0\xae\3 BSN archive data 676b6cee71dSXin LI1 string \0\xae\7 BSN archive data 677b6cee71dSXin LI# AIN 678b6cee71dSXin LI0 string \x33\x18 AIN archive data 679b6cee71dSXin LI0 string \x33\x17 AIN archive data 6809ce06829SXin LI# XPA32 test moved and merged with XPA by Joerg Jenderek at Sep 2015 681b6cee71dSXin LI# SZip (TODO: doesn't catch all versions) 682b6cee71dSXin LI0 string SZ\x0a\4 SZip archive data 683b6cee71dSXin LI# XPack DiskImage 6849ce06829SXin LI# *.XDI updated by Joerg Jenderek Sep 2015 6859ce06829SXin LI# ftp://ftp.sac.sk/pub/sac/pack/0index.txt 6869ce06829SXin LI# GRR: this test is still too general as it catches also text files starting with jm 6879ce06829SXin LI0 string jm 6889ce06829SXin LI# only found examples with this additional characteristic 2 bytes 6899ce06829SXin LI>2 string \x2\x4 Xpack DiskImage archive data 6909ce06829SXin LI#!:ext xdi 691b6cee71dSXin LI# XPack Data 6929ce06829SXin LI# *.xpa updated by Joerg Jenderek Sep 2015 6939ce06829SXin LI# ftp://ftp.elf.stuba.sk/pub/pc/pack/ 6949ce06829SXin LI0 string xpa XPA 6959ce06829SXin LI!:ext xpa 6969ce06829SXin LI# XPA32 6979ce06829SXin LI# ftp://ftp.elf.stuba.sk/pub/pc/pack/xpa32.zip 6989ce06829SXin LI# created by XPA32.EXE version 1.0.2 for Windows 6999ce06829SXin LI>0 string xpa\0\1 \b32 archive data 7009ce06829SXin LI# created by XPACK.COM version 1.67m or 1.67r with short 0x1800 7019ce06829SXin LI>3 ubeshort !0x0001 \bck archive data 702b6cee71dSXin LI# XPack Single Data 7039ce06829SXin LI# changed by Joerg Jenderek Sep 2015 back to like in version 5.12 7049ce06829SXin LI# letter 'I'+ acute accent is equivalent to \xcd 7059ce06829SXin LI0 string \xcd\ jm Xpack single archive data 7069ce06829SXin LI#!:mime application/x-xpa-compressed 7079ce06829SXin LI!:ext xpa 708b6cee71dSXin LI 709b6cee71dSXin LI# TODO: missing due to unknown magic/magic at end of file: 710b6cee71dSXin LI#DWC 711b6cee71dSXin LI#ARG 712b6cee71dSXin LI#ZAR 713b6cee71dSXin LI#PC/3270 714b6cee71dSXin LI#InstallIt 715b6cee71dSXin LI#RKive 716b6cee71dSXin LI#RK 717b6cee71dSXin LI#XPack Diskimage 718b6cee71dSXin LI 719b6cee71dSXin LI# These were inspired by idarc, but actually verified 720b6cee71dSXin LI# Dzip archiver (.dz) 72158a0f0d0SEitan Adler# Update: Joerg Jenderek 72258a0f0d0SEitan Adler# URL: http://speeddemosarchive.com/dzip/ 72358a0f0d0SEitan Adler# reference: http://speeddemosarchive.com/dzip/dz29src.zip/main.c 72458a0f0d0SEitan Adler# GRR: line below is too general as it matches also ASCII texts like Doszip commander help dz.txt 72558a0f0d0SEitan Adler0 string DZ 72658a0f0d0SEitan Adler# latest version is 2.9 dated 7 may 2003 72758a0f0d0SEitan Adler>2 byte <4 Dzip archive data 72858a0f0d0SEitan Adler!:mime application/x-dzip 72958a0f0d0SEitan Adler!:ext dz 73058a0f0d0SEitan Adler>>2 byte x \b, version %i 73158a0f0d0SEitan Adler>>3 byte x \b.%i 73258a0f0d0SEitan Adler>>4 ulelong x \b, offset 0x%x 73358a0f0d0SEitan Adler>>8 ulelong x \b, %u files 734b6cee71dSXin LI# ZZip archiver (.zz) 735b6cee71dSXin LI0 string ZZ\ \0\0 ZZip archive data 736b6cee71dSXin LI0 string ZZ0 ZZip archive data 737b6cee71dSXin LI# PAQ archiver (.paq) 738b6cee71dSXin LI0 string \xaa\x40\x5f\x77\x1f\xe5\x82\x0d PAQ archive data 739b6cee71dSXin LI0 string PAQ PAQ archive data 740b6cee71dSXin LI>3 byte&0xf0 0x30 741b6cee71dSXin LI>>3 byte x (v%c) 742b6cee71dSXin LI# JAR archiver (.j), this is the successor to ARJ, not Java's JAR (which is essentially ZIP) 743b6cee71dSXin LI0xe string \x1aJar\x1b JAR (ARJ Software, Inc.) archive data 744b6cee71dSXin LI0 string JARCS JAR (ARJ Software, Inc.) archive data 745b6cee71dSXin LI 746b6cee71dSXin LI# ARJ archiver (jason@jarthur.Claremont.EDU) 747b6cee71dSXin LI0 leshort 0xea60 ARJ archive data 748b6cee71dSXin LI!:mime application/x-arj 749b6cee71dSXin LI>5 byte x \b, v%d, 750b6cee71dSXin LI>8 byte &0x04 multi-volume, 751b6cee71dSXin LI>8 byte &0x10 slash-switched, 752b6cee71dSXin LI>8 byte &0x20 backup, 753b6cee71dSXin LI>34 string x original name: %s, 754b6cee71dSXin LI>7 byte 0 os: MS-DOS 755b6cee71dSXin LI>7 byte 1 os: PRIMOS 756b6cee71dSXin LI>7 byte 2 os: Unix 757b6cee71dSXin LI>7 byte 3 os: Amiga 758b6cee71dSXin LI>7 byte 4 os: Macintosh 759b6cee71dSXin LI>7 byte 5 os: OS/2 760b6cee71dSXin LI>7 byte 6 os: Apple ][ GS 761b6cee71dSXin LI>7 byte 7 os: Atari ST 762b6cee71dSXin LI>7 byte 8 os: NeXT 763b6cee71dSXin LI>7 byte 9 os: VAX/VMS 764b6cee71dSXin LI>3 byte >0 %d] 765b6cee71dSXin LI# [JW] idarc says this is also possible 766b6cee71dSXin LI2 leshort 0xea60 ARJ archive data 767b6cee71dSXin LI 768b6cee71dSXin LI# HA archiver (Greg Roelofs, newt@uchicago.edu) 769b6cee71dSXin LI# This is a really bad format. A file containing HAWAII will match this... 770b6cee71dSXin LI#0 string HA HA archive data, 771b6cee71dSXin LI#>2 leshort =1 1 file, 772b6cee71dSXin LI#>2 leshort >1 %hu files, 773b6cee71dSXin LI#>4 byte&0x0f =0 first is type CPY 774b6cee71dSXin LI#>4 byte&0x0f =1 first is type ASC 775b6cee71dSXin LI#>4 byte&0x0f =2 first is type HSC 776b6cee71dSXin LI#>4 byte&0x0f =0x0e first is type DIR 777b6cee71dSXin LI#>4 byte&0x0f =0x0f first is type SPECIAL 778b6cee71dSXin LI# suggestion: at least identify small archives (<1024 files) 779b6cee71dSXin LI0 belong&0xffff00fc 0x48410000 HA archive data 780b6cee71dSXin LI>2 leshort =1 1 file, 781b6cee71dSXin LI>2 leshort >1 %u files, 782b6cee71dSXin LI>4 byte&0x0f =0 first is type CPY 783b6cee71dSXin LI>4 byte&0x0f =1 first is type ASC 784b6cee71dSXin LI>4 byte&0x0f =2 first is type HSC 785b6cee71dSXin LI>4 byte&0x0f =0x0e first is type DIR 786b6cee71dSXin LI>4 byte&0x0f =0x0f first is type SPECIAL 787b6cee71dSXin LI 788b6cee71dSXin LI# HPACK archiver (Peter Gutmann, pgut1@cs.aukuni.ac.nz) 789b6cee71dSXin LI0 string HPAK HPACK archive data 790b6cee71dSXin LI 791b6cee71dSXin LI# JAM Archive volume format, by Dmitry.Kohmanyuk@UA.net 792b6cee71dSXin LI0 string \351,\001JAM\ JAM archive, 793b6cee71dSXin LI>7 string >\0 version %.4s 794b6cee71dSXin LI>0x26 byte =0x27 - 795b6cee71dSXin LI>>0x2b string >\0 label %.11s, 796b6cee71dSXin LI>>0x27 lelong x serial %08x, 797b6cee71dSXin LI>>0x36 string >\0 fstype %.8s 798b6cee71dSXin LI 799b6cee71dSXin LI# LHARC/LHA archiver (Greg Roelofs, newt@uchicago.edu) 8003e41d09dSXin LI# Update: Joerg Jenderek 8013e41d09dSXin LI# URL: https://en.wikipedia.org/wiki/LHA_(file_format) 8023e41d09dSXin LI# Reference: http://web.archive.org/web/20021005080911/http://www.osirusoft.com/joejared/lzhformat.html 8033e41d09dSXin LI# 8043e41d09dSXin LI# check and display information of lharc (LHa,PMarc) file 8053e41d09dSXin LI0 name lharc-file 8063e41d09dSXin LI# check 1st character of method id like -lz4- -lh5- or -pm2- 8073e41d09dSXin LI>2 string - 8083e41d09dSXin LI# check 5th character of method id 8093e41d09dSXin LI>>6 string - 8103e41d09dSXin LI# check header level 0 1 2 3 8113e41d09dSXin LI>>>20 ubyte <4 8123e41d09dSXin LI# check 2nd, 3th and 4th character of method id 8133e41d09dSXin LI>>>>3 regex \^(lh[0-9a-ex]|lz[s2-8]|pm[012]|pc1) \b 8143e41d09dSXin LI!:mime application/x-lzh-compressed 8153e41d09dSXin LI# creator type "LHA " 8163e41d09dSXin LI!:apple ????LHA 8173e41d09dSXin LI# display archive type name like "LHa/LZS archive data" or "LArc archive" 8183e41d09dSXin LI>>>>>2 string -lz \b 8193e41d09dSXin LI!:ext lzs 8203e41d09dSXin LI# already known -lzs- -lz4- -lz5- with old names 8213e41d09dSXin LI>>>>>>2 string -lzs LHa/LZS archive data 8223e41d09dSXin LI>>>>>>3 regex \^lz[45] LHarc 1.x archive data 8233e41d09dSXin LI# missing -lz?- with wikipedia names 8243e41d09dSXin LI>>>>>>3 regex \^lz[2378] LArc archive 8253e41d09dSXin LI# display archive type name like "LHa (2.x) archive data" 8263e41d09dSXin LI>>>>>2 string -lh \b 8273e41d09dSXin LI# already known -lh0- -lh1- -lh2- -lh3- -lh4- -lh5- -lh6- -lh7- -lhd- variants with old names 8283e41d09dSXin LI>>>>>>3 regex \^lh[01] LHarc 1.x/ARX archive data 8293e41d09dSXin LI# LHice archiver use ".ICE" as name extension instead usual one ".lzh" 8303e41d09dSXin LI# FOOBAR archiver use ".foo" as name extension instead usual one 8313e41d09dSXin LI# "Florain Orjanov's and Olga Bachetska's ARchiver" not found at the moment 8323e41d09dSXin LI>>>>>>>2 string -lh1 \b 8333e41d09dSXin LI!:ext lha/lzh/ice 8343e41d09dSXin LI>>>>>>3 regex \^lh[23d] LHa 2.x? archive data 8353e41d09dSXin LI>>>>>>3 regex \^lh[7] LHa (2.x)/LHark archive data 8363e41d09dSXin LI>>>>>>3 regex \^lh[456] LHa (2.x) archive data 8373e41d09dSXin LI>>>>>>>2 string -lh5 \b 8383e41d09dSXin LI# https://en.wikipedia.org/wiki/BIOS 8393e41d09dSXin LI# Some mainboard BIOS like Award use LHa compression. So archives with unusal extension are found like 8403e41d09dSXin LI# bios.rom , kd7_v14.bin, 1010.004, ... 8413e41d09dSXin LI!:ext lha/lzh/rom/bin 8423e41d09dSXin LI# missing -lh?- variants (Joe Jared) 8433e41d09dSXin LI>>>>>>3 regex \^lh[89a-ce] LHa (Joe Jared) archive 8443e41d09dSXin LI# UNLHA32 2.67a 8453e41d09dSXin LI>>>>>>2 string -lhx LHa (UNLHA32) archive 8463e41d09dSXin LI# lha archives with standard file name extensions ".lha" ".lzh" 8473e41d09dSXin LI>>>>>>3 regex !\^(lh1|lh5) \b 8483e41d09dSXin LI!:ext lha/lzh 8493e41d09dSXin LI# this should not happen if all -lh variants are described 8503e41d09dSXin LI>>>>>>2 default x LHa (unknown) archive 8513e41d09dSXin LI#!:ext lha 8523e41d09dSXin LI# PMarc 8533e41d09dSXin LI>>>>>3 regex \^pm[012] PMarc archive data 8543e41d09dSXin LI!:ext pma 8553e41d09dSXin LI# append method id without leading and trailing minus character 8563e41d09dSXin LI>>>>>3 string x [%3.3s] 8573e41d09dSXin LI>>>>>>0 use lharc-header 8583e41d09dSXin LI# 8593e41d09dSXin LI# check and display information of lharc header 8603e41d09dSXin LI0 name lharc-header 8613e41d09dSXin LI# header size 0x4 , 0x1b-0x61 8623e41d09dSXin LI>0 ubyte x 8633e41d09dSXin LI# compressed data size != compressed file size 8643e41d09dSXin LI#>7 ulelong x \b, data size %d 8653e41d09dSXin LI# attribute: 0x2~?? 0x10~symlink|target 0x20~normal 8663e41d09dSXin LI#>19 ubyte x \b, 19_0x%x 8673e41d09dSXin LI# level identifier 0 1 2 3 8683e41d09dSXin LI#>20 ubyte x \b, level %d 8693e41d09dSXin LI# time stamp 8703e41d09dSXin LI#>15 ubelong x DATE 0x%8.8x 8713e41d09dSXin LI# OS ID for level 1 8723e41d09dSXin LI>20 ubyte 1 8733e41d09dSXin LI# 0x20 types find for *.rom files 8743e41d09dSXin LI>>(21.b+24) ubyte <0x21 \b, 0x%x OS 8753e41d09dSXin LI# ascii type like M for MSDOS 8763e41d09dSXin LI>>(21.b+24) ubyte >0x20 \b, '%c' OS 8773e41d09dSXin LI# OS ID for level 2 8783e41d09dSXin LI>20 ubyte 2 8793e41d09dSXin LI#>>23 ubyte x \b, OS ID 0x%x 8803e41d09dSXin LI>>23 ubyte <0x21 \b, 0x%x OS 8813e41d09dSXin LI>>23 ubyte >0x20 \b, '%c' OS 8823e41d09dSXin LI# filename only for level 0 and 1 8833e41d09dSXin LI>20 ubyte <2 8843e41d09dSXin LI# length of filename 8853e41d09dSXin LI>>21 ubyte >0 \b, with 8863e41d09dSXin LI# filename 8873e41d09dSXin LI>>>21 pstring x "%s" 8883e41d09dSXin LI# 8893e41d09dSXin LI#2 string -lh0- LHarc 1.x/ARX archive data [lh0] 8903e41d09dSXin LI#!:mime application/x-lharc 8913e41d09dSXin LI2 string -lh0- 8923e41d09dSXin LI>0 use lharc-file 8933e41d09dSXin LI#2 string -lh1- LHarc 1.x/ARX archive data [lh1] 8943e41d09dSXin LI#!:mime application/x-lharc 8953e41d09dSXin LI2 string -lh1- 8963e41d09dSXin LI>0 use lharc-file 8973e41d09dSXin LI# NEW -lz2- ... -lz8- 8983e41d09dSXin LI2 string -lz2- 8993e41d09dSXin LI>0 use lharc-file 9003e41d09dSXin LI2 string -lz3- 9013e41d09dSXin LI>0 use lharc-file 9023e41d09dSXin LI2 string -lz4- 9033e41d09dSXin LI>0 use lharc-file 9043e41d09dSXin LI2 string -lz5- 9053e41d09dSXin LI>0 use lharc-file 9063e41d09dSXin LI2 string -lz7- 9073e41d09dSXin LI>0 use lharc-file 9083e41d09dSXin LI2 string -lz8- 9093e41d09dSXin LI>0 use lharc-file 910b6cee71dSXin LI# [never seen any but the last; -lh4- reported in comp.compression:] 9113e41d09dSXin LI#2 string -lzs- LHa/LZS archive data [lzs] 9123e41d09dSXin LI2 string -lzs- 9133e41d09dSXin LI>0 use lharc-file 9143e41d09dSXin LI# According to wikipedia and others such a version does not exist 9153e41d09dSXin LI#2 string -lh\40- LHa 2.x? archive data [lh ] 9163e41d09dSXin LI#2 string -lhd- LHa 2.x? archive data [lhd] 9173e41d09dSXin LI2 string -lhd- 9183e41d09dSXin LI>0 use lharc-file 9193e41d09dSXin LI#2 string -lh2- LHa 2.x? archive data [lh2] 9203e41d09dSXin LI2 string -lh2- 9213e41d09dSXin LI>0 use lharc-file 9223e41d09dSXin LI#2 string -lh3- LHa 2.x? archive data [lh3] 9233e41d09dSXin LI2 string -lh3- 9243e41d09dSXin LI>0 use lharc-file 9253e41d09dSXin LI#2 string -lh4- LHa (2.x) archive data [lh4] 9263e41d09dSXin LI2 string -lh4- 9273e41d09dSXin LI>0 use lharc-file 9283e41d09dSXin LI#2 string -lh5- LHa (2.x) archive data [lh5] 9293e41d09dSXin LI2 string -lh5- 9303e41d09dSXin LI>0 use lharc-file 9313e41d09dSXin LI#2 string -lh6- LHa (2.x) archive data [lh6] 9323e41d09dSXin LI2 string -lh6- 9333e41d09dSXin LI>0 use lharc-file 9343e41d09dSXin LI#2 string -lh7- LHa (2.x)/LHark archive data [lh7] 9353e41d09dSXin LI2 string -lh7- 9363e41d09dSXin LI# !:mime application/x-lha 9373e41d09dSXin LI# >20 byte x - header level %d 9383e41d09dSXin LI>0 use lharc-file 9393e41d09dSXin LI# NEW -lh8- ... -lhe- , -lhx- 9403e41d09dSXin LI2 string -lh8- 9413e41d09dSXin LI>0 use lharc-file 9423e41d09dSXin LI2 string -lh9- 9433e41d09dSXin LI>0 use lharc-file 9443e41d09dSXin LI2 string -lha- 9453e41d09dSXin LI>0 use lharc-file 9463e41d09dSXin LI2 string -lhb- 9473e41d09dSXin LI>0 use lharc-file 9483e41d09dSXin LI2 string -lhc- 9493e41d09dSXin LI>0 use lharc-file 9503e41d09dSXin LI2 string -lhe- 9513e41d09dSXin LI>0 use lharc-file 9523e41d09dSXin LI2 string -lhx- 9533e41d09dSXin LI>0 use lharc-file 954b6cee71dSXin LI# taken from idarc [JW] 955b6cee71dSXin LI2 string -lZ PUT archive data 9563e41d09dSXin LI# already done by LHarc magics 9573e41d09dSXin LI# this should never happen if all sub types of LZS archive are identified 9583e41d09dSXin LI#2 string -lz LZS archive data 959b6cee71dSXin LI2 string -sw1- Swag archive data 960b6cee71dSXin LI 9613e41d09dSXin LI0 name rar-file-header 9623e41d09dSXin LI>24 byte 15 \b, v1.5 9633e41d09dSXin LI>24 byte 20 \b, v2.0 9643e41d09dSXin LI>24 byte 29 \b, v4 9653e41d09dSXin LI>15 byte 0 \b, os: MS-DOS 9663e41d09dSXin LI>15 byte 1 \b, os: OS/2 9673e41d09dSXin LI>15 byte 2 \b, os: Win32 9683e41d09dSXin LI>15 byte 3 \b, os: Unix 9693e41d09dSXin LI>15 byte 4 \b, os: Mac OS 9703e41d09dSXin LI>15 byte 5 \b, os: BeOS 9713e41d09dSXin LI 9723e41d09dSXin LI0 name rar-archive-header 9733e41d09dSXin LI>3 leshort&0x1ff >0 \b, flags: 9743e41d09dSXin LI>>3 leshort &0x01 ArchiveVolume 9753e41d09dSXin LI>>3 leshort &0x02 Commented 9763e41d09dSXin LI>>3 leshort &0x04 Locked 9773e41d09dSXin LI>>3 leshort &0x10 NewVolumeNaming 9783e41d09dSXin LI>>3 leshort &0x08 Solid 9793e41d09dSXin LI>>3 leshort &0x20 Authenticated 9803e41d09dSXin LI>>3 leshort &0x40 RecoveryRecordPresent 9813e41d09dSXin LI>>3 leshort &0x80 EncryptedBlockHeader 9823e41d09dSXin LI>>3 leshort &0x100 FirstVolume 9833e41d09dSXin LI 9843e41d09dSXin LI# RAR (Roshal Archive) archive 9853e41d09dSXin LI0 string Rar!\x1a\7\0 RAR archive data 986b6cee71dSXin LI!:mime application/x-rar 9873e41d09dSXin LI!:ext rar/cbr 9883e41d09dSXin LI# file header 9893e41d09dSXin LI>(0xc.l+9) byte 0x74 9903e41d09dSXin LI>>(0xc.l+7) use rar-file-header 9913e41d09dSXin LI# subblock seems to share information with file header 9923e41d09dSXin LI>(0xc.l+9) byte 0x7a 9933e41d09dSXin LI>>(0xc.l+7) use rar-file-header 9943e41d09dSXin LI>9 byte 0x73 9953e41d09dSXin LI>>7 use rar-archive-header 9963e41d09dSXin LI 9973e41d09dSXin LI0 string Rar!\x1a\7\1\0 RAR archive data, v5 9983e41d09dSXin LI!:mime application/x-rar 9993e41d09dSXin LI!:ext rar 10003e41d09dSXin LI 10013e41d09dSXin LI# Very old RAR archive 10023e41d09dSXin LI# http://jasonblanks.com/wp-includes/images/papers/KnowyourarchiveRAR.pdf 10033e41d09dSXin LI0 string RE\x7e\x5e RAR archive data (<v1.5) 10043e41d09dSXin LI!:mime application/x-rar 10053e41d09dSXin LI!:ext rar/cbr 1006b6cee71dSXin LI 1007b6cee71dSXin LI# SQUISH archiver (Greg Roelofs, newt@uchicago.edu) 1008b6cee71dSXin LI0 string SQSH squished archive data (Acorn RISCOS) 1009b6cee71dSXin LI 1010b6cee71dSXin LI# UC2 archiver (Greg Roelofs, newt@uchicago.edu) 1011b6cee71dSXin LI# [JW] see exe section for self-extracting version 1012b6cee71dSXin LI0 string UC2\x1a UC2 archive data 1013b6cee71dSXin LI 1014b6cee71dSXin LI# PKZIP multi-volume archive 1015b6cee71dSXin LI0 string PK\x07\x08PK\x03\x04 Zip multi-volume archive data, at least PKZIP v2.50 to extract 1016b6cee71dSXin LI!:mime application/zip 10173e41d09dSXin LI!:ext zip/cbz 1018b6cee71dSXin LI 1019b6cee71dSXin LI# Zip archives (Greg Roelofs, c/o zip-bugs@wkuvx1.wku.edu) 1020b6cee71dSXin LI0 string PK\005\006 Zip archive data (empty) 10213e41d09dSXin LI!:mime application/zip 10223e41d09dSXin LI!:ext zip/cbz 1023b6cee71dSXin LI0 string PK\003\004 1024b6cee71dSXin LI 1025b6cee71dSXin LI# Specialised zip formats which start with a member named 'mimetype' 1026b6cee71dSXin LI# (stored uncompressed, with no 'extra field') containing the file's MIME type. 1027b6cee71dSXin LI# Check for have 8-byte name, 0-byte extra field, name "mimetype", and 1028b6cee71dSXin LI# contents starting with "application/": 1029b6cee71dSXin LI>26 string \x8\0\0\0mimetypeapplication/ 1030b6cee71dSXin LI 1031b6cee71dSXin LI# KOffice / OpenOffice & StarOffice / OpenDocument formats 1032b6cee71dSXin LI# From: Abel Cheung <abel@oaka.org> 1033b6cee71dSXin LI 1034b6cee71dSXin LI# KOffice (1.2 or above) formats 1035b6cee71dSXin LI# (mimetype contains "application/vnd.kde.<SUBTYPE>") 1036b6cee71dSXin LI>>50 string vnd.kde. KOffice (>=1.2) 1037b6cee71dSXin LI>>>58 string karbon Karbon document 1038b6cee71dSXin LI>>>58 string kchart KChart document 1039b6cee71dSXin LI>>>58 string kformula KFormula document 1040b6cee71dSXin LI>>>58 string kivio Kivio document 1041b6cee71dSXin LI>>>58 string kontour Kontour document 1042b6cee71dSXin LI>>>58 string kpresenter KPresenter document 1043b6cee71dSXin LI>>>58 string kspread KSpread document 1044b6cee71dSXin LI>>>58 string kword KWord document 1045b6cee71dSXin LI 1046b6cee71dSXin LI# OpenOffice formats (for OpenOffice 1.x / StarOffice 6/7) 1047b6cee71dSXin LI# (mimetype contains "application/vnd.sun.xml.<SUBTYPE>") 1048b6cee71dSXin LI>>50 string vnd.sun.xml. OpenOffice.org 1.x 1049b6cee71dSXin LI>>>62 string writer Writer 1050b6cee71dSXin LI>>>>68 byte !0x2e document 1051b6cee71dSXin LI>>>>68 string .template template 1052b6cee71dSXin LI>>>>68 string .global global document 1053b6cee71dSXin LI>>>62 string calc Calc 1054b6cee71dSXin LI>>>>66 byte !0x2e spreadsheet 1055b6cee71dSXin LI>>>>66 string .template template 1056b6cee71dSXin LI>>>62 string draw Draw 1057b6cee71dSXin LI>>>>66 byte !0x2e document 1058b6cee71dSXin LI>>>>66 string .template template 1059b6cee71dSXin LI>>>62 string impress Impress 1060b6cee71dSXin LI>>>>69 byte !0x2e presentation 1061b6cee71dSXin LI>>>>69 string .template template 1062b6cee71dSXin LI>>>62 string math Math document 1063b6cee71dSXin LI>>>62 string base Database file 1064b6cee71dSXin LI 1065b6cee71dSXin LI# OpenDocument formats (for OpenOffice 2.x / StarOffice >= 8) 1066b6cee71dSXin LI# http://lists.oasis-open.org/archives/office/200505/msg00006.html 1067b6cee71dSXin LI# (mimetype contains "application/vnd.oasis.opendocument.<SUBTYPE>") 1068b6cee71dSXin LI>>50 string vnd.oasis.opendocument. OpenDocument 1069b6cee71dSXin LI>>>73 string text 1070b6cee71dSXin LI>>>>77 byte !0x2d Text 1071b6cee71dSXin LI!:mime application/vnd.oasis.opendocument.text 1072b6cee71dSXin LI>>>>77 string -template Text Template 1073b6cee71dSXin LI!:mime application/vnd.oasis.opendocument.text-template 1074b6cee71dSXin LI>>>>77 string -web HTML Document Template 1075b6cee71dSXin LI!:mime application/vnd.oasis.opendocument.text-web 1076b6cee71dSXin LI>>>>77 string -master Master Document 1077b6cee71dSXin LI!:mime application/vnd.oasis.opendocument.text-master 1078b6cee71dSXin LI>>>73 string graphics 1079b6cee71dSXin LI>>>>81 byte !0x2d Drawing 1080b6cee71dSXin LI!:mime application/vnd.oasis.opendocument.graphics 1081b6cee71dSXin LI>>>>81 string -template Template 1082b6cee71dSXin LI!:mime application/vnd.oasis.opendocument.graphics-template 1083b6cee71dSXin LI>>>73 string presentation 1084b6cee71dSXin LI>>>>85 byte !0x2d Presentation 1085b6cee71dSXin LI!:mime application/vnd.oasis.opendocument.presentation 1086b6cee71dSXin LI>>>>85 string -template Template 1087b6cee71dSXin LI!:mime application/vnd.oasis.opendocument.presentation-template 1088b6cee71dSXin LI>>>73 string spreadsheet 1089b6cee71dSXin LI>>>>84 byte !0x2d Spreadsheet 1090b6cee71dSXin LI!:mime application/vnd.oasis.opendocument.spreadsheet 1091b6cee71dSXin LI>>>>84 string -template Template 1092b6cee71dSXin LI!:mime application/vnd.oasis.opendocument.spreadsheet-template 1093b6cee71dSXin LI>>>73 string chart 1094b6cee71dSXin LI>>>>78 byte !0x2d Chart 1095b6cee71dSXin LI!:mime application/vnd.oasis.opendocument.chart 1096b6cee71dSXin LI>>>>78 string -template Template 1097b6cee71dSXin LI!:mime application/vnd.oasis.opendocument.chart-template 1098b6cee71dSXin LI>>>73 string formula 1099b6cee71dSXin LI>>>>80 byte !0x2d Formula 1100b6cee71dSXin LI!:mime application/vnd.oasis.opendocument.formula 1101b6cee71dSXin LI>>>>80 string -template Template 1102b6cee71dSXin LI!:mime application/vnd.oasis.opendocument.formula-template 1103b6cee71dSXin LI>>>73 string database Database 1104b6cee71dSXin LI!:mime application/vnd.oasis.opendocument.database 110558a0f0d0SEitan Adler# Valid for LibreOffice Base 6.0.1.1 at least 110658a0f0d0SEitan Adler>>>73 string base Database 110758a0f0d0SEitan Adler!:mime application/vnd.oasis.opendocument.base 1108b6cee71dSXin LI>>>73 string image 1109b6cee71dSXin LI>>>>78 byte !0x2d Image 1110b6cee71dSXin LI!:mime application/vnd.oasis.opendocument.image 1111b6cee71dSXin LI>>>>78 string -template Template 1112b6cee71dSXin LI!:mime application/vnd.oasis.opendocument.image-template 1113b6cee71dSXin LI 1114b6cee71dSXin LI# EPUB (OEBPS) books using OCF (OEBPS Container Format) 1115b6cee71dSXin LI# http://www.idpf.org/ocf/ocf1.0/download/ocf10.htm, section 4. 1116b6cee71dSXin LI# From: Ralf Brown <ralf.brown@gmail.com> 1117b6cee71dSXin LI>>50 string epub+zip EPUB document 1118b6cee71dSXin LI!:mime application/epub+zip 1119b6cee71dSXin LI 1120b6cee71dSXin LI# Catch other ZIP-with-mimetype formats 1121b6cee71dSXin LI# In a ZIP file, the bytes immediately after a member's contents are 1122b6cee71dSXin LI# always "PK". The 2 regex rules here print the "mimetype" member's 1123b6cee71dSXin LI# contents up to the first 'P'. Luckily, most MIME types don't contain 1124b6cee71dSXin LI# any capital 'P's. This is a kludge. 1125b6cee71dSXin LI# (mimetype contains "application/<OTHER>") 1126b6cee71dSXin LI>>50 string !epub+zip 1127b6cee71dSXin LI>>>50 string !vnd.oasis.opendocument. 1128b6cee71dSXin LI>>>>50 string !vnd.sun.xml. 1129b6cee71dSXin LI>>>>>50 string !vnd.kde. 1130b6cee71dSXin LI>>>>>>38 regex [!-OQ-~]+ Zip data (MIME type "%s"?) 1131b6cee71dSXin LI!:mime application/zip 1132b6cee71dSXin LI# (mimetype contents other than "application/*") 1133b6cee71dSXin LI>26 string \x8\0\0\0mimetype 1134b6cee71dSXin LI>>38 string !application/ 1135b6cee71dSXin LI>>>38 regex [!-OQ-~]+ Zip data (MIME type "%s"?) 1136b6cee71dSXin LI!:mime application/zip 1137b6cee71dSXin LI 1138b6cee71dSXin LI# Java Jar files 1139b6cee71dSXin LI>(26.s+30) leshort 0xcafe Java archive data (JAR) 1140b6cee71dSXin LI!:mime application/java-archive 1141b6cee71dSXin LI 114220f8619dSXin LI# iOS App 114320f8619dSXin LI>(26.s+30) leshort !0xcafe 114420f8619dSXin LI>>26 string !\x8\0\0\0mimetype 114520f8619dSXin LI>>>30 string Payload/ 114620f8619dSXin LI>>>>38 search/64 .app/ iOS App 114720f8619dSXin LI!:mime application/x-ios-app 114820f8619dSXin LI 114920f8619dSXin LI 1150b6cee71dSXin LI# Generic zip archives (Greg Roelofs, c/o zip-bugs@wkuvx1.wku.edu) 1151b6cee71dSXin LI# Next line excludes specialized formats: 1152b6cee71dSXin LI>(26.s+30) leshort !0xcafe 1153b6cee71dSXin LI>>26 string !\x8\0\0\0mimetype Zip archive data 1154b6cee71dSXin LI!:mime application/zip 115558a0f0d0SEitan Adler>>>4 beshort x \b, at least 115658a0f0d0SEitan Adler>>>4 use zipversion 115758a0f0d0SEitan Adler>>>4 beshort x to extract 1158b6cee71dSXin LI>>>0x161 string WINZIP \b, WinZIP self-extracting 1159b6cee71dSXin LI 1160b6cee71dSXin LI# StarView Metafile 1161b6cee71dSXin LI# From Pierre Ducroquet <pinaraf@pinaraf.info> 1162b6cee71dSXin LI0 string VCLMTF StarView MetaFile 1163b6cee71dSXin LI>6 beshort x \b, version %d 1164b6cee71dSXin LI>8 belong x \b, size %d 1165b6cee71dSXin LI 1166b6cee71dSXin LI# Zoo archiver 1167b6cee71dSXin LI20 lelong 0xfdc4a7dc Zoo archive data 1168b6cee71dSXin LI!:mime application/x-zoo 1169b6cee71dSXin LI>4 byte >48 \b, v%c. 1170b6cee71dSXin LI>>6 byte >47 \b%c 1171b6cee71dSXin LI>>>7 byte >47 \b%c 1172b6cee71dSXin LI>32 byte >0 \b, modify: v%d 1173b6cee71dSXin LI>>33 byte x \b.%d+ 1174b6cee71dSXin LI>42 lelong 0xfdc4a7dc \b, 1175b6cee71dSXin LI>>70 byte >0 extract: v%d 1176b6cee71dSXin LI>>>71 byte x \b.%d+ 1177b6cee71dSXin LI 1178b6cee71dSXin LI# Shell archives 1179b6cee71dSXin LI10 string #\ This\ is\ a\ shell\ archive shell archive text 1180b6cee71dSXin LI!:mime application/octet-stream 1181b6cee71dSXin LI 1182b6cee71dSXin LI# 1183b6cee71dSXin LI# LBR. NB: May conflict with the questionable 1184b6cee71dSXin LI# "binary Computer Graphics Metafile" format. 1185b6cee71dSXin LI# 1186b6cee71dSXin LI0 string \0\ \ \ \ \ \ \ \ \ \ \ \0\0 LBR archive data 1187b6cee71dSXin LI# 1188b6cee71dSXin LI# PMA (CP/M derivative of LHA) 11893e41d09dSXin LI# Update: Joerg Jenderek 11903e41d09dSXin LI# URL: https://en.wikipedia.org/wiki/LHA_(file_format) 1191b6cee71dSXin LI# 11923e41d09dSXin LI#2 string -pm0- PMarc archive data [pm0] 11933e41d09dSXin LI2 string -pm0- 11943e41d09dSXin LI>0 use lharc-file 11953e41d09dSXin LI#2 string -pm1- PMarc archive data [pm1] 11963e41d09dSXin LI2 string -pm1- 11973e41d09dSXin LI>0 use lharc-file 11983e41d09dSXin LI#2 string -pm2- PMarc archive data [pm2] 11993e41d09dSXin LI2 string -pm2- 12003e41d09dSXin LI>0 use lharc-file 1201b6cee71dSXin LI2 string -pms- PMarc SFX archive (CP/M, DOS) 12023e41d09dSXin LI#!:mime application/x-foobar-exec 12033e41d09dSXin LI!:ext com 1204b6cee71dSXin LI5 string -pc1- PopCom compressed executable (CP/M) 12053e41d09dSXin LI#!:mime application/x- 12063e41d09dSXin LI#!:ext com 1207b6cee71dSXin LI 1208b6cee71dSXin LI# From Rafael Laboissiere <rafael@laboissiere.net> 1209b6cee71dSXin LI# The Project Revision Control System (see 1210b6cee71dSXin LI# http://prcs.sourceforge.net) generates a packaged project 1211b6cee71dSXin LI# file which is recognized by the following entry: 1212b6cee71dSXin LI0 leshort 0xeb81 PRCS packaged project 1213b6cee71dSXin LI 1214b6cee71dSXin LI# Microsoft cabinets 1215b6cee71dSXin LI# by David Necas (Yeti) <yeti@physics.muni.cz> 1216b6cee71dSXin LI#0 string MSCF\0\0\0\0 Microsoft cabinet file data, 1217b6cee71dSXin LI#>25 byte x v%d 1218b6cee71dSXin LI#>24 byte x \b.%d 1219b6cee71dSXin LI# MPi: All CABs have version 1.3, so this is pointless. 1220b6cee71dSXin LI# Better magic in debian-additions. 1221b6cee71dSXin LI 1222b6cee71dSXin LI# GTKtalog catalogs 1223b6cee71dSXin LI# by David Necas (Yeti) <yeti@physics.muni.cz> 1224b6cee71dSXin LI4 string gtktalog\ GTKtalog catalog data, 1225b6cee71dSXin LI>13 string 3 version 3 1226b6cee71dSXin LI>>14 beshort 0x677a (gzipped) 1227b6cee71dSXin LI>>14 beshort !0x677a (not gzipped) 1228b6cee71dSXin LI>13 string >3 version %s 1229b6cee71dSXin LI 1230b6cee71dSXin LI############################################################################ 1231b6cee71dSXin LI# Parity archive reconstruction file, the 'par' file format now used on Usenet. 1232b6cee71dSXin LI0 string PAR\0 PARity archive data 1233b6cee71dSXin LI>48 leshort =0 - Index file 1234b6cee71dSXin LI>48 leshort >0 - file number %d 1235b6cee71dSXin LI 1236b6cee71dSXin LI# Felix von Leitner <felix-file@fefe.de> 1237b6cee71dSXin LI0 string d8:announce BitTorrent file 1238b6cee71dSXin LI!:mime application/x-bittorrent 12393e41d09dSXin LI# Durval Menezes, <jmgthbfile at durval dot com> 12403e41d09dSXin LI0 string d13:announce-list BitTorrent file 12413e41d09dSXin LI!:mime application/x-bittorrent 1242b6cee71dSXin LI 1243b6cee71dSXin LI# Atari MSA archive - Teemu Hukkanen <tjhukkan@iki.fi> 1244b6cee71dSXin LI0 beshort 0x0e0f Atari MSA archive data 1245b6cee71dSXin LI>2 beshort x \b, %d sectors per track 1246b6cee71dSXin LI>4 beshort 0 \b, 1 sided 1247b6cee71dSXin LI>4 beshort 1 \b, 2 sided 1248b6cee71dSXin LI>6 beshort x \b, starting track: %d 1249b6cee71dSXin LI>8 beshort x \b, ending track: %d 1250b6cee71dSXin LI 1251b6cee71dSXin LI# Alternate ZIP string (amc@arwen.cs.berkeley.edu) 1252b6cee71dSXin LI0 string PK00PK\003\004 Zip archive data 125358a0f0d0SEitan Adler!:mime application/zip 125458a0f0d0SEitan Adler!:ext zip/cbz 1255b6cee71dSXin LI 1256b6cee71dSXin LI# ACE archive (from http://www.wotsit.org/download.asp?f=ace) 1257b6cee71dSXin LI# by Stefan `Sec` Zehl <sec@42.org> 1258b6cee71dSXin LI7 string **ACE** ACE archive data 1259b6cee71dSXin LI>15 byte >0 version %d 1260b6cee71dSXin LI>16 byte =0x00 \b, from MS-DOS 1261b6cee71dSXin LI>16 byte =0x01 \b, from OS/2 1262b6cee71dSXin LI>16 byte =0x02 \b, from Win/32 1263b6cee71dSXin LI>16 byte =0x03 \b, from Unix 1264b6cee71dSXin LI>16 byte =0x04 \b, from MacOS 1265b6cee71dSXin LI>16 byte =0x05 \b, from WinNT 1266b6cee71dSXin LI>16 byte =0x06 \b, from Primos 1267b6cee71dSXin LI>16 byte =0x07 \b, from AppleGS 1268b6cee71dSXin LI>16 byte =0x08 \b, from Atari 1269b6cee71dSXin LI>16 byte =0x09 \b, from Vax/VMS 1270b6cee71dSXin LI>16 byte =0x0A \b, from Amiga 1271b6cee71dSXin LI>16 byte =0x0B \b, from Next 1272b6cee71dSXin LI>14 byte x \b, version %d to extract 1273b6cee71dSXin LI>5 leshort &0x0080 \b, multiple volumes, 1274b6cee71dSXin LI>>17 byte x \b (part %d), 1275b6cee71dSXin LI>5 leshort &0x0002 \b, contains comment 1276b6cee71dSXin LI>5 leshort &0x0200 \b, sfx 1277b6cee71dSXin LI>5 leshort &0x0400 \b, small dictionary 1278b6cee71dSXin LI>5 leshort &0x0800 \b, multi-volume 1279b6cee71dSXin LI>5 leshort &0x1000 \b, contains AV-String 1280b6cee71dSXin LI>>30 string \x16*UNREGISTERED\x20VERSION* (unregistered) 1281b6cee71dSXin LI>5 leshort &0x2000 \b, with recovery record 1282b6cee71dSXin LI>5 leshort &0x4000 \b, locked 1283b6cee71dSXin LI>5 leshort &0x8000 \b, solid 1284b6cee71dSXin LI# Date in MS-DOS format (whatever that is) 1285b6cee71dSXin LI#>18 lelong x Created on 1286b6cee71dSXin LI 1287b6cee71dSXin LI# sfArk : compression program for Soundfonts (sf2) by Dirk Jagdmann 1288b6cee71dSXin LI# <doj@cubic.org> 1289b6cee71dSXin LI0x1A string sfArk sfArk compressed Soundfont 1290b6cee71dSXin LI>0x15 string 2 1291b6cee71dSXin LI>>0x1 string >\0 Version %s 1292b6cee71dSXin LI>>0x2A string >\0 : %s 1293b6cee71dSXin LI 1294b6cee71dSXin LI# DR-DOS 7.03 Packed File *.??_ 1295b6cee71dSXin LI0 string Packed\ File\ Personal NetWare Packed File 1296b6cee71dSXin LI>12 string x \b, was "%.12s" 1297b6cee71dSXin LI 1298b6cee71dSXin LI# EET archive 1299b6cee71dSXin LI# From: Tilman Sauerbeck <tilman@code-monkey.de> 1300b6cee71dSXin LI0 belong 0x1ee7ff00 EET archive 1301b6cee71dSXin LI!:mime application/x-eet 1302b6cee71dSXin LI 1303b6cee71dSXin LI# rzip archives 1304b6cee71dSXin LI0 string RZIP rzip compressed data 1305b6cee71dSXin LI>4 byte x - version %d 1306b6cee71dSXin LI>5 byte x \b.%d 1307b6cee71dSXin LI>6 belong x (%d bytes) 1308b6cee71dSXin LI 1309b6cee71dSXin LI# From: "Robert Dale" <robdale@gmail.com> 1310b6cee71dSXin LI0 belong 123 dar archive, 1311b6cee71dSXin LI>4 belong x label "%.8x 1312b6cee71dSXin LI>>8 belong x %.8x 1313b6cee71dSXin LI>>>12 beshort x %.4x" 1314b6cee71dSXin LI>14 byte 0x54 end slice 1315b6cee71dSXin LI>14 beshort 0x4e4e multi-part 1316b6cee71dSXin LI>14 beshort 0x4e53 multi-part, with -S 1317b6cee71dSXin LI 1318b6cee71dSXin LI# Symbian installation files 1319b6cee71dSXin LI# http://www.thouky.co.uk/software/psifs/sis.html 1320b6cee71dSXin LI# http://developer.symbian.com/main/downloads/papers/SymbianOSv91/softwareinstallsis.pdf 1321b6cee71dSXin LI8 lelong 0x10000419 Symbian installation file 1322b6cee71dSXin LI!:mime application/vnd.symbian.install 1323b6cee71dSXin LI>4 lelong 0x1000006D (EPOC release 3/4/5) 1324b6cee71dSXin LI>4 lelong 0x10003A12 (EPOC release 6) 1325b6cee71dSXin LI0 lelong 0x10201A7A Symbian installation file (Symbian OS 9.x) 1326b6cee71dSXin LI!:mime x-epoc/x-sisx-app 1327b6cee71dSXin LI 1328b6cee71dSXin LI# From "Nelson A. de Oliveira" <naoliv@gmail.com> 1329b6cee71dSXin LI0 string MPQ\032 MoPaQ (MPQ) archive 1330b6cee71dSXin LI 1331b6cee71dSXin LI# From: "Nelson A. de Oliveira" <naoliv@gmail.com> 1332b6cee71dSXin LI# .kgb 1333b6cee71dSXin LI0 string KGB_arch KGB Archiver file 1334b6cee71dSXin LI>10 string x with compression level %.1s 1335b6cee71dSXin LI 1336b6cee71dSXin LI# xar (eXtensible ARchiver) archive 13373e41d09dSXin LI# xar archive format: http://code.google.com/p/xar/ 1338b6cee71dSXin LI# From: "David Remahl" <dremahl@apple.com> 1339b6cee71dSXin LI0 string xar! xar archive 13403e41d09dSXin LI!:mime application/x-xar 1341b6cee71dSXin LI#>4 beshort x header size %d 1342b6cee71dSXin LI>6 beshort x version %d, 1343b6cee71dSXin LI#>8 quad x compressed TOC: %d, 1344b6cee71dSXin LI#>16 quad x uncompressed TOC: %d, 1345b6cee71dSXin LI>24 belong 0 no checksum 1346b6cee71dSXin LI>24 belong 1 SHA-1 checksum 1347b6cee71dSXin LI>24 belong 2 MD5 checksum 1348b6cee71dSXin LI 1349b6cee71dSXin LI# Type: Parity Archive 1350b6cee71dSXin LI# From: Daniel van Eeden <daniel_e@dds.nl> 1351b6cee71dSXin LI0 string PAR2 Parity Archive Volume Set 1352b6cee71dSXin LI 1353b6cee71dSXin LI# Bacula volume format. (Volumes always start with a block header.) 1354b6cee71dSXin LI# URL: http://bacula.org/3.0.x-manuals/en/developers/developers/Block_Header.html 1355b6cee71dSXin LI# From: Adam Buchbinder <adam.buchbinder@gmail.com> 1356b6cee71dSXin LI12 string BB02 Bacula volume 1357b6cee71dSXin LI>20 bedate x \b, started %s 1358b6cee71dSXin LI 1359b6cee71dSXin LI# ePub is XHTML + XML inside a ZIP archive. The first member of the 1360b6cee71dSXin LI# archive must be an uncompressed file called 'mimetype' with contents 1361b6cee71dSXin LI# 'application/epub+zip' 1362b6cee71dSXin LI 1363b6cee71dSXin LI 1364b6cee71dSXin LI# From: "Michael Gorny" <mgorny@gentoo.org> 1365b6cee71dSXin LI# ZPAQ: http://mattmahoney.net/dc/zpaq.html 1366b6cee71dSXin LI0 string zPQ ZPAQ stream 1367b6cee71dSXin LI>3 byte x \b, level %d 13685f0216bdSXin LI# From: Barry Carter <carter.barry@gmail.com> 13695f0216bdSXin LI# http://encode.ru/threads/456-zpaq-updates/page32 13705f0216bdSXin LI0 string 7kSt ZPAQ file 1371b6cee71dSXin LI 1372b6cee71dSXin LI# BBeB ebook, unencrypted (LRF format) 1373b6cee71dSXin LI# URL: http://www.sven.de/librie/Librie/LrfFormat 1374b6cee71dSXin LI# From: Adam Buchbinder <adam.buchbinder@gmail.com> 1375b6cee71dSXin LI0 string L\0R\0F\0\0\0 BBeB ebook data, unencrypted 1376b6cee71dSXin LI>8 beshort x \b, version %d 1377b6cee71dSXin LI>36 byte 1 \b, front-to-back 1378b6cee71dSXin LI>36 byte 16 \b, back-to-front 1379b6cee71dSXin LI>42 beshort x \b, (%dx, 1380b6cee71dSXin LI>44 beshort x %d) 1381b6cee71dSXin LI 1382b6cee71dSXin LI# Symantec GHOST image by Joerg Jenderek at May 2014 1383b6cee71dSXin LI# http://us.norton.com/ghost/ 1384b6cee71dSXin LI# http://www.garykessler.net/library/file_sigs.html 1385b6cee71dSXin LI0 ubelong&0xFFFFf7f0 0xFEEF0100 Norton GHost image 1386b6cee71dSXin LI# *.GHO 1387b6cee71dSXin LI>2 ubyte&0x08 0x00 \b, first file 1388b6cee71dSXin LI# *.GHS or *.[0-9] with cns program option 1389b6cee71dSXin LI>2 ubyte&0x08 0x08 \b, split file 1390b6cee71dSXin LI# part of split index interesting for *.ghs 1391b6cee71dSXin LI>>4 ubyte x id=0x%x 1392b6cee71dSXin LI# compression tag minus one equals numeric compression command line switch z[1-9] 1393b6cee71dSXin LI>3 ubyte 0 \b, no compression 1394b6cee71dSXin LI>3 ubyte 2 \b, fast compression (Z1) 1395b6cee71dSXin LI>3 ubyte 3 \b, medium compression (Z2) 1396b6cee71dSXin LI>3 ubyte >3 1397b6cee71dSXin LI>>3 ubyte <11 \b, compression (Z%d-1) 1398b6cee71dSXin LI>2 ubyte&0x08 0x00 1399b6cee71dSXin LI# ~ 30 byte password field only for *.gho 1400b6cee71dSXin LI>>12 ubequad !0 \b, password protected 1401b6cee71dSXin LI>>44 ubyte !1 1402b6cee71dSXin LI# 1~Image All, sector-by-sector only for *.gho 1403b6cee71dSXin LI>>>10 ubyte 1 \b, sector copy 1404b6cee71dSXin LI# 1~Image Boot track only for *.gho 1405b6cee71dSXin LI>>>43 ubyte 1 \b, boot track 1406b6cee71dSXin LI# 1~Image Disc only for *.gho implies Image Boot track and sector copy 1407b6cee71dSXin LI>>44 ubyte 1 \b, disc sector copy 1408b6cee71dSXin LI# optional image description only *.gho 1409b6cee71dSXin LI>>0xff string >\0 "%-.254s" 1410b6cee71dSXin LI# look for DOS sector end sequence 1411b6cee71dSXin LI>0xE08 search/7776 \x55\xAA 1412b6cee71dSXin LI>>&-512 indirect x \b; contains 1413b6cee71dSXin LI 14143e41d09dSXin LI# Google Chrome extensions 14153e41d09dSXin LI# https://developer.chrome.com/extensions/crx 14163e41d09dSXin LI# https://developer.chrome.com/extensions/hosting 14173e41d09dSXin LI0 string Cr24 Google Chrome extension 14183e41d09dSXin LI!:mime application/x-chrome-extension 14193e41d09dSXin LI>4 ulong x \b, version %u 142040427ccaSGordon Tetlow 142140427ccaSGordon Tetlow# SeqBox - Sequenced container 142240427ccaSGordon Tetlow# ext: sbx, seqbox 142340427ccaSGordon Tetlow# Marco Pontello marcopon@gmail.com 142440427ccaSGordon Tetlow# reference: https://github.com/MarcoPon/SeqBox 142540427ccaSGordon Tetlow0 string SBx SeqBox, 142640427ccaSGordon Tetlow>3 byte x version %d 142758a0f0d0SEitan Adler 142858a0f0d0SEitan Adler# LyNX archive 142958a0f0d0SEitan Adler56 string USE\040LYNX\040TO\040DISSOLVE\040THIS\040FILE LyNX archive 1430