1327e51cbSPeter Avalos#------------------------------------------------------------------------------ 2*3b9cdfa3SAntonio Huete Jimenez# $File: archive,v 1.169 2022/09/12 13:13:28 christos Exp $ 3327e51cbSPeter Avalos# archive: file(1) magic for archive formats (see also "msdos" for self- 4327e51cbSPeter Avalos# extracting compressed archives) 5327e51cbSPeter Avalos# 6327e51cbSPeter Avalos# cpio, ar, arc, arj, hpack, lha/lharc, rar, squish, uc2, zip, zoo, etc. 76fca56fbSSascha Wildner# pre-POSIX "tar" archives are also handled in the C code ../../src/is_tar.c. 8327e51cbSPeter Avalos 9327e51cbSPeter Avalos# POSIX tar archives 106fca56fbSSascha Wildner# URL: https://en.wikipedia.org/wiki/Tar_(computing) 116fca56fbSSascha Wildner# Reference: https://www.freebsd.org/cgi/man.cgi?query=tar&sektion=5&manpath=FreeBSD+8-current 126fca56fbSSascha Wildner# header mainly padded with nul bytes 136fca56fbSSascha Wildner500 quad 0 146fca56fbSSascha Wildner!:strength /2 156fca56fbSSascha Wildner# filename or extended attribute printable strings in range space null til umlaut ue 166fca56fbSSascha Wildner>0 ubeshort >0x1F00 176fca56fbSSascha Wildner>>0 ubeshort <0xFCFD 186fca56fbSSascha Wildner# last 4 header bytes often null but tar\0 in gtarfail2.tar gtarfail.tar-bad 196fca56fbSSascha Wildner# at https://sourceforge.net/projects/s-tar/files/testscripts/ 206fca56fbSSascha Wildner>>>508 ubelong&0x8B9E8DFF 0 216fca56fbSSascha Wildner# nul, space or ascii digit 0-7 at start of mode 226fca56fbSSascha Wildner>>>>100 ubyte&0xC8 =0 236fca56fbSSascha Wildner>>>>>101 ubyte&0xC8 =0 246fca56fbSSascha Wildner# nul, space at end of check sum 256fca56fbSSascha Wildner>>>>>>155 ubyte&0xDF =0 266fca56fbSSascha Wildner# space or ascii digit 0 at start of check sum 276fca56fbSSascha Wildner>>>>>>>148 ubyte&0xEF =0x20 28*3b9cdfa3SAntonio Huete Jimenez# FOR DEBUGGING: 29*3b9cdfa3SAntonio Huete Jimenez#>>>>>>>>0 regex \^[0-9]{2,4}[.](png|jpg|jpeg|tif|tiff|gif|bmp) NAME "%s" 30*3b9cdfa3SAntonio Huete Jimenez# check for 1st image main name with digits used for sorting 31*3b9cdfa3SAntonio Huete Jimenez# and for name extension case insensitive like: PNG JPG JPEG TIF TIFF GIF BMP 32*3b9cdfa3SAntonio Huete Jimenez>>>>>>>>0 regex \^[0-9]{2,4}[.](png|jpg|jpeg|tif|tiff|gif|bmp) 33*3b9cdfa3SAntonio Huete Jimenez#foo 34*3b9cdfa3SAntonio Huete Jimenez>>>>>>>>>0 use tar-cbt 35*3b9cdfa3SAntonio Huete Jimenez# if 1st member name without digits and without used image suffix then it is a TAR archive 36*3b9cdfa3SAntonio Huete Jimenez>>>>>>>>0 default x 37*3b9cdfa3SAntonio Huete Jimenez>>>>>>>>>0 use tar-file 386fca56fbSSascha Wildner# minimal check and then display tar archive information which can also be 396fca56fbSSascha Wildner# embedded inside others like Android Backup, Clam AntiVirus database 406fca56fbSSascha Wildner0 name tar-file 416fca56fbSSascha Wildner>257 string !ustar 426fca56fbSSascha Wildner# header padded with nuls 436fca56fbSSascha Wildner>>257 ulong =0 446fca56fbSSascha Wildner# GNU tar version 1.29 with non pax format option without refusing 456fca56fbSSascha Wildner# creates misleading V7 header for Long path, Multi-volume, Volume type 466fca56fbSSascha Wildner>>>156 ubyte 0x4c GNU tar archive 476fca56fbSSascha Wildner!:mime application/x-gtar 486fca56fbSSascha Wildner!:ext tar/gtar 496fca56fbSSascha Wildner>>>156 ubyte 0x4d GNU tar archive 506fca56fbSSascha Wildner!:mime application/x-gtar 516fca56fbSSascha Wildner!:ext tar/gtar 526fca56fbSSascha Wildner>>>156 ubyte 0x56 GNU tar archive 536fca56fbSSascha Wildner!:mime application/x-gtar 546fca56fbSSascha Wildner!:ext tar/gtar 556fca56fbSSascha Wildner>>>156 default x tar archive (V7) 566fca56fbSSascha Wildner!:mime application/x-tar 576fca56fbSSascha Wildner!:ext tar 586fca56fbSSascha Wildner# other stuff in padding 596fca56fbSSascha Wildner# some implementations add new fields to the blank area at the end of the header record 606fca56fbSSascha Wildner# created for example by DOS TAR 3.20g 1994 Tim V.Shapore with -j option 616fca56fbSSascha Wildner>>257 ulong !0 tar archive (old) 626fca56fbSSascha Wildner!:mime application/x-tar 636fca56fbSSascha Wildner!:ext tar 646fca56fbSSascha Wildner# magic in newer, GNU, posix variants 656fca56fbSSascha Wildner>257 string =ustar 666fca56fbSSascha Wildner# 2 last char of magic and UStar version because string expression does not work 676fca56fbSSascha Wildner# 2 space characters followed by a null for GNU variant 686fca56fbSSascha Wildner>>261 ubelong =0x72202000 POSIX tar archive (GNU) 696fca56fbSSascha Wildner!:mime application/x-gtar 706fca56fbSSascha Wildner!:ext tar/gtar 716fca56fbSSascha Wildner# UStar version with ASCII "00" 726fca56fbSSascha Wildner>>261 ubelong 0x72003030 POSIX 736fca56fbSSascha Wildner# gLOBAL and ExTENSION type only found in POSIX.1-2001 format 746fca56fbSSascha Wildner>>>156 ubyte 0x67 \b.1-2001 756fca56fbSSascha Wildner>>>156 ubyte 0x78 \b.1-2001 766fca56fbSSascha Wildner>>>156 ubyte x tar archive 776fca56fbSSascha Wildner!:mime application/x-ustar 786fca56fbSSascha Wildner!:ext tar/ustar 796fca56fbSSascha Wildner# version with 2 binary nuls embedded in Android Backup like com.android.settings.ab 806fca56fbSSascha Wildner>>261 ubelong 0x72000000 tar archive (ustar) 816fca56fbSSascha Wildner!:mime application/x-ustar 826fca56fbSSascha Wildner!:ext tar/ustar 836fca56fbSSascha Wildner# not seen ustar variant with garbish version 846fca56fbSSascha Wildner>>261 default x tar archive (unknown ustar) 856fca56fbSSascha Wildner!:mime application/x-ustar 866fca56fbSSascha Wildner!:ext tar/ustar 876fca56fbSSascha Wildner# type flag of 1st tar archive member 886fca56fbSSascha Wildner#>156 ubyte x \b, %c-type 896fca56fbSSascha Wildner>156 ubyte x 906fca56fbSSascha Wildner>>156 ubyte 0 \b, file 916fca56fbSSascha Wildner>>156 ubyte 0x30 \b, file 926fca56fbSSascha Wildner>>156 ubyte 0x31 \b, hard link 936fca56fbSSascha Wildner>>156 ubyte 0x32 \b, symlink 946fca56fbSSascha Wildner>>156 ubyte 0x33 \b, char device 956fca56fbSSascha Wildner>>156 ubyte 0x34 \b, block device 966fca56fbSSascha Wildner>>156 ubyte 0x35 \b, directory 976fca56fbSSascha Wildner>>156 ubyte 0x36 \b, fifo 986fca56fbSSascha Wildner>>156 ubyte 0x37 \b, reserved 996fca56fbSSascha Wildner>>156 ubyte 0x4c \b, long path 1006fca56fbSSascha Wildner>>156 ubyte 0x4d \b, multi volume 1016fca56fbSSascha Wildner>>156 ubyte 0x56 \b, volume 1026fca56fbSSascha Wildner>>156 ubyte 0x67 \b, global 1036fca56fbSSascha Wildner>>156 ubyte 0x78 \b, extension 1046fca56fbSSascha Wildner>>156 default x \b, type 1056fca56fbSSascha Wildner>>>156 ubyte x '%c' 1066fca56fbSSascha Wildner# name[100] 1076fca56fbSSascha Wildner>0 string >\0 %-.60s 1086fca56fbSSascha Wildner# mode mainly stored as an octal number in ASCII null or space terminated 1096fca56fbSSascha Wildner>100 string >\0 \b, mode %-.7s 1106fca56fbSSascha Wildner# user id mainly as octal numbers in ASCII null or space terminated 1116fca56fbSSascha Wildner>108 string >\0 \b, uid %-.7s 1126fca56fbSSascha Wildner# group id mainly as octal numbers in ASCII null or space terminated 1136fca56fbSSascha Wildner>116 string >\0 \b, gid %-.7s 1146fca56fbSSascha Wildner# size mainly as octal number in ASCII 1156fca56fbSSascha Wildner>124 ubyte <0x38 1166fca56fbSSascha Wildner>>124 string >\0 \b, size %-.12s 1176fca56fbSSascha Wildner# coding indicated by setting the high-order bit of the leftmost byte 1186fca56fbSSascha Wildner>124 ubyte >0xEF \b, size 0x 1196fca56fbSSascha Wildner>>124 ubyte !0xff \b%2.2x 1206fca56fbSSascha Wildner>>125 ubyte !0xff \b%2.2x 1216fca56fbSSascha Wildner>>126 ubyte !0xff \b%2.2x 1226fca56fbSSascha Wildner>>127 ubyte !0xff \b%2.2x 1236fca56fbSSascha Wildner>>128 ubyte !0xff \b%2.2x 1246fca56fbSSascha Wildner>>129 ubyte !0xff \b%2.2x 1256fca56fbSSascha Wildner>>130 ubyte !0xff \b%2.2x 1266fca56fbSSascha Wildner>>131 ubyte !0xff \b%2.2x 1276fca56fbSSascha Wildner>>132 ubyte !0xff \b%2.2x 1286fca56fbSSascha Wildner>>133 ubyte !0xff \b%2.2x 1296fca56fbSSascha Wildner>>134 ubyte !0xff \b%2.2x 1306fca56fbSSascha Wildner>>135 ubyte !0xff \b%2.2x 1316fca56fbSSascha Wildner# seconds since 0:0:0 1 jan 1970 UTC as octal number mainly in ASCII null or space terminated 1326fca56fbSSascha Wildner>136 string >\0 \b, seconds %-.11s 1336fca56fbSSascha Wildner# header checksum stored as an octal number in ASCII null or space terminated 1346fca56fbSSascha Wildner#>148 string x \b, cksum %.7s 1356fca56fbSSascha Wildner# linkname[100] 1366fca56fbSSascha Wildner>157 string >\0 \b, linkname %-.40s 1376fca56fbSSascha Wildner# additional fields for ustar 1386fca56fbSSascha Wildner>257 string =ustar 1396fca56fbSSascha Wildner# owner user name null terminated 1406fca56fbSSascha Wildner>>265 string >\0 \b, user %-.32s 1416fca56fbSSascha Wildner# group name null terminated 1426fca56fbSSascha Wildner>>297 string >\0 \b, group %-.32s 1436fca56fbSSascha Wildner# device major minor if not zero 1446fca56fbSSascha Wildner>>329 ubequad&0xCFCFCFCFcFcFcFdf !0 1456fca56fbSSascha Wildner>>>329 string x \b, devmaj %-.7s 1466fca56fbSSascha Wildner>>337 ubequad&0xCFCFCFCFcFcFcFdf !0 1476fca56fbSSascha Wildner>>>337 string x \b, devmin %-.7s 1486fca56fbSSascha Wildner# prefix[155] 1496fca56fbSSascha Wildner>>345 string >\0 \b, prefix %-.155s 1506fca56fbSSascha Wildner# old non ustar/POSIX tar 1516fca56fbSSascha Wildner>257 string !ustar 1526fca56fbSSascha Wildner>>508 string =tar\0 1536fca56fbSSascha Wildner# padding[255] in old star 1546fca56fbSSascha Wildner>>>257 string >\0 \b, padding: %-.40s 1556fca56fbSSascha Wildner>>508 default x 1566fca56fbSSascha Wildner# padding[255] in old tar sometimes comment field 1576fca56fbSSascha Wildner>>>257 string >\0 \b, comment: %-.40s 158*3b9cdfa3SAntonio Huete Jimenez# Summary: Comic Book Archive *.CBT with TAR format 159*3b9cdfa3SAntonio Huete Jimenez# URL: https://en.wikipedia.org/wiki/Comic_book_archive 160*3b9cdfa3SAntonio Huete Jimenez# http://fileformats.archiveteam.org/wiki/Comic_Book_Archive 161*3b9cdfa3SAntonio Huete Jimenez# Note: there exist also RAR, ZIP, ACE and 7Z packed variants 162*3b9cdfa3SAntonio Huete Jimenez0 name tar-cbt 163*3b9cdfa3SAntonio Huete Jimenez>0 string x Comic Book archive, tar archive 164*3b9cdfa3SAntonio Huete Jimenez#!:mime application/x-tar 165*3b9cdfa3SAntonio Huete Jimenez!:mime application/vnd.comicbook 166*3b9cdfa3SAntonio Huete Jimenez#!:mime application/vnd.comicbook+tar 167*3b9cdfa3SAntonio Huete Jimenez!:ext cbt 168*3b9cdfa3SAntonio Huete Jimenez# name[100] probably like: 19.jpg 0001.png 0002.png 169*3b9cdfa3SAntonio Huete Jimenez# or maybe like ComicInfo.xml 170*3b9cdfa3SAntonio Huete Jimenez>0 string >\0 \b, 1st image %-.60s 171327e51cbSPeter Avalos 1729f86ab30SPeter Avalos# Incremental snapshot gnu-tar format from: 1736fca56fbSSascha Wildner# https://www.gnu.org/software/tar/manual/html_node/Snapshot-Files.html 1749f86ab30SPeter Avalos0 string GNU\ tar- GNU tar incremental snapshot data 175*3b9cdfa3SAntonio Huete Jimenez>&0 regex [0-9]\\.[0-9]+-[0-9]+ version %s 1769f86ab30SPeter Avalos 177327e51cbSPeter Avalos# cpio archives 178327e51cbSPeter Avalos# 179327e51cbSPeter Avalos# Yes, the top two "cpio archive" formats *are* supposed to just be "short". 180327e51cbSPeter Avalos# The idea is to indicate archives produced on machines with the same 181327e51cbSPeter Avalos# byte order as the machine running "file" with "cpio archive", and 182327e51cbSPeter Avalos# to indicate archives produced on machines with the opposite byte order 183327e51cbSPeter Avalos# from the machine running "file" with "byte-swapped cpio archive". 184327e51cbSPeter Avalos# 185327e51cbSPeter Avalos# The SVR4 "cpio(4)" hints that there are additional formats, but they 186327e51cbSPeter Avalos# are defined as "short"s; I think all the new formats are 187327e51cbSPeter Avalos# character-header formats and thus are strings, not numbers. 188327e51cbSPeter Avalos0 short 070707 cpio archive 18979343712SPeter Avalos!:mime application/x-cpio 190327e51cbSPeter Avalos0 short 0143561 byte-swapped cpio archive 19179343712SPeter Avalos!:mime application/x-cpio # encoding: swapped 192327e51cbSPeter Avalos0 string 070707 ASCII cpio archive (pre-SVR4 or odc) 193614728caSSascha Wildner!:mime application/x-cpio 194327e51cbSPeter Avalos0 string 070701 ASCII cpio archive (SVR4 with no CRC) 195614728caSSascha Wildner!:mime application/x-cpio 196327e51cbSPeter Avalos0 string 070702 ASCII cpio archive (SVR4 with CRC) 197614728caSSascha Wildner!:mime application/x-cpio 198327e51cbSPeter Avalos 199e8af9738SPeter Avalos# 200e8af9738SPeter Avalos# Various archive formats used by various versions of the "ar" 201e8af9738SPeter Avalos# command. 202e8af9738SPeter Avalos# 203e8af9738SPeter Avalos 204e8af9738SPeter Avalos# 205e8af9738SPeter Avalos# Original UNIX archive formats. 206e8af9738SPeter Avalos# They were written with binary values in host byte order, and 207e8af9738SPeter Avalos# the magic number was a host "int", which might have been 16 bits 208e8af9738SPeter Avalos# or 32 bits. We don't say "PDP-11" or "VAX", as there might have 209e8af9738SPeter Avalos# been ports to little-endian 16-bit-int or 32-bit-int platforms 210e8af9738SPeter Avalos# (x86?) using some of those formats; if none existed, feel free 211e8af9738SPeter Avalos# to use "PDP-11" for little-endian 16-bit and "VAX" for little-endian 212e8af9738SPeter Avalos# 32-bit. There might have been big-endian ports of that sort as 213e8af9738SPeter Avalos# well. 214e8af9738SPeter Avalos# 215e8af9738SPeter Avalos0 leshort 0177555 very old 16-bit-int little-endian archive 216e8af9738SPeter Avalos0 beshort 0177555 very old 16-bit-int big-endian archive 217e8af9738SPeter Avalos0 lelong 0177555 very old 32-bit-int little-endian archive 218e8af9738SPeter Avalos0 belong 0177555 very old 32-bit-int big-endian archive 219e8af9738SPeter Avalos 220e8af9738SPeter Avalos0 leshort 0177545 old 16-bit-int little-endian archive 221e8af9738SPeter Avalos>2 string __.SYMDEF random library 222e8af9738SPeter Avalos0 beshort 0177545 old 16-bit-int big-endian archive 223e8af9738SPeter Avalos>2 string __.SYMDEF random library 224e8af9738SPeter Avalos0 lelong 0177545 old 32-bit-int little-endian archive 225e8af9738SPeter Avalos>4 string __.SYMDEF random library 226e8af9738SPeter Avalos0 belong 0177545 old 32-bit-int big-endian archive 227e8af9738SPeter Avalos>4 string __.SYMDEF random library 228e8af9738SPeter Avalos 229e8af9738SPeter Avalos# 230e8af9738SPeter Avalos# From "pdp" (but why a 4-byte quantity?) 231e8af9738SPeter Avalos# 232e8af9738SPeter Avalos0 lelong 0x39bed PDP-11 old archive 233e8af9738SPeter Avalos0 lelong 0x39bee PDP-11 4.0 archive 234e8af9738SPeter Avalos 235e8af9738SPeter Avalos# 236e8af9738SPeter Avalos# XXX - what flavor of APL used this, and was it a variant of 237e8af9738SPeter Avalos# some ar archive format? It's similar to, but not the same 238e8af9738SPeter Avalos# as, the APL workspace magic numbers in pdp. 239e8af9738SPeter Avalos# 240e8af9738SPeter Avalos0 long 0100554 apl workspace 241e8af9738SPeter Avalos 242e8af9738SPeter Avalos# 243e8af9738SPeter Avalos# System V Release 1 portable(?) archive format. 244e8af9738SPeter Avalos# 245e8af9738SPeter Avalos0 string =<ar> System V Release 1 ar archive 246e8af9738SPeter Avalos!:mime application/x-archive 247e8af9738SPeter Avalos 248e8af9738SPeter Avalos# 249e8af9738SPeter Avalos# Debian package; it's in the portable archive format, and needs to go 250e8af9738SPeter Avalos# before the entry for regular portable archives, as it's recognized as 251e8af9738SPeter Avalos# a portable archive whose first member has a name beginning with 252e8af9738SPeter Avalos# "debian". 253327e51cbSPeter Avalos# 2546fca56fbSSascha Wildner# Update: Joerg Jenderek 2556fca56fbSSascha Wildner# URL: https://en.wikipedia.org/wiki/Deb_(file_format) 256327e51cbSPeter Avalos0 string =!<arch>\ndebian 2576fca56fbSSascha Wildner# https://manpages.debian.org/testing/dpkg/dpkg-split.1.en.html 2586fca56fbSSascha Wildner>14 string -split part of multipart Debian package 25982c5fa3eSPeter Avalos!:mime application/vnd.debian.binary-package 2606fca56fbSSascha Wildner# udeb is used for stripped down deb file 2616fca56fbSSascha Wildner!:ext deb/udeb 2626fca56fbSSascha Wildner>14 string -binary Debian binary package 26382c5fa3eSPeter Avalos!:mime application/vnd.debian.binary-package 264c990e5baSDaniel Fojt# For ipk packager see also https://en.wikipedia.org/wiki/Opkg 265c990e5baSDaniel Fojt!:ext deb/udeb/ipk 2666fca56fbSSascha Wildner# This should not happen 2676fca56fbSSascha Wildner>14 default x Unknown Debian package 268970935fdSSascha Wildner# NL terminated version; for most Debian cases this is 2.0 or 2.1 for split 269327e51cbSPeter Avalos>68 string >\0 (format %s) 2706fca56fbSSascha Wildner#>68 string !2.0\n 2716fca56fbSSascha Wildner#>>68 string x (format %.3s) 2726fca56fbSSascha Wildner>68 string =2.0\n 2736fca56fbSSascha Wildner# 2nd archive name=control archive name like control.tar.gz or control.tar.xz 2746fca56fbSSascha Wildner>>72 string >\0 \b, with %.14s 2756fca56fbSSascha Wildner# look for 3rd archive name=data archive name like data.tar.{gz,xz,bz2,lzma} 2766fca56fbSSascha Wildner>>0 search/0x93e4f data.tar. \b, data compression 2776fca56fbSSascha Wildner# the above line only works if FILE_BYTES_MAX in ../../src/file.h is raised 2786fca56fbSSascha Wildner# for example like libreoffice-dev-doc_1%3a5.2.7-1+rpi1+deb9u3_all.deb 279c990e5baSDaniel Fojt>>>&0 string x %.2s 280c990e5baSDaniel Fojt# skip space (0x20 BSD) and slash (0x2f System V) character marking end of name 281c990e5baSDaniel Fojt>>>&2 ubyte !0x20 282c990e5baSDaniel Fojt>>>>&-1 ubyte !0x2f 283c990e5baSDaniel Fojt# display 3rd character of file name extension like 2 of bz2 or m of lzma 284c990e5baSDaniel Fojt>>>>>&-1 ubyte x \b%c 285c990e5baSDaniel Fojt>>>>>>&0 ubyte !0x20 286c990e5baSDaniel Fojt>>>>>>>&-1 ubyte !0x2f 287c990e5baSDaniel Fojt# display 4th character of file name extension like a of lzma 288c990e5baSDaniel Fojt>>>>>>>>&-1 ubyte x \b%c 289970935fdSSascha Wildner# split debian package case 2906fca56fbSSascha Wildner>68 string =2.1\n 2916fca56fbSSascha Wildner# dpkg-1.18.25/dpkg-split/info.c 2926fca56fbSSascha Wildner# NL terminated ASCII package name like ckermit 2936fca56fbSSascha Wildner>>&0 string x \b, %s 2946fca56fbSSascha Wildner# NL terminated package version like 302-5.3 2956fca56fbSSascha Wildner>>>&1 string x %s 2966fca56fbSSascha Wildner# NL terminated MD5 checksum 2976fca56fbSSascha Wildner>>>>&1 string x \b, MD5 %s 2986fca56fbSSascha Wildner# NL terminated original package length 2996fca56fbSSascha Wildner>>>>>&1 string x \b, unsplitted size %s 3006fca56fbSSascha Wildner# NL terminated part length 3016fca56fbSSascha Wildner>>>>>>&1 string x \b, part length %s 3026fca56fbSSascha Wildner# NL terminated package part like n/m 3036fca56fbSSascha Wildner>>>>>>>&1 string x \b, part %s 3046fca56fbSSascha Wildner# NL terminated package architecture like armhf since dpkg 1.16.1 or later 3056fca56fbSSascha Wildner>>>>>>>>&1 string x \b, %s 306327e51cbSPeter Avalos 307e8af9738SPeter Avalos# 308e8af9738SPeter Avalos# MIPS archive; they're in the portable archive format, and need to go 309e8af9738SPeter Avalos# before the entry for regular portable archives, as it's recognized as 310e8af9738SPeter Avalos# a portable archive whose first member has a name beginning with 311e8af9738SPeter Avalos# "__________E". 312327e51cbSPeter Avalos# 313327e51cbSPeter Avalos0 string =!<arch>\n__________E MIPS archive 314e8af9738SPeter Avalos!:mime application/x-archive 315327e51cbSPeter Avalos>20 string U with MIPS Ucode members 316327e51cbSPeter Avalos>21 string L with MIPSEL members 317327e51cbSPeter Avalos>21 string B with MIPSEB members 318327e51cbSPeter Avalos>19 string L and an EL hash table 319327e51cbSPeter Avalos>19 string B and an EB hash table 320327e51cbSPeter Avalos>22 string X -- out of date 321327e51cbSPeter Avalos 322327e51cbSPeter Avalos# 323e8af9738SPeter Avalos# BSD/SVR2-and-later portable archive formats. 324327e51cbSPeter Avalos# 3256fca56fbSSascha Wildner# Update: Joerg Jenderek 3266fca56fbSSascha Wildner# URL: http://fileformats.archiveteam.org/wiki/AR 3276fca56fbSSascha Wildner# Reference: https://www.unix.com/man-page/opensolaris/3HEAD/ar.h/ 3286fca56fbSSascha Wildner# Note: Mach-O universal binary in ./cafebabe is dependent 3296fca56fbSSascha Wildner# TODO: unify current ar archive, MIPS archive, Debian package 3306fca56fbSSascha Wildner# distinguish BSD, SVR; 32, 64 bit; HP from other 32-bit SVR; 3316fca56fbSSascha Wildner# *.ar packages from *.a libraries. handle empty archive 3326fca56fbSSascha Wildner0 string =!<arch>\n current ar archive 3336fca56fbSSascha Wildner# print first and possibly second ar_name[16] for debugging purpose 3346fca56fbSSascha Wildner#>8 string x \b, 1st "%.16s" 3356fca56fbSSascha Wildner#>68 string x \b, 2nd "%.16s" 33679343712SPeter Avalos!:mime application/x-archive 3376fca56fbSSascha Wildner# a in most case for libraries; lib for Microsoft libraries; ar else cases 3386fca56fbSSascha Wildner!:ext a/lib/ar 339327e51cbSPeter Avalos>8 string __.SYMDEF random library 3406fca56fbSSascha Wildner# first member with long marked name __.SYMDEF SORTED implies BSD library 341e8af9738SPeter Avalos>68 string __.SYMDEF\ SORTED random library 3426fca56fbSSascha Wildner# Reference: https://parisc.wiki.kernel.org/images-parisc/b/b2/Rad_11_0_32.pdf 3436fca56fbSSascha Wildner# "archive file" entry moved from ./hp 3446fca56fbSSascha Wildner# LST header system_id 0210h~PA-RISC 1.1,... identifies the target architecture 3456fca56fbSSascha Wildner# LST header a_magic 0619h~relocatable library 3466fca56fbSSascha Wildner>68 belong 0x020b0619 - PA-RISC1.0 relocatable library 3476fca56fbSSascha Wildner>68 belong 0x02100619 - PA-RISC1.1 relocatable library 3486fca56fbSSascha Wildner>68 belong 0x02110619 - PA-RISC1.2 relocatable library 3496fca56fbSSascha Wildner>68 belong 0x02140619 - PA-RISC2.0 relocatable library 3506fca56fbSSascha Wildner#EOF for common ar archives 351e8af9738SPeter Avalos 352327e51cbSPeter Avalos# 353e8af9738SPeter Avalos# "Thin" archive, as can be produced by GNU ar. 354327e51cbSPeter Avalos# 355e8af9738SPeter Avalos0 string =!<thin>\n thin archive with 356e8af9738SPeter Avalos>68 belong 0 no symbol entries 357e8af9738SPeter Avalos>68 belong 1 %d symbol entry 358e8af9738SPeter Avalos>68 belong >1 %d symbol entries 359327e51cbSPeter Avalos 3606fca56fbSSascha Wildner0 search/1 -h- Software Tools format archive text 3616fca56fbSSascha Wildner 362327e51cbSPeter Avalos# ARC archiver, from Daniel Quinlan (quinlan@yggdrasil.com) 363327e51cbSPeter Avalos# 364327e51cbSPeter Avalos# The first byte is the magic (0x1a), byte 2 is the compression type for 365327e51cbSPeter Avalos# the first file (0x01 through 0x09), and bytes 3 to 15 are the MS-DOS 366327e51cbSPeter Avalos# filename of the first file (null terminated). Since some types collide 367327e51cbSPeter Avalos# we only test some types on basis of frequency: 0x08 (83%), 0x09 (5%), 368327e51cbSPeter Avalos# 0x02 (5%), 0x03 (3%), 0x04 (2%), 0x06 (2%). 0x01 collides with terminfo. 369327e51cbSPeter Avalos0 lelong&0x8080ffff 0x0000081a ARC archive data, dynamic LZW 37079343712SPeter Avalos!:mime application/x-arc 371327e51cbSPeter Avalos0 lelong&0x8080ffff 0x0000091a ARC archive data, squashed 37279343712SPeter Avalos!:mime application/x-arc 373327e51cbSPeter Avalos0 lelong&0x8080ffff 0x0000021a ARC archive data, uncompressed 37479343712SPeter Avalos!:mime application/x-arc 375327e51cbSPeter Avalos0 lelong&0x8080ffff 0x0000031a ARC archive data, packed 37679343712SPeter Avalos!:mime application/x-arc 377327e51cbSPeter Avalos0 lelong&0x8080ffff 0x0000041a ARC archive data, squeezed 37879343712SPeter Avalos!:mime application/x-arc 379327e51cbSPeter Avalos0 lelong&0x8080ffff 0x0000061a ARC archive data, crunched 38079343712SPeter Avalos!:mime application/x-arc 381327e51cbSPeter Avalos# [JW] stuff taken from idarc, obviously ARC successors: 382327e51cbSPeter Avalos0 lelong&0x8080ffff 0x00000a1a PAK archive data 38379343712SPeter Avalos!:mime application/x-arc 384327e51cbSPeter Avalos0 lelong&0x8080ffff 0x0000141a ARC+ archive data 38579343712SPeter Avalos!:mime application/x-arc 386327e51cbSPeter Avalos0 lelong&0x8080ffff 0x0000481a HYP archive data 38779343712SPeter Avalos!:mime application/x-arc 388327e51cbSPeter Avalos 389327e51cbSPeter Avalos# Acorn archive formats (Disaster prone simpleton, m91dps@ecs.ox.ac.uk) 390327e51cbSPeter Avalos# I can't create either SPARK or ArcFS archives so I have not tested this stuff 391327e51cbSPeter Avalos# [GRR: the original entries collide with ARC, above; replaced with combined 392327e51cbSPeter Avalos# version (not tested)] 393327e51cbSPeter Avalos#0 byte 0x1a RISC OS archive (spark format) 394327e51cbSPeter Avalos0 string \032archive RISC OS archive (ArcFS format) 395327e51cbSPeter Avalos0 string Archive\000 RISC OS archive (ArcFS format) 396327e51cbSPeter Avalos 397327e51cbSPeter Avalos# All these were taken from idarc, many could not be verified. Unfortunately, 398327e51cbSPeter Avalos# there were many low-quality sigs, i.e. easy to trigger false positives. 399327e51cbSPeter Avalos# Please notify me of any real-world fishy/ambiguous signatures and I'll try 400327e51cbSPeter Avalos# to get my hands on the actual archiver and see if I find something better. [JW] 401327e51cbSPeter Avalos# probably many can be enhanced by finding some 0-byte or control char near the start 402327e51cbSPeter Avalos 403327e51cbSPeter Avalos# idarc calls this Crush/Uncompressed... *shrug* 404327e51cbSPeter Avalos0 string CRUSH Crush archive data 405327e51cbSPeter Avalos# Squeeze It (.sqz) 406327e51cbSPeter Avalos0 string HLSQZ Squeeze It archive data 407327e51cbSPeter Avalos# SQWEZ 408327e51cbSPeter Avalos0 string SQWEZ SQWEZ archive data 409327e51cbSPeter Avalos# HPack (.hpk) 410327e51cbSPeter Avalos0 string HPAK HPack archive data 411327e51cbSPeter Avalos# HAP 412327e51cbSPeter Avalos0 string \x91\x33HF HAP archive data 413327e51cbSPeter Avalos# MD/MDCD 414327e51cbSPeter Avalos0 string MDmd MDCD archive data 415327e51cbSPeter Avalos# LIM 416327e51cbSPeter Avalos0 string LIM\x1a LIM archive data 417327e51cbSPeter Avalos# SAR 418327e51cbSPeter Avalos3 string LH5 SAR archive data 419327e51cbSPeter Avalos# BSArc/BS2 420e8af9738SPeter Avalos0 string \212\3SB\020\0 BSArc/BS2 archive data 421e8af9738SPeter Avalos# Bethesda Softworks Archive (Oblivion) 422e8af9738SPeter Avalos0 string BSA\0 BSArc archive data 423e8af9738SPeter Avalos>4 lelong x version %d 424327e51cbSPeter Avalos# MAR 425327e51cbSPeter Avalos2 string =-ah MAR archive data 426327e51cbSPeter Avalos# ACB 4279f86ab30SPeter Avalos#0 belong&0x00f800ff 0x00800000 ACB archive data 428327e51cbSPeter Avalos# CPZ 429327e51cbSPeter Avalos# TODO, this is what idarc says: 0 string \0\0\0 CPZ archive data 430327e51cbSPeter Avalos# JRC 431327e51cbSPeter Avalos0 string JRchive JRC archive data 432327e51cbSPeter Avalos# Quantum 433327e51cbSPeter Avalos0 string DS\0 Quantum archive data 434327e51cbSPeter Avalos# ReSOF 435327e51cbSPeter Avalos0 string PK\3\6 ReSOF archive data 436327e51cbSPeter Avalos# QuArk 437327e51cbSPeter Avalos0 string 7\4 QuArk archive data 438327e51cbSPeter Avalos# YAC 439327e51cbSPeter Avalos14 string YC YAC archive data 440327e51cbSPeter Avalos# X1 441327e51cbSPeter Avalos0 string X1 X1 archive data 442327e51cbSPeter Avalos0 string XhDr X1 archive data 443327e51cbSPeter Avalos# CDC Codec (.dqt) 444327e51cbSPeter Avalos0 belong&0xffffe000 0x76ff2000 CDC Codec archive data 445327e51cbSPeter Avalos# AMGC 446327e51cbSPeter Avalos0 string \xad6" AMGC archive data 447327e51cbSPeter Avalos# NuLIB 448e8af9738SPeter Avalos0 string N\xc3\xb5F\xc3\xa9lx\xc3\xa5 NuLIB archive data 449327e51cbSPeter Avalos# PakLeo 450327e51cbSPeter Avalos0 string LEOLZW PAKLeo archive data 451327e51cbSPeter Avalos# ChArc 452327e51cbSPeter Avalos0 string SChF ChArc archive data 453327e51cbSPeter Avalos# PSA 454327e51cbSPeter Avalos0 string PSA PSA archive data 455327e51cbSPeter Avalos# CrossePAC 456327e51cbSPeter Avalos0 string DSIGDCC CrossePAC archive data 457327e51cbSPeter Avalos# Freeze 458327e51cbSPeter Avalos0 string \x1f\x9f\x4a\x10\x0a Freeze archive data 459327e51cbSPeter Avalos# KBoom 460e8af9738SPeter Avalos0 string \xc2\xa8MP\xc2\xa8 KBoom archive data 461327e51cbSPeter Avalos# NSQ, must go after CDC Codec 462327e51cbSPeter Avalos0 string \x76\xff NSQ archive data 463327e51cbSPeter Avalos# DPA 464327e51cbSPeter Avalos0 string Dirk\ Paehl DPA archive data 465327e51cbSPeter Avalos# BA 466327e51cbSPeter Avalos# TODO: idarc says "bytes 0-2 == bytes 3-5" 467327e51cbSPeter Avalos# TTComp 468c30bd091SSascha Wildner# URL: http://fileformats.archiveteam.org/wiki/TTComp_archive 469c30bd091SSascha Wildner# Update: Joerg Jenderek 470c30bd091SSascha Wildner# GRR: line below is too general as it matches also Panorama database "TCDB 2003-10 demo.pan", others 471c30bd091SSascha Wildner0 string \0\6 472c30bd091SSascha Wildner# look for first keyword of Panorama database *.pan 473c30bd091SSascha Wildner>12 search/261 DESIGN 474c30bd091SSascha Wildner# skip keyword with low entropy 475614728caSSascha Wildner>12 default x 476614728caSSascha Wildner# skip DOS 2.0 backup id file, sequence 6 with many nils like BACKUPID_xx6.@@@ handled by ./msdos 477614728caSSascha Wildner>>8 quad !0 478614728caSSascha Wildner>>>0 use ttcomp 479614728caSSascha Wildner# variant ASCII, 4K dictionary (strength=48=50-2). With strength=49 wrong order! WHY? 480614728caSSascha Wildner0 string \1\6 481614728caSSascha Wildner# TODO: 482614728caSSascha Wildner# skip VAX-order 68k Blit mpx/mux executable (strength=50) handled by ./blit 483614728caSSascha Wildner!:strength -2 484614728caSSascha Wildner>0 use ttcomp 485614728caSSascha Wildner0 string \0\5 486614728caSSascha Wildner# skip some DOS 2.0 backup id file, sequence 5 with many nils like BACKUPID_075.@@@ handled by ./msdos 487614728caSSascha Wildner>8 quad !0 488614728caSSascha Wildner>>0 use ttcomp 489614728caSSascha Wildner0 string \1\5 490614728caSSascha Wildner# TODO: 491614728caSSascha Wildner# variant ASCII, 2K dictionary (strength=48=50-2). With strength=49 wrong order! WHY? 492614728caSSascha Wildner# skip ctab data (strength=50) handled by ./ibm6000 493614728caSSascha Wildner# skip locale data table (strength=50) handled by ./digital 494614728caSSascha Wildner!:strength -2 495614728caSSascha Wildner>0 use ttcomp 496614728caSSascha Wildner0 string \0\4 497614728caSSascha Wildner# skip many Maple help database *.hdb with version tag handled by ./maple 498614728caSSascha Wildner>1028 string !version 499614728caSSascha Wildner# skip veclib maple.hdb by looking for Mable keyword 500614728caSSascha Wildner>>4 search/1091 Maple\040 501614728caSSascha Wildner#>4 search/34090 Maple\040 502614728caSSascha Wildner>>4 default x 503614728caSSascha Wildner# skip DOS 2.0-3.2 backed up sequence 4 with many nils like LOTUS5.RAR handled by ./msdos 504614728caSSascha Wildner# skip xBASE Compound Index file *.CDX with many nils 505614728caSSascha Wildner>>>0x54 quad !0 506614728caSSascha Wildner>>>>0 use ttcomp 507614728caSSascha Wildner0 string \1\4 508614728caSSascha Wildner# TODO: 509614728caSSascha Wildner# skip Commodore PET BASIC 4.0 program *.prg 510614728caSSascha Wildner# variant ASCII, 1K dictionary (strength=48=50-2). With strength=49 wrong order! WHY? 511614728caSSascha Wildner# skip shared library (strength=50) handled by ./ibm6000 512614728caSSascha Wildner!:strength -2 513614728caSSascha Wildner>0 use ttcomp 514614728caSSascha Wildner# display information of TTComp archive 515614728caSSascha Wildner0 name ttcomp 516614728caSSascha Wildner# (version 5.25) labeled the entry as "TTComp archive data" 517614728caSSascha Wildner>0 ubyte x TTComp archive data 518614728caSSascha Wildner!:mime application/x-compress-ttcomp 519614728caSSascha Wildner# PBACKSCR.PI1 520614728caSSascha Wildner!:ext $xe/$ts/pi1/__d 521614728caSSascha Wildner# compression type: 0~binary compression 1~ASCII compression 522614728caSSascha Wildner>0 ubyte 0 \b, binary 523614728caSSascha Wildner>0 ubyte 1 \b, ASCII 524614728caSSascha Wildner# size of the dictionary: 4~1024 bytes 5~2048 bytes 6~4096 bytes 525614728caSSascha Wildner>1 ubyte 4 \b, 1K 526614728caSSascha Wildner>1 ubyte 5 \b, 2K 527614728caSSascha Wildner>1 ubyte 6 \b, 4K 528614728caSSascha Wildner>1 ubyte x dictionary 529614728caSSascha Wildner# https://mark0.net/forum/index.php?topic=848 530614728caSSascha Wildner# last 3 bytes probably have only 8 possible bit sequences 531614728caSSascha Wildner# xxxxxxxx 0000000x 11111111 ____FFh 532614728caSSascha Wildner# xxxxxxxx 10000000 01111111 __807Fh 533614728caSSascha Wildner# 0xxxxxxx 11000000 00111111 __C03Fh 534614728caSSascha Wildner# 00xxxxxx 11100000 00011111 __E01Fh 535614728caSSascha Wildner# 000xxxxx 11110000 00001111 __F00Fh 536614728caSSascha Wildner# 0000xxxx 11111000 00000111 __F807h 537614728caSSascha Wildner# 00000xxx 11111100 00000011 __FC03h 538614728caSSascha Wildner# 000000xx 11111110 00000001 __FE01h 539614728caSSascha Wildner# but for quickgif.__d 0A7DD4h 540614728caSSascha Wildner#>-3 ubyte x \b, last 3 bytes 0x%2.2x 541614728caSSascha Wildner#>-2 ubeshort x \b%4.4x 5426fca56fbSSascha Wildner# From: Joerg Jenderek 543*3b9cdfa3SAntonio Huete Jimenez# URL: https://en.wikipedia.org/wiki/Disk_Copy 5446fca56fbSSascha Wildner# reference: http://nulib.com/library/FTN.e00005.htm 5456fca56fbSSascha Wildner0x52 ubeshort 0x0100 546970935fdSSascha Wildner# test for disk image size equal or above 400k 547970935fdSSascha Wildner>0x40 ubelong >409599 548970935fdSSascha Wildner# test also for disk image size equal or below 1440k to skip 549970935fdSSascha Wildner# windows7en.mbr UNICODE.DAT 550*3b9cdfa3SAntonio Huete Jimenez#>>0x40 ubelong <1474561 551*3b9cdfa3SAntonio Huete Jimenez# test now for "low" disk image size equal or below 64 MiB to skip 552*3b9cdfa3SAntonio Huete Jimenez# windows7en.mbr (B441BBAAh) UNICODE.DAT (0400AF05h) 553*3b9cdfa3SAntonio Huete Jimenez>>0x40 ubelong <0x04000001 554*3b9cdfa3SAntonio Huete Jimenez# To skip Flags$StringJoiner.class with size 00106A61h test also for valid disk image sizes 555*3b9cdfa3SAntonio Huete Jimenez# 00064000 for 400k GCR disks dc42-400k-gcr.trid.xml 556*3b9cdfa3SAntonio Huete Jimenez# 000c8000 for 800k GCR disks dc42-800k-gcr.trid.xml 557*3b9cdfa3SAntonio Huete Jimenez# 000b4000 for 720k MFM disks dc42-720k-mfm.trid.xml 558*3b9cdfa3SAntonio Huete Jimenez# 00168000 for 1440k MFM disks dc42-1440k-mfm.trid.xml 559*3b9cdfa3SAntonio Huete Jimenez# https://lisaem.sunder.net/LisaProjectDocs.txt 560*3b9cdfa3SAntonio Huete Jimenez# 00500000 05M available 561*3b9cdfa3SAntonio Huete Jimenez# 00A00000 10M available 562*3b9cdfa3SAntonio Huete Jimenez# 01800000 24M possible 563*3b9cdfa3SAntonio Huete Jimenez# 02000000 32M uncertain 564*3b9cdfa3SAntonio Huete Jimenez# 04000000 64M uncertain 565*3b9cdfa3SAntonio Huete Jimenez>>>0x40 ubelong&0xf8003fFF 0 566*3b9cdfa3SAntonio Huete Jimenez# skip samples with invalid disk name length like: 567*3b9cdfa3SAntonio Huete Jimenez# 181 (biosmd80.rom) 202 (Flags$StringJoiner.class) 90 (UNICODE.DAT) 568*3b9cdfa3SAntonio Huete Jimenez>>>>0x0 ubyte <64 569*3b9cdfa3SAntonio Huete Jimenez>>>>>0 use dc42-floppy 570970935fdSSascha Wildner# display information of Apple DiskCopy 4.2 floppy image 571970935fdSSascha Wildner0 name dc42-floppy 572*3b9cdfa3SAntonio Huete Jimenez# disk name length; maximal 63 573*3b9cdfa3SAntonio Huete Jimenez#>0 ubyte x DISK NAME LENGTH %u 574*3b9cdfa3SAntonio Huete Jimenez# ASCII image pascal (maximal 63 bytes) name padded with NULs like: 575*3b9cdfa3SAntonio Huete Jimenez# "Microsoft Mail" "Disquette 2" "IIe Installer Disk" 576*3b9cdfa3SAntonio Huete Jimenez# "-lisaem.sunder.net hd-" (dc42-lisaem.trid.xml) "-not a Macintosh disk" (dc42-nonmac.trid.xml) 577970935fdSSascha Wildner>00 pstring/B x Apple DiskCopy 4.2 image %s 5786fca56fbSSascha Wildner#!:mime application/octet-stream 579970935fdSSascha Wildner!:mime application/x-dc42-floppy-image 5806fca56fbSSascha Wildner!:apple dCpydImg 581*3b9cdfa3SAntonio Huete Jimenez# probably also img like: "Utilitaires 2.img" "Installation 7.img" 582*3b9cdfa3SAntonio Huete Jimenez!:ext image/dc42/img 583*3b9cdfa3SAntonio Huete Jimenez# data size in bytes like: 409600 737280 819200 1474560 584970935fdSSascha Wildner>0x40 ubelong x \b, %u bytes 585970935fdSSascha Wildner# for debugging purpose size in hexadecimal 586614728caSSascha Wildner#>0x40 ubelong x (%#8.8x) 587*3b9cdfa3SAntonio Huete Jimenez# tag size in bytes like: 0 (often) 2580h (PUID fmt/625) 4B00h (Microsoft Mail.image) 588614728caSSascha Wildner>0x44 ubelong >0 \b, %#x tag size 5896fca56fbSSascha Wildner# data checksum 590614728caSSascha Wildner#>0x48 ubelong x \b, %#x checksum 5916fca56fbSSascha Wildner# tag checksum 592614728caSSascha Wildner#>0x4c ubelong x \b, %#x tag checksum 593*3b9cdfa3SAntonio Huete Jimenez# disk encoding like: 0 1 2 3 (PUID: fmt/625) 594970935fdSSascha Wildner>0x50 ubyte 0 \b, GCR CLV ssdd (400k) 595970935fdSSascha Wildner>0x50 ubyte 1 \b, GCR CLV dsdd (800k) 596970935fdSSascha Wildner>0x50 ubyte 2 \b, MFM CAV dsdd (720k) 597970935fdSSascha Wildner>0x50 ubyte 3 \b, MFM CAV dshd (1440k) 598614728caSSascha Wildner>0x50 ubyte >3 \b, %#x encoding 599*3b9cdfa3SAntonio Huete Jimenez# format byte like: 12h (Lisa 400K) 24h (400K Macintosh) 96h (800K Apple II disk) 600*3b9cdfa3SAntonio Huete Jimenez# 2 (Mac 400k "Disquette Installation 13.image") 601*3b9cdfa3SAntonio Huete Jimenez# 22h (double-sided MFM or Mac 800k "Disco 12.image" "IIe Installer Disk.image") 602614728caSSascha Wildner>0x51 ubyte x \b, %#x format 603614728caSSascha Wildner#>0x54 ubequad x \b, data %#16.16llx 604327e51cbSPeter Avalos# ESP, could this conflict with Easy Software Products' (e.g.ESP ghostscript) documentation? 605327e51cbSPeter Avalos0 string ESP ESP archive data 606327e51cbSPeter Avalos# ZPack 607327e51cbSPeter Avalos0 string \1ZPK\1 ZPack archive data 608327e51cbSPeter Avalos# Sky 609327e51cbSPeter Avalos0 string \xbc\x40 Sky archive data 610327e51cbSPeter Avalos# UFA 611327e51cbSPeter Avalos0 string UFA UFA archive data 612327e51cbSPeter Avalos# Dry 613327e51cbSPeter Avalos0 string =-H2O DRY archive data 614327e51cbSPeter Avalos# FoxSQZ 615327e51cbSPeter Avalos0 string FOXSQZ FoxSQZ archive data 616327e51cbSPeter Avalos# AR7 617327e51cbSPeter Avalos0 string ,AR7 AR7 archive data 618327e51cbSPeter Avalos# PPMZ 619327e51cbSPeter Avalos0 string PPMZ PPMZ archive data 620327e51cbSPeter Avalos# MS Compress 6216fca56fbSSascha Wildner# Update: Joerg Jenderek 6226fca56fbSSascha Wildner# URL: http://fileformats.archiveteam.org/wiki/MS-DOS_installation_compression 6236fca56fbSSascha Wildner# Reference: https://hwiegman.home.xs4all.nl/fileformats/compress/szdd_kwaj_format.html 6246fca56fbSSascha Wildner# Note: use correct version of extracting tool like EXPAND, UNPACK, DECOMP or 7Z 6256fca56fbSSascha Wildner4 string \x88\xf0\x27 6266fca56fbSSascha Wildner# KWAJ variant 6276fca56fbSSascha Wildner>0 string KWAJ MS Compress archive data, KWAJ variant 6286fca56fbSSascha Wildner!:mime application/x-ms-compress-kwaj 6296fca56fbSSascha Wildner# extension not working in version 5.32 6306fca56fbSSascha Wildner# magic/Magdir/archive, 284: Warning: EXTENSION type ` ??_' has bad char '?' 6316fca56fbSSascha Wildner# file: line 284: Bad magic entry ' ??_' 6326fca56fbSSascha Wildner!:ext ??_ 6336fca56fbSSascha Wildner# compression method (0-4) 6346fca56fbSSascha Wildner>>8 uleshort x \b, %u method 6356fca56fbSSascha Wildner# offset of compressed data 636614728caSSascha Wildner>>10 uleshort x \b, %#x offset 6376fca56fbSSascha Wildner#>>(10.s) uleshort x 6386fca56fbSSascha Wildner#>>>&-6 string x \b, TEST extension %-.3s 6396fca56fbSSascha Wildner# header flags to mark header extensions 640614728caSSascha Wildner>>12 uleshort >0 \b, %#x flags 6416fca56fbSSascha Wildner# 4 bytes: decompressed length of file 6426fca56fbSSascha Wildner>>12 uleshort &0x01 6436fca56fbSSascha Wildner>>>14 ulelong x \b, original size: %u bytes 6446fca56fbSSascha Wildner# 2 bytes: unknown purpose 6456fca56fbSSascha Wildner# 2 bytes: length of unknown data + mentioned bytes 6466fca56fbSSascha Wildner# 1-9 bytes: null-terminated file name 6476fca56fbSSascha Wildner# 1-4 bytes: null-terminated file extension 6486fca56fbSSascha Wildner>>12 uleshort &0x08 6496fca56fbSSascha Wildner>>>12 uleshort ^0x01 6506fca56fbSSascha Wildner>>>>12 uleshort ^0x02 6516fca56fbSSascha Wildner>>>>>12 uleshort ^0x04 6526fca56fbSSascha Wildner>>>>>>12 uleshort ^0x10 6536fca56fbSSascha Wildner>>>>>>>14 string x \b, %-.8s 6546fca56fbSSascha Wildner>>>>>>12 uleshort &0x10 6556fca56fbSSascha Wildner>>>>>>>14 string x \b, %-.8s 6566fca56fbSSascha Wildner>>>>>>>>&1 string x \b.%-.3s 6576fca56fbSSascha Wildner>>>>>12 uleshort &0x04 6586fca56fbSSascha Wildner>>>>>>12 uleshort ^0x10 6596fca56fbSSascha Wildner>>>>>>>(14.s) uleshort x 6606fca56fbSSascha Wildner>>>>>>>>&14 string x \b, %-.8s 6616fca56fbSSascha Wildner>>>>>>12 uleshort &0x10 6626fca56fbSSascha Wildner>>>>>>>(14.s) uleshort x 6636fca56fbSSascha Wildner>>>>>>>>&14 string x \b, %-.8s 6646fca56fbSSascha Wildner>>>>>>>>>&1 string x \b.%-.3s 6656fca56fbSSascha Wildner>>>>12 uleshort &0x02 6666fca56fbSSascha Wildner>>>>>12 uleshort ^0x04 6676fca56fbSSascha Wildner>>>>>>12 uleshort ^0x10 6686fca56fbSSascha Wildner>>>>>>>16 string x \b, %-.8s 6696fca56fbSSascha Wildner>>>>>>12 uleshort &0x10 6706fca56fbSSascha Wildner>>>>>>>16 string x \b, %-.8s 6716fca56fbSSascha Wildner>>>>>>>>&1 string x \b.%-.3s 6726fca56fbSSascha Wildner>>>>>12 uleshort &0x04 6736fca56fbSSascha Wildner>>>>>>12 uleshort ^0x10 6746fca56fbSSascha Wildner>>>>>>>(16.s) uleshort x 6756fca56fbSSascha Wildner>>>>>>>>&16 string x \b, %-.8s 6766fca56fbSSascha Wildner>>>>>>12 uleshort &0x10 6776fca56fbSSascha Wildner>>>>>>>(16.s) uleshort x 6786fca56fbSSascha Wildner>>>>>>>&16 string x %-.8s 6796fca56fbSSascha Wildner>>>>>>>>&1 string x \b.%-.3s 6806fca56fbSSascha Wildner>>>12 uleshort &0x01 6816fca56fbSSascha Wildner>>>>12 uleshort ^0x02 6826fca56fbSSascha Wildner>>>>>12 uleshort ^0x04 6836fca56fbSSascha Wildner>>>>>>12 uleshort ^0x10 6846fca56fbSSascha Wildner>>>>>>>18 string x \b, %-.8s 6856fca56fbSSascha Wildner>>>>>>12 uleshort &0x10 6866fca56fbSSascha Wildner>>>>>>>18 string x \b, %-.8s 6876fca56fbSSascha Wildner>>>>>>>>&1 string x \b.%-.3s 6886fca56fbSSascha Wildner>>>>>12 uleshort &0x04 6896fca56fbSSascha Wildner>>>>>>12 uleshort ^0x10 6906fca56fbSSascha Wildner>>>>>>>(18.s) uleshort x 6916fca56fbSSascha Wildner>>>>>>>>&18 string x \b, %-.8s 6926fca56fbSSascha Wildner>>>>>>12 uleshort &0x10 6936fca56fbSSascha Wildner>>>>>>>(18.s) uleshort x 6946fca56fbSSascha Wildner>>>>>>>>&18 string x \b, %-.8s 6956fca56fbSSascha Wildner>>>>>>>>>&1 string x \b.%-.3s 6966fca56fbSSascha Wildner>>>>12 uleshort &0x02 6976fca56fbSSascha Wildner>>>>>12 uleshort ^0x04 6986fca56fbSSascha Wildner>>>>>>12 uleshort ^0x10 6996fca56fbSSascha Wildner>>>>>>>20 string x \b, %-.8s 7006fca56fbSSascha Wildner>>>>>>12 uleshort &0x10 7016fca56fbSSascha Wildner>>>>>>>20 string x \b, %-.8s 7026fca56fbSSascha Wildner>>>>>>>>&1 string x \b.%-.3s 7036fca56fbSSascha Wildner>>>>>12 uleshort &0x04 7046fca56fbSSascha Wildner>>>>>>12 uleshort ^0x10 7056fca56fbSSascha Wildner>>>>>>>(20.s) uleshort x 7066fca56fbSSascha Wildner>>>>>>>>&20 string x \b, %-.8s 7076fca56fbSSascha Wildner>>>>>>12 uleshort &0x10 7086fca56fbSSascha Wildner>>>>>>>(20.s) uleshort x 7096fca56fbSSascha Wildner>>>>>>>>&20 string x \b, %-.8s 7106fca56fbSSascha Wildner>>>>>>>>>&1 string x \b.%-.3s 7116fca56fbSSascha Wildner# 2 bytes: length of data + mentioned bytes 7126fca56fbSSascha Wildner# 7136fca56fbSSascha Wildner# SZDD variant Haruhiko Okumura's LZSS or 7z type MsLZ 714*3b9cdfa3SAntonio Huete Jimenez# URL: http://fileformats.archiveteam.org/wiki/MS-DOS_installation_compression 715*3b9cdfa3SAntonio Huete Jimenez# Reference: http://www.cabextract.org.uk/libmspack/doc/szdd_kwaj_format.html 716*3b9cdfa3SAntonio Huete Jimenez# http://mark0.net/download/triddefs_xml.7z/defs/s/szdd.trid.xml 717*3b9cdfa3SAntonio Huete Jimenez# Note: called "Microsoft SZDD compressed (Haruhiko Okumura's LZSS)" by TrID 718*3b9cdfa3SAntonio Huete Jimenez# verfied by 7-Zip `7z l -tMsLZ -slt *.??_` as MsLZ 719*3b9cdfa3SAntonio Huete Jimenez# `deark -l -m lzss_oku -d2 setup-1-41.bin` as "LZSS.C by Haruhiko Okumura" 7206fca56fbSSascha Wildner>0 string SZDD MS Compress archive data, SZDD variant 721*3b9cdfa3SAntonio Huete Jimenez# 2nd part of signature 722*3b9cdfa3SAntonio Huete Jimenez#>>4 ubelong 0x88F02733 \b, SIGNATURE OK 7236fca56fbSSascha Wildner!:mime application/x-ms-compress-szdd 7246fca56fbSSascha Wildner!:ext ??_ 7256fca56fbSSascha Wildner# The character missing from the end of the filename (0=unknown) 7266fca56fbSSascha Wildner>>9 string >\0 \b, %-.1s is last character of original name 7276fca56fbSSascha Wildner# https://www.betaarchive.com/forum/viewtopic.php?t=26161 7286fca56fbSSascha Wildner# Compression mode: "A" (0x41) found but sometimes "B" in Windows 3.1 builds 026 and 034e 7296fca56fbSSascha Wildner>>8 string !A \b, %-.1s method 7306fca56fbSSascha Wildner>>10 ulelong >0 \b, original size: %u bytes 731*3b9cdfa3SAntonio Huete Jimenez# Summary: InstallShield archive with SZDD compressed 732*3b9cdfa3SAntonio Huete Jimenez# URL: https://community.flexera.com/t5/InstallShield-Knowledge-Base/InstallShield-Redistributable-Files/ta-p/5647 733*3b9cdfa3SAntonio Huete Jimenez# From: Joerg Jenderek 734*3b9cdfa3SAntonio Huete Jimenez1 search/48/bs SZDD\x88\xF0\x27\x33 InstallShield archive 735*3b9cdfa3SAntonio Huete Jimenez#!:mime application/octet-stream 736*3b9cdfa3SAntonio Huete Jimenez!:mime application/x-installshield-compress-szdd 737*3b9cdfa3SAntonio Huete Jimenez!:ext ibt 738*3b9cdfa3SAntonio Huete Jimenez# name of compressed archive member like: setup.dl_ _setup7int.dl_ _setup2k.dl_ _igdi.dl_ cabinet.dl_ 739*3b9cdfa3SAntonio Huete Jimenez>0 string x %s 740*3b9cdfa3SAntonio Huete Jimenez# name of uncompressed archive member like: setup.dll _Setup.dll IGdi.dll CABINET.DLL 741*3b9cdfa3SAntonio Huete Jimenez>>&1 string x (%s) 742*3b9cdfa3SAntonio Huete Jimenez# probably version like: 9.0.0.333 9.1.0.429 11.50.0.42618 743*3b9cdfa3SAntonio Huete Jimenez>>>&1 string x \b, version %s 744*3b9cdfa3SAntonio Huete Jimenez# SZDD member length like: 168048 169333 181842 745*3b9cdfa3SAntonio Huete Jimenez>>>>&1 string x \b, %s bytes 746*3b9cdfa3SAntonio Huete Jimenez# MS Compress archive data 747*3b9cdfa3SAntonio Huete Jimenez#>&0 string SZDD \b, SIGNATURE FOUND 748*3b9cdfa3SAntonio Huete Jimenez>&0 indirect x 7496fca56fbSSascha Wildner# QBasic SZDD variant 7506fca56fbSSascha Wildner3 string \x88\xf0\x27 7516fca56fbSSascha Wildner>0 string SZ\x20 MS Compress archive data, QBasic variant 7526fca56fbSSascha Wildner!:mime application/x-ms-compress-sz 7536fca56fbSSascha Wildner!:ext ??$ 7546fca56fbSSascha Wildner>>8 ulelong >0 \b, original size: %u bytes 7556fca56fbSSascha Wildner 756*3b9cdfa3SAntonio Huete Jimenez# Summary: CAZIP compressed file 757*3b9cdfa3SAntonio Huete Jimenez# From: Joerg Jenderek 758*3b9cdfa3SAntonio Huete Jimenez# URL: http://fileformats.archiveteam.org/wiki/CAZIP 759*3b9cdfa3SAntonio Huete Jimenez# Reference: http://mark0.net/download/triddefs_xml.7z/defs/c/caz.trid.xml 760*3b9cdfa3SAntonio Huete Jimenez# Note: Format is distinct from CAZIPXP compressed 761*3b9cdfa3SAntonio Huete Jimenez0 string \x0D\x0A\x1ACAZIP CAZIP compressed file 762*3b9cdfa3SAntonio Huete Jimenez#!:mime application/octet-stream 763*3b9cdfa3SAntonio Huete Jimenez!:mime application/x-compress-cazip 764*3b9cdfa3SAntonio Huete Jimenez# like: BLINKER.WR_ CLIPDEFS._ CAOSETUP.EX_ CLIPPER.EX_ FILEIO.C_ 765*3b9cdfa3SAntonio Huete Jimenez!:ext ??_/?_/_ 766*3b9cdfa3SAntonio Huete Jimenez 767614728caSSascha Wildner# Summary: FTCOMP compressed archive 768614728caSSascha Wildner# From: Joerg Jenderek 769614728caSSascha Wildner# URL: http://fileformats.archiveteam.org/wiki/FTCOMP 770614728caSSascha Wildner# Reference: http://mark0.net/download/triddefs_xml.7z/defs/a/ark-ftcomp.trid.xml 771614728caSSascha Wildner# Note: called by TrID "FTCOMP compressed archive" 772614728caSSascha Wildner# extracted by `unpack seahelp.hl_` 773614728caSSascha Wildner24 string/b FTCOMP FTCOMP compressed archive 774614728caSSascha Wildner#!:mime application/octet-stream 775614728caSSascha Wildner!:mime application/x-compress-ftcomp 776614728caSSascha Wildner!:ext ??_/??@/dll/drv/pk2/ 777614728caSSascha Wildner# probably A596FDFF magic at the beginning 778614728caSSascha Wildner>0 ubelong !0xA596FDFF \b, at beginning %#x 779614728caSSascha Wildner# probably original file name with directory like: \OS2\unpack.exe \SYSTEM\8514.DRV MAHJONGG.EXE 780614728caSSascha Wildner>41 string x "%s" 781614728caSSascha Wildner 782327e51cbSPeter Avalos# MP3 (archiver, not lossy audio compression) 783327e51cbSPeter Avalos0 string MP3\x1a MP3-Archiver archive data 784327e51cbSPeter Avalos# ZET 785e8af9738SPeter Avalos0 string OZ\xc3\x9d ZET archive data 786327e51cbSPeter Avalos# TSComp 787327e51cbSPeter Avalos0 string \x65\x5d\x13\x8c\x08\x01\x03\x00 TSComp archive data 788327e51cbSPeter Avalos# ARQ 789327e51cbSPeter Avalos0 string gW\4\1 ARQ archive data 790327e51cbSPeter Avalos# Squash 791327e51cbSPeter Avalos3 string OctSqu Squash archive data 792327e51cbSPeter Avalos# Terse 793327e51cbSPeter Avalos0 string \5\1\1\0 Terse archive data 794327e51cbSPeter Avalos# PUCrunch 795327e51cbSPeter Avalos0 string \x01\x08\x0b\x08\xef\x00\x9e\x32\x30\x36\x31 PUCrunch archive data 796327e51cbSPeter Avalos# UHarc 797327e51cbSPeter Avalos0 string UHA UHarc archive data 798327e51cbSPeter Avalos# ABComp 799327e51cbSPeter Avalos0 string \2AB ABComp archive data 800327e51cbSPeter Avalos0 string \3AB2 ABComp archive data 801327e51cbSPeter Avalos# CMP 802327e51cbSPeter Avalos0 string CO\0 CMP archive data 803327e51cbSPeter Avalos# Splint 804327e51cbSPeter Avalos0 string \x93\xb9\x06 Splint archive data 805327e51cbSPeter Avalos# InstallShield 806327e51cbSPeter Avalos0 string \x13\x5d\x65\x8c InstallShield Z archive Data 807327e51cbSPeter Avalos# Gather 808327e51cbSPeter Avalos1 string GTH Gather archive data 809327e51cbSPeter Avalos# BOA 810327e51cbSPeter Avalos0 string BOA BOA archive data 811327e51cbSPeter Avalos# RAX 812327e51cbSPeter Avalos0 string ULEB\xa RAX archive data 813327e51cbSPeter Avalos# Xtreme 814327e51cbSPeter Avalos0 string ULEB\0 Xtreme archive data 815327e51cbSPeter Avalos# Pack Magic 816e8af9738SPeter Avalos0 string @\xc3\xa2\1\0 Pack Magic archive data 817327e51cbSPeter Avalos# BTS 818327e51cbSPeter Avalos0 belong&0xfeffffff 0x1a034465 BTS archive data 819327e51cbSPeter Avalos# ELI 5750 820327e51cbSPeter Avalos0 string Ora\ ELI 5750 archive data 821327e51cbSPeter Avalos# QFC 822327e51cbSPeter Avalos0 string \x1aFC\x1a QFC archive data 823327e51cbSPeter Avalos0 string \x1aQF\x1a QFC archive data 824327e51cbSPeter Avalos# PRO-PACK 825327e51cbSPeter Avalos0 string RNC PRO-PACK archive data 826327e51cbSPeter Avalos# 777 827327e51cbSPeter Avalos0 string 777 777 archive data 828327e51cbSPeter Avalos# LZS221 829327e51cbSPeter Avalos0 string sTaC LZS221 archive data 830327e51cbSPeter Avalos# HPA 831327e51cbSPeter Avalos0 string HPA HPA archive data 832327e51cbSPeter Avalos# Arhangel 833327e51cbSPeter Avalos0 string LG Arhangel archive data 834327e51cbSPeter Avalos# EXP1, uses bzip2 835327e51cbSPeter Avalos0 string 0123456789012345BZh EXP1 archive data 836327e51cbSPeter Avalos# IMP 837327e51cbSPeter Avalos0 string IMP\xa IMP archive data 838327e51cbSPeter Avalos# NRV 839327e51cbSPeter Avalos0 string \x00\x9E\x6E\x72\x76\xFF NRV archive data 840327e51cbSPeter Avalos# Squish 841327e51cbSPeter Avalos0 string \x73\xb2\x90\xf4 Squish archive data 842327e51cbSPeter Avalos# Par 843327e51cbSPeter Avalos0 string PHILIPP Par archive data 844327e51cbSPeter Avalos0 string PAR Par archive data 845327e51cbSPeter Avalos# HIT 846327e51cbSPeter Avalos0 string UB HIT archive data 847327e51cbSPeter Avalos# SBX 848327e51cbSPeter Avalos0 belong&0xfffff000 0x53423000 SBX archive data 849327e51cbSPeter Avalos# NaShrink 850327e51cbSPeter Avalos0 string NSK NaShrink archive data 851327e51cbSPeter Avalos# SAPCAR 852327e51cbSPeter Avalos0 string #\ CAR\ archive\ header SAPCAR archive data 853*3b9cdfa3SAntonio Huete Jimenez0 string CAR\ 2.00 SAPCAR archive data 854*3b9cdfa3SAntonio Huete Jimenez0 string CAR\ 2.01 SAPCAR archive data 855*3b9cdfa3SAntonio Huete Jimenez#!:mime application/octet-stream 856*3b9cdfa3SAntonio Huete Jimenez!:mime application/vnd.sar 857*3b9cdfa3SAntonio Huete Jimenez!:ext sar 858327e51cbSPeter Avalos# Disintegrator 859327e51cbSPeter Avalos0 string DST Disintegrator archive data 860327e51cbSPeter Avalos# ASD 861327e51cbSPeter Avalos0 string ASD ASD archive data 862327e51cbSPeter Avalos# InstallShield CAB 863*3b9cdfa3SAntonio Huete Jimenez# Update: Joerg Jenderek at Nov 2021 864*3b9cdfa3SAntonio Huete Jimenez# URL: https://en.wikipedia.org/wiki/InstallShield 865*3b9cdfa3SAntonio Huete Jimenez# Reference: https://github.com/twogood/unshield/blob/master/lib/cabfile.h 866*3b9cdfa3SAntonio Huete Jimenez# Note: Not compatible with Microsoft CAB files 867*3b9cdfa3SAntonio Huete Jimenez# http://mark0.net/download/triddefs_xml.7z/defs/a/ark-cab-ishield.trid.xml 868*3b9cdfa3SAntonio Huete Jimenez# CAB_SIGNATURE 0x28635349 869*3b9cdfa3SAntonio Huete Jimenez0 string ISc( InstallShield 870*3b9cdfa3SAntonio Huete Jimenez#!:mime application/octet-stream 871*3b9cdfa3SAntonio Huete Jimenez!:mime application/x-installshield 872*3b9cdfa3SAntonio Huete Jimenez# http://mark0.net/download/triddefs_xml.7z/defs/a/ark-cab-ishield-hdr.trid.xml 873*3b9cdfa3SAntonio Huete Jimenez>16 ulelong !0 setup header 874*3b9cdfa3SAntonio Huete Jimenez# like: _SYS1.HDR _USER1.HDR data1.hdr 875*3b9cdfa3SAntonio Huete Jimenez!:ext hdr 876*3b9cdfa3SAntonio Huete Jimenez>16 ulelong =0 CAB 877*3b9cdfa3SAntonio Huete Jimenez# like: _SYS1.CAB _USER1.CAB DATA1.CAB data2.cab 878*3b9cdfa3SAntonio Huete Jimenez!:ext cab 879*3b9cdfa3SAntonio Huete Jimenez# https://github.com/twogood/unshield/blob/master/lib/helper.c 880*3b9cdfa3SAntonio Huete Jimenez# version like: 0x1005201 0x100600c 0x1007000 0x1009500 881*3b9cdfa3SAntonio Huete Jimenez# 0x2000578 0x20005dc 0x2000640 0x40007d0 0x4000834 882*3b9cdfa3SAntonio Huete Jimenez>4 ulelong x \b, version %#x 883*3b9cdfa3SAntonio Huete Jimenez# volume_info like: 0 884*3b9cdfa3SAntonio Huete Jimenez>8 ulelong !0 \b, volume_info %#x 885*3b9cdfa3SAntonio Huete Jimenez# cab_descriptor_offset like: 0x200 886*3b9cdfa3SAntonio Huete Jimenez>12 ulelong !0x200 \b, offset %#x 887*3b9cdfa3SAntonio Huete Jimenez#>0x200 ubequad x \b, at 0x200 %#16.16llx 888*3b9cdfa3SAntonio Huete Jimenez# cab_descriptor_size like: 0 (*.cab) BD5 C8B DA5 E2A E36 116C 251D 4DA9 56F0 5CC2 6E4B 777D 779E 1F7C2 889*3b9cdfa3SAntonio Huete Jimenez>16 ulelong !0 \b, descriptor size %#x 890327e51cbSPeter Avalos# TOP4 891327e51cbSPeter Avalos0 string T4\x1a TOP4 archive data 892327e51cbSPeter Avalos# BatComp left out: sig looks like COM executable 893327e51cbSPeter Avalos# so TODO: get real 4dos batcomp file and find sig 894327e51cbSPeter Avalos# BlakHole 895327e51cbSPeter Avalos0 string BH\5\7 BlakHole archive data 896327e51cbSPeter Avalos# BIX 897327e51cbSPeter Avalos0 string BIX0 BIX archive data 898327e51cbSPeter Avalos# ChiefLZA 899327e51cbSPeter Avalos0 string ChfLZ ChiefLZA archive data 900327e51cbSPeter Avalos# Blink 901327e51cbSPeter Avalos0 string Blink Blink archive data 902327e51cbSPeter Avalos# Logitech Compress 903327e51cbSPeter Avalos0 string \xda\xfa Logitech Compress archive data 904327e51cbSPeter Avalos# ARS-Sfx (FIXME: really a SFX? then goto COM/EXE) 905327e51cbSPeter Avalos1 string (C)\ STEPANYUK ARS-Sfx archive data 906327e51cbSPeter Avalos# AKT/AKT32 907327e51cbSPeter Avalos0 string AKT32 AKT32 archive data 908327e51cbSPeter Avalos0 string AKT AKT archive data 909327e51cbSPeter Avalos# NPack 910327e51cbSPeter Avalos0 string MSTSM NPack archive data 911327e51cbSPeter Avalos# PFT 912327e51cbSPeter Avalos0 string \0\x50\0\x14 PFT archive data 913327e51cbSPeter Avalos# SemOne 914327e51cbSPeter Avalos0 string SEM SemOne archive data 915327e51cbSPeter Avalos# PPMD 916327e51cbSPeter Avalos0 string \x8f\xaf\xac\x84 PPMD archive data 917327e51cbSPeter Avalos# FIZ 918327e51cbSPeter Avalos0 string FIZ FIZ archive data 919327e51cbSPeter Avalos# MSXiE 920327e51cbSPeter Avalos0 belong&0xfffff0f0 0x4d530000 MSXiE archive data 921327e51cbSPeter Avalos# DeepFreezer 922327e51cbSPeter Avalos0 belong&0xfffffff0 0x797a3030 DeepFreezer archive data 923327e51cbSPeter Avalos# DC 924327e51cbSPeter Avalos0 string =<DC- DC archive data 925327e51cbSPeter Avalos# TPac 926327e51cbSPeter Avalos0 string \4TPAC\3 TPac archive data 927327e51cbSPeter Avalos# Ai 928327e51cbSPeter Avalos0 string Ai\1\1\0 Ai archive data 929327e51cbSPeter Avalos0 string Ai\1\0\0 Ai archive data 930327e51cbSPeter Avalos# Ai32 931327e51cbSPeter Avalos0 string Ai\2\0 Ai32 archive data 932327e51cbSPeter Avalos0 string Ai\2\1 Ai32 archive data 933327e51cbSPeter Avalos# SBC 934327e51cbSPeter Avalos0 string SBC SBC archive data 935327e51cbSPeter Avalos# Ybs 936327e51cbSPeter Avalos0 string YBS Ybs archive data 937327e51cbSPeter Avalos# DitPack 938327e51cbSPeter Avalos0 string \x9e\0\0 DitPack archive data 939327e51cbSPeter Avalos# DMS 940327e51cbSPeter Avalos0 string DMS! DMS archive data 941327e51cbSPeter Avalos# EPC 942327e51cbSPeter Avalos0 string \x8f\xaf\xac\x8c EPC archive data 943327e51cbSPeter Avalos# VSARC 944327e51cbSPeter Avalos0 string VS\x1a VSARC archive data 945327e51cbSPeter Avalos# PDZ 946327e51cbSPeter Avalos0 string PDZ PDZ archive data 947327e51cbSPeter Avalos# ReDuq 948327e51cbSPeter Avalos0 string rdqx ReDuq archive data 949327e51cbSPeter Avalos# GCA 950327e51cbSPeter Avalos0 string GCAX GCA archive data 951327e51cbSPeter Avalos# PPMN 952327e51cbSPeter Avalos0 string pN PPMN archive data 953327e51cbSPeter Avalos# WinImage 954327e51cbSPeter Avalos3 string WINIMAGE WinImage archive data 955327e51cbSPeter Avalos# Compressia 956327e51cbSPeter Avalos0 string CMP0CMP Compressia archive data 957327e51cbSPeter Avalos# UHBC 958327e51cbSPeter Avalos0 string UHB UHBC archive data 959327e51cbSPeter Avalos# WinHKI 960327e51cbSPeter Avalos0 string \x61\x5C\x04\x05 WinHKI archive data 961327e51cbSPeter Avalos# WWPack data file 962327e51cbSPeter Avalos0 string WWP WWPack archive data 963327e51cbSPeter Avalos# BSN (BSA, PTS-DOS) 964327e51cbSPeter Avalos0 string \xffBSG BSN archive data 965327e51cbSPeter Avalos1 string \xffBSG BSN archive data 966327e51cbSPeter Avalos3 string \xffBSG BSN archive data 967327e51cbSPeter Avalos1 string \0\xae\2 BSN archive data 968327e51cbSPeter Avalos1 string \0\xae\3 BSN archive data 969327e51cbSPeter Avalos1 string \0\xae\7 BSN archive data 970327e51cbSPeter Avalos# AIN 971327e51cbSPeter Avalos0 string \x33\x18 AIN archive data 972327e51cbSPeter Avalos0 string \x33\x17 AIN archive data 973c30bd091SSascha Wildner# XPA32 test moved and merged with XPA by Joerg Jenderek at Sep 2015 974327e51cbSPeter Avalos# SZip (TODO: doesn't catch all versions) 975327e51cbSPeter Avalos0 string SZ\x0a\4 SZip archive data 976327e51cbSPeter Avalos# XPack DiskImage 977c30bd091SSascha Wildner# *.XDI updated by Joerg Jenderek Sep 2015 978c30bd091SSascha Wildner# ftp://ftp.sac.sk/pub/sac/pack/0index.txt 979c30bd091SSascha Wildner# GRR: this test is still too general as it catches also text files starting with jm 980c30bd091SSascha Wildner0 string jm 981c30bd091SSascha Wildner# only found examples with this additional characteristic 2 bytes 982c30bd091SSascha Wildner>2 string \x2\x4 Xpack DiskImage archive data 983c30bd091SSascha Wildner#!:ext xdi 984327e51cbSPeter Avalos# XPack Data 985c30bd091SSascha Wildner# *.xpa updated by Joerg Jenderek Sep 2015 986c30bd091SSascha Wildner# ftp://ftp.elf.stuba.sk/pub/pc/pack/ 987c30bd091SSascha Wildner0 string xpa XPA 988c30bd091SSascha Wildner!:ext xpa 989c30bd091SSascha Wildner# XPA32 990c30bd091SSascha Wildner# ftp://ftp.elf.stuba.sk/pub/pc/pack/xpa32.zip 991c30bd091SSascha Wildner# created by XPA32.EXE version 1.0.2 for Windows 992c30bd091SSascha Wildner>0 string xpa\0\1 \b32 archive data 993c30bd091SSascha Wildner# created by XPACK.COM version 1.67m or 1.67r with short 0x1800 994c30bd091SSascha Wildner>3 ubeshort !0x0001 \bck archive data 995327e51cbSPeter Avalos# XPack Single Data 996c30bd091SSascha Wildner# changed by Joerg Jenderek Sep 2015 back to like in version 5.12 997c30bd091SSascha Wildner# letter 'I'+ acute accent is equivalent to \xcd 998c30bd091SSascha Wildner0 string \xcd\ jm Xpack single archive data 999c30bd091SSascha Wildner#!:mime application/x-xpa-compressed 1000c30bd091SSascha Wildner!:ext xpa 1001327e51cbSPeter Avalos 1002327e51cbSPeter Avalos# TODO: missing due to unknown magic/magic at end of file: 1003327e51cbSPeter Avalos#DWC 1004327e51cbSPeter Avalos#ARG 1005327e51cbSPeter Avalos#ZAR 1006327e51cbSPeter Avalos#PC/3270 1007327e51cbSPeter Avalos#InstallIt 1008327e51cbSPeter Avalos#RKive 1009327e51cbSPeter Avalos#RK 1010327e51cbSPeter Avalos#XPack Diskimage 1011327e51cbSPeter Avalos 1012327e51cbSPeter Avalos# These were inspired by idarc, but actually verified 1013327e51cbSPeter Avalos# Dzip archiver (.dz) 10146fca56fbSSascha Wildner# Update: Joerg Jenderek 10156fca56fbSSascha Wildner# URL: http://speeddemosarchive.com/dzip/ 10166fca56fbSSascha Wildner# reference: http://speeddemosarchive.com/dzip/dz29src.zip/main.c 10176fca56fbSSascha Wildner# GRR: line below is too general as it matches also ASCII texts like Doszip commander help dz.txt 10186fca56fbSSascha Wildner0 string DZ 10196fca56fbSSascha Wildner# latest version is 2.9 dated 7 may 2003 10206fca56fbSSascha Wildner>2 byte <4 Dzip archive data 10216fca56fbSSascha Wildner!:mime application/x-dzip 10226fca56fbSSascha Wildner!:ext dz 10236fca56fbSSascha Wildner>>2 byte x \b, version %i 10246fca56fbSSascha Wildner>>3 byte x \b.%i 1025614728caSSascha Wildner>>4 ulelong x \b, offset %#x 10266fca56fbSSascha Wildner>>8 ulelong x \b, %u files 1027327e51cbSPeter Avalos# ZZip archiver (.zz) 1028327e51cbSPeter Avalos0 string ZZ\ \0\0 ZZip archive data 1029327e51cbSPeter Avalos0 string ZZ0 ZZip archive data 1030327e51cbSPeter Avalos# PAQ archiver (.paq) 1031327e51cbSPeter Avalos0 string \xaa\x40\x5f\x77\x1f\xe5\x82\x0d PAQ archive data 1032327e51cbSPeter Avalos0 string PAQ PAQ archive data 1033327e51cbSPeter Avalos>3 byte&0xf0 0x30 1034327e51cbSPeter Avalos>>3 byte x (v%c) 1035327e51cbSPeter Avalos# JAR archiver (.j), this is the successor to ARJ, not Java's JAR (which is essentially ZIP) 1036*3b9cdfa3SAntonio Huete Jimenez# Update: Joerg Jenderek 1037*3b9cdfa3SAntonio Huete Jimenez# URL: http://fileformats.archiveteam.org/wiki/JAR_(ARJ_Software) 1038*3b9cdfa3SAntonio Huete Jimenez# reference: http://mark0.net/download/triddefs_xml.7z/defs/a/ark-jar.trid.xml 1039*3b9cdfa3SAntonio Huete Jimenez# https://www.sac.sk/download/pack/jar102x.exe/TECHNOTE.DOC 1040*3b9cdfa3SAntonio Huete Jimenez# Note: called "JAR compressed archive" by TrID 1041327e51cbSPeter Avalos0xe string \x1aJar\x1b JAR (ARJ Software, Inc.) archive data 1042*3b9cdfa3SAntonio Huete Jimenez#!:mime application/octet-stream 1043*3b9cdfa3SAntonio Huete Jimenez!:mime application/x-compress-j 1044*3b9cdfa3SAntonio Huete Jimenez>0 ulelong x \b, CRC32 %#x 1045*3b9cdfa3SAntonio Huete Jimenez# standard suffix is ".j"; for multi volumes following order j01 j02 ... j99 100 ... 990 1046*3b9cdfa3SAntonio Huete Jimenez!:ext j/j01/j02 1047*3b9cdfa3SAntonio Huete Jimenez# URL: http://fileformats.archiveteam.org/wiki/JARCS 1048*3b9cdfa3SAntonio Huete Jimenez# reference: http://mark0.net/download/triddefs_xml.7z/defs/a/ark-jarcs.trid.xml 1049*3b9cdfa3SAntonio Huete Jimenez# Note: called "JARCS compressed archive" by TrID 1050327e51cbSPeter Avalos0 string JARCS JAR (ARJ Software, Inc.) archive data 1051*3b9cdfa3SAntonio Huete Jimenez#!:mime application/octet-stream 1052*3b9cdfa3SAntonio Huete Jimenez!:mime application/x-compress-jar 1053*3b9cdfa3SAntonio Huete Jimenez!:ext jar 1054327e51cbSPeter Avalos 1055327e51cbSPeter Avalos# ARJ archiver (jason@jarthur.Claremont.EDU) 1056*3b9cdfa3SAntonio Huete Jimenez# URL: http://fileformats.archiveteam.org/wiki/ARJ 1057*3b9cdfa3SAntonio Huete Jimenez# reference: http://mark0.net/download/triddefs_xml.7z/defs/a/ark-arj.trid.xml 1058*3b9cdfa3SAntonio Huete Jimenez# https://github.com/FarGroup/FarManager/ 1059*3b9cdfa3SAntonio Huete Jimenez# blob/master/plugins/multiarc/arc.doc/arj.txt 1060*3b9cdfa3SAntonio Huete Jimenez# Note: called "ARJ compressed archive" by TrID and 1061*3b9cdfa3SAntonio Huete Jimenez# "ARJ File Format" by DROID via PUID fmt/610 1062*3b9cdfa3SAntonio Huete Jimenez# verified by `7z l -tarj PHRACK1.ARJ` and 1063*3b9cdfa3SAntonio Huete Jimenez# `arj.exe l TEST-hk9.ARJ` 1064*3b9cdfa3SAntonio Huete Jimenez0 leshort 0xea60 1065*3b9cdfa3SAntonio Huete Jimenez# skip DROID fmt-610-signature-id-946.arj by check for valid file type of main header 1066*3b9cdfa3SAntonio Huete Jimenez>0xA ubyte 2 1067*3b9cdfa3SAntonio Huete Jimenez>>0 use arj-archive 1068*3b9cdfa3SAntonio Huete Jimenez0 name arj-archive 1069*3b9cdfa3SAntonio Huete Jimenez>0 leshort x ARJ archive 107079343712SPeter Avalos!:mime application/x-arj 1071*3b9cdfa3SAntonio Huete Jimenez# look for terminating 0-character of filename 1072*3b9cdfa3SAntonio Huete Jimenez>0x26 search/1024 \0 1073*3b9cdfa3SAntonio Huete Jimenez# file name extension is normally .arj but not for parts of multi volume 1074*3b9cdfa3SAntonio Huete Jimenez#>>&-5 string x extension %.4s 1075*3b9cdfa3SAntonio Huete Jimenez>>&-5 string/c .arj data 1076*3b9cdfa3SAntonio Huete Jimenez!:ext arj 1077*3b9cdfa3SAntonio Huete Jimenez>>&-5 default x 1078*3b9cdfa3SAntonio Huete Jimenez# for multi volume first name is archive.arj then following parts archive.a01 archive.a02 ... 1079*3b9cdfa3SAntonio Huete Jimenez>>>8 byte &0x04 data 1080*3b9cdfa3SAntonio Huete Jimenez!:ext a01/a02 1081*3b9cdfa3SAntonio Huete Jimenez# for SFX first name is archive.exe then following parts archive.e01 archive.e02 ... 1082*3b9cdfa3SAntonio Huete Jimenez>>>8 byte ^0x04 data, SFX multi-volume 1083*3b9cdfa3SAntonio Huete Jimenez!:ext e01/e02 1084*3b9cdfa3SAntonio Huete Jimenez# basic header size like: 0x002b 0x002c 0x04e0 0x04e3 0x04e7 1085*3b9cdfa3SAntonio Huete Jimenez#>2 uleshort x basic header size %#4.4x 1086*3b9cdfa3SAntonio Huete Jimenez# next fragment content like: 0x0a200a003a8fc713 0x524a000010bb3471 0x524a0000c73c70f9 1087*3b9cdfa3SAntonio Huete Jimenez#>(2.s) ubequad x NEXT FRAGMENT CONTENT %#16.16llx 1088*3b9cdfa3SAntonio Huete Jimenez# first_hdr_size; seems to be same as basic header size 1089*3b9cdfa3SAntonio Huete Jimenez#>2 uleshort x 1st header size %#x 1090*3b9cdfa3SAntonio Huete Jimenez# archiver version number like: 3 4 6 11 102 1091*3b9cdfa3SAntonio Huete Jimenez>5 byte x \b, v%d 1092*3b9cdfa3SAntonio Huete Jimenez# minimum archiver version to extract like: 1 1093*3b9cdfa3SAntonio Huete Jimenez>6 ubyte !1 \b, minimum %u to extract 1094*3b9cdfa3SAntonio Huete Jimenez# FOR DEBUGGING 1095*3b9cdfa3SAntonio Huete Jimenez#>8 byte x \b, FLAGS %#x 1096*3b9cdfa3SAntonio Huete Jimenez# GARBLED_FLAG1; garble with password; g switch 1097*3b9cdfa3SAntonio Huete Jimenez>8 byte &0x01 \b, password-protected 1098*3b9cdfa3SAntonio Huete Jimenez# encryption version: 0~old 1~old 2~new 3~reserved 4~40 bit key GOST 1099*3b9cdfa3SAntonio Huete Jimenez>>0x20 ubyte x (v%u) 1100*3b9cdfa3SAntonio Huete Jimenez#>8 byte &0x02 \b, secured 1101*3b9cdfa3SAntonio Huete Jimenez# ANSIPAGE_FLAG; indicates ANSI codepage used by ARJ32; hy switch 1102*3b9cdfa3SAntonio Huete Jimenez>8 byte &0x02 \b, ANSI codepage 1103*3b9cdfa3SAntonio Huete Jimenez# VOLUME_FLAG indicates presence of succeeding volume; but apparently not for SFX 1104*3b9cdfa3SAntonio Huete Jimenez>8 byte &0x04 \b, multi-volume 1105*3b9cdfa3SAntonio Huete Jimenez#>8 byte &0x08 \b, file-offset 1106*3b9cdfa3SAntonio Huete Jimenez# ARJPROT_FLAG; build with data protection record; hk switch 1107*3b9cdfa3SAntonio Huete Jimenez>8 byte &0x08 \b, recoverable 1108*3b9cdfa3SAntonio Huete Jimenez# arj protection factor; maximal 10; switch hky -> factor=y+1 1109*3b9cdfa3SAntonio Huete Jimenez>>0x22 byte x (factor %u) 1110*3b9cdfa3SAntonio Huete Jimenez>8 byte &0x10 \b, slash-switched 1111*3b9cdfa3SAntonio Huete Jimenez# BACKUP_FLAG; obsolete 1112*3b9cdfa3SAntonio Huete Jimenez>8 byte &0x20 \b, backup 1113*3b9cdfa3SAntonio Huete Jimenez# SECURED_FLAG; 1114*3b9cdfa3SAntonio Huete Jimenez>8 byte &0x40 \b, secured, 1115*3b9cdfa3SAntonio Huete Jimenez# ALTNAME_FLAG; indicates dual-name archive 1116*3b9cdfa3SAntonio Huete Jimenez>8 byte &0x80 \b, dual-name 1117*3b9cdfa3SAntonio Huete Jimenez# security version; 0~old 2~current 1118*3b9cdfa3SAntonio Huete Jimenez>9 ubyte !0 1119*3b9cdfa3SAntonio Huete Jimenez>>9 ubyte !2 \b, security version %u 1120*3b9cdfa3SAntonio Huete Jimenez# file type; 2 in main header; 0~binary 1~7-bitText 2~comment 3~directory 4~VolumeLabel 5=ChapterLabel 1121*3b9cdfa3SAntonio Huete Jimenez>0xA ubyte !2 \b, file type %u 1122*3b9cdfa3SAntonio Huete Jimenez# date+time when original archive was created in MS-DOS format via ./msdos 1123*3b9cdfa3SAntonio Huete Jimenez>0xC ulelong x \b, created 1124*3b9cdfa3SAntonio Huete Jimenez>0xC use dos-date 1125*3b9cdfa3SAntonio Huete Jimenez# or date and time by new internal function 1126*3b9cdfa3SAntonio Huete Jimenez#>0xE lemsdosdate x %s 1127*3b9cdfa3SAntonio Huete Jimenez#>0xC lemsdostime x %s 1128*3b9cdfa3SAntonio Huete Jimenez# FOR DEBUGGING 1129*3b9cdfa3SAntonio Huete Jimenez#>0x12 uleshort x RAW DATE %#4.4x 1130*3b9cdfa3SAntonio Huete Jimenez#>0x10 uleshort x RAW TIME %#4.4x 1131*3b9cdfa3SAntonio Huete Jimenez# date+time when archive was last modified; sometimes nil or 1132*3b9cdfa3SAntonio Huete Jimenez# maybe wrong like in HP4DRVR.ARJ 1133*3b9cdfa3SAntonio Huete Jimenez#>0x10 ulelong >0 \b, modified 1134*3b9cdfa3SAntonio Huete Jimenez#>>0x10 use dos-date 1135*3b9cdfa3SAntonio Huete Jimenez# or date and time by new internal function 1136*3b9cdfa3SAntonio Huete Jimenez#>>0x12 lemsdosdate x %s 1137*3b9cdfa3SAntonio Huete Jimenez#>>0x10 lemsdostime x %s 1138*3b9cdfa3SAntonio Huete Jimenez# archive size (currently used only for secured archives); MAYBE? 1139*3b9cdfa3SAntonio Huete Jimenez#>0x14 ulelong !0 \b, file size %u 1140*3b9cdfa3SAntonio Huete Jimenez# security envelope file position; MAYBE? 1141*3b9cdfa3SAntonio Huete Jimenez#>0x18 ulelong !0 \b, at %#x security envelope 1142*3b9cdfa3SAntonio Huete Jimenez# filespec position in filename; WHAT IS THAT? 1143*3b9cdfa3SAntonio Huete Jimenez#>0x1C uleshort >0 \b, filespec position %#x 1144*3b9cdfa3SAntonio Huete Jimenez# length in bytes of security envelope data like: 2CAh 301h 364h 471h 1145*3b9cdfa3SAntonio Huete Jimenez>0x1E uleshort !0 \b, security envelope length %#x 1146*3b9cdfa3SAntonio Huete Jimenez# last chapter like: 0 1 1147*3b9cdfa3SAntonio Huete Jimenez>0x21 ubyte !0 \b, last chapter %u 1148*3b9cdfa3SAntonio Huete Jimenez# filename (null-terminated string); sometimes at 0x26 when 4 bytes for extra data 1149*3b9cdfa3SAntonio Huete Jimenez>34 byte x \b, original name: 1150*3b9cdfa3SAntonio Huete Jimenez# with extras data 1151*3b9cdfa3SAntonio Huete Jimenez>34 byte <0x0B 1152*3b9cdfa3SAntonio Huete Jimenez>>38 string x %s 1153*3b9cdfa3SAntonio Huete Jimenez# without extras data 1154*3b9cdfa3SAntonio Huete Jimenez>34 byte >0x0A 1155*3b9cdfa3SAntonio Huete Jimenez>>34 string x %s 1156*3b9cdfa3SAntonio Huete Jimenez# host OS: 0~MSDOS ... 11~WIN32 1157*3b9cdfa3SAntonio Huete Jimenez>7 byte 0 \b, os: MS-DOS 1158*3b9cdfa3SAntonio Huete Jimenez>7 byte 1 \b, os: PRIMOS 1159*3b9cdfa3SAntonio Huete Jimenez>7 byte 2 \b, os: Unix 1160*3b9cdfa3SAntonio Huete Jimenez>7 byte 3 \b, os: Amiga 1161*3b9cdfa3SAntonio Huete Jimenez>7 byte 4 \b, os: Macintosh 1162*3b9cdfa3SAntonio Huete Jimenez>7 byte 5 \b, os: OS/2 1163*3b9cdfa3SAntonio Huete Jimenez>7 byte 6 \b, os: Apple ][ GS 1164*3b9cdfa3SAntonio Huete Jimenez>7 byte 7 \b, os: Atari ST 1165*3b9cdfa3SAntonio Huete Jimenez>7 byte 8 \b, os: NeXT 1166*3b9cdfa3SAntonio Huete Jimenez>7 byte 9 \b, os: VAX/VMS 1167*3b9cdfa3SAntonio Huete Jimenez>7 byte 10 \b, os: WIN95 1168*3b9cdfa3SAntonio Huete Jimenez>7 byte 11 \b, os: WIN32 1169327e51cbSPeter Avalos# [JW] idarc says this is also possible 1170327e51cbSPeter Avalos2 leshort 0xea60 ARJ archive data 1171*3b9cdfa3SAntonio Huete Jimenez#2 leshort 0xea60 1172*3b9cdfa3SAntonio Huete Jimenez#>2 use arj-archive 1173327e51cbSPeter Avalos 1174327e51cbSPeter Avalos# HA archiver (Greg Roelofs, newt@uchicago.edu) 1175327e51cbSPeter Avalos# This is a really bad format. A file containing HAWAII will match this... 1176327e51cbSPeter Avalos#0 string HA HA archive data, 1177327e51cbSPeter Avalos#>2 leshort =1 1 file, 117882c5fa3eSPeter Avalos#>2 leshort >1 %hu files, 1179327e51cbSPeter Avalos#>4 byte&0x0f =0 first is type CPY 1180327e51cbSPeter Avalos#>4 byte&0x0f =1 first is type ASC 1181327e51cbSPeter Avalos#>4 byte&0x0f =2 first is type HSC 1182327e51cbSPeter Avalos#>4 byte&0x0f =0x0e first is type DIR 1183327e51cbSPeter Avalos#>4 byte&0x0f =0x0f first is type SPECIAL 1184327e51cbSPeter Avalos# suggestion: at least identify small archives (<1024 files) 1185327e51cbSPeter Avalos0 belong&0xffff00fc 0x48410000 HA archive data 1186327e51cbSPeter Avalos>2 leshort =1 1 file, 1187327e51cbSPeter Avalos>2 leshort >1 %u files, 1188327e51cbSPeter Avalos>4 byte&0x0f =0 first is type CPY 1189327e51cbSPeter Avalos>4 byte&0x0f =1 first is type ASC 1190327e51cbSPeter Avalos>4 byte&0x0f =2 first is type HSC 1191327e51cbSPeter Avalos>4 byte&0x0f =0x0e first is type DIR 1192327e51cbSPeter Avalos>4 byte&0x0f =0x0f first is type SPECIAL 1193327e51cbSPeter Avalos 1194327e51cbSPeter Avalos# HPACK archiver (Peter Gutmann, pgut1@cs.aukuni.ac.nz) 1195327e51cbSPeter Avalos0 string HPAK HPACK archive data 1196327e51cbSPeter Avalos 1197327e51cbSPeter Avalos# JAM Archive volume format, by Dmitry.Kohmanyuk@UA.net 1198327e51cbSPeter Avalos0 string \351,\001JAM\ JAM archive, 1199327e51cbSPeter Avalos>7 string >\0 version %.4s 1200327e51cbSPeter Avalos>0x26 byte =0x27 - 1201327e51cbSPeter Avalos>>0x2b string >\0 label %.11s, 1202327e51cbSPeter Avalos>>0x27 lelong x serial %08x, 1203327e51cbSPeter Avalos>>0x36 string >\0 fstype %.8s 1204327e51cbSPeter Avalos 1205327e51cbSPeter Avalos# LHARC/LHA archiver (Greg Roelofs, newt@uchicago.edu) 1206c30bd091SSascha Wildner# Update: Joerg Jenderek 1207c30bd091SSascha Wildner# URL: https://en.wikipedia.org/wiki/LHA_(file_format) 12086fca56fbSSascha Wildner# Reference: https://web.archive.org/web/20021005080911/http://www.osirusoft.com/joejared/lzhformat.html 1209c30bd091SSascha Wildner# 1210c30bd091SSascha Wildner# check and display information of lharc (LHa,PMarc) file 1211c30bd091SSascha Wildner0 name lharc-file 1212c30bd091SSascha Wildner# check 1st character of method id like -lz4- -lh5- or -pm2- 1213c30bd091SSascha Wildner>2 string - 1214c30bd091SSascha Wildner# check 5th character of method id 1215c30bd091SSascha Wildner>>6 string - 1216c30bd091SSascha Wildner# check header level 0 1 2 3 1217c30bd091SSascha Wildner>>>20 ubyte <4 1218c30bd091SSascha Wildner# check 2nd, 3th and 4th character of method id 1219c30bd091SSascha Wildner>>>>3 regex \^(lh[0-9a-ex]|lz[s2-8]|pm[012]|pc1) \b 1220c30bd091SSascha Wildner!:mime application/x-lzh-compressed 1221c30bd091SSascha Wildner# creator type "LHA " 1222c30bd091SSascha Wildner!:apple ????LHA 1223c30bd091SSascha Wildner# display archive type name like "LHa/LZS archive data" or "LArc archive" 1224c30bd091SSascha Wildner>>>>>2 string -lz \b 1225c30bd091SSascha Wildner!:ext lzs 1226c30bd091SSascha Wildner# already known -lzs- -lz4- -lz5- with old names 1227c30bd091SSascha Wildner>>>>>>2 string -lzs LHa/LZS archive data 1228c30bd091SSascha Wildner>>>>>>3 regex \^lz[45] LHarc 1.x archive data 1229c30bd091SSascha Wildner# missing -lz?- with wikipedia names 1230c30bd091SSascha Wildner>>>>>>3 regex \^lz[2378] LArc archive 1231c30bd091SSascha Wildner# display archive type name like "LHa (2.x) archive data" 1232c30bd091SSascha Wildner>>>>>2 string -lh \b 1233c30bd091SSascha Wildner# already known -lh0- -lh1- -lh2- -lh3- -lh4- -lh5- -lh6- -lh7- -lhd- variants with old names 1234c30bd091SSascha Wildner>>>>>>3 regex \^lh[01] LHarc 1.x/ARX archive data 1235c30bd091SSascha Wildner# LHice archiver use ".ICE" as name extension instead usual one ".lzh" 1236c30bd091SSascha Wildner# FOOBAR archiver use ".foo" as name extension instead usual one 1237c30bd091SSascha Wildner# "Florain Orjanov's and Olga Bachetska's ARchiver" not found at the moment 1238c30bd091SSascha Wildner>>>>>>>2 string -lh1 \b 1239c30bd091SSascha Wildner!:ext lha/lzh/ice 1240c30bd091SSascha Wildner>>>>>>3 regex \^lh[23d] LHa 2.x? archive data 1241c30bd091SSascha Wildner>>>>>>3 regex \^lh[7] LHa (2.x)/LHark archive data 1242c30bd091SSascha Wildner>>>>>>3 regex \^lh[456] LHa (2.x) archive data 1243c30bd091SSascha Wildner>>>>>>>2 string -lh5 \b 1244c30bd091SSascha Wildner# https://en.wikipedia.org/wiki/BIOS 1245970935fdSSascha Wildner# Some mainboard BIOS like Award use LHa compression. So archives with unusual extension are found like 1246c30bd091SSascha Wildner# bios.rom , kd7_v14.bin, 1010.004, ... 1247c30bd091SSascha Wildner!:ext lha/lzh/rom/bin 1248c30bd091SSascha Wildner# missing -lh?- variants (Joe Jared) 1249c30bd091SSascha Wildner>>>>>>3 regex \^lh[89a-ce] LHa (Joe Jared) archive 1250c30bd091SSascha Wildner# UNLHA32 2.67a 1251c30bd091SSascha Wildner>>>>>>2 string -lhx LHa (UNLHA32) archive 1252c30bd091SSascha Wildner# lha archives with standard file name extensions ".lha" ".lzh" 1253c30bd091SSascha Wildner>>>>>>3 regex !\^(lh1|lh5) \b 1254c30bd091SSascha Wildner!:ext lha/lzh 1255c30bd091SSascha Wildner# this should not happen if all -lh variants are described 1256c30bd091SSascha Wildner>>>>>>2 default x LHa (unknown) archive 1257c30bd091SSascha Wildner#!:ext lha 1258c30bd091SSascha Wildner# PMarc 1259c30bd091SSascha Wildner>>>>>3 regex \^pm[012] PMarc archive data 1260c30bd091SSascha Wildner!:ext pma 1261c30bd091SSascha Wildner# append method id without leading and trailing minus character 1262c30bd091SSascha Wildner>>>>>3 string x [%3.3s] 1263c30bd091SSascha Wildner>>>>>>0 use lharc-header 1264c30bd091SSascha Wildner# 1265c30bd091SSascha Wildner# check and display information of lharc header 1266c30bd091SSascha Wildner0 name lharc-header 1267c30bd091SSascha Wildner# header size 0x4 , 0x1b-0x61 1268c30bd091SSascha Wildner>0 ubyte x 1269c30bd091SSascha Wildner# compressed data size != compressed file size 1270c30bd091SSascha Wildner#>7 ulelong x \b, data size %d 1271c30bd091SSascha Wildner# attribute: 0x2~?? 0x10~symlink|target 0x20~normal 1272614728caSSascha Wildner#>19 ubyte x \b, 19_%#x 1273c30bd091SSascha Wildner# level identifier 0 1 2 3 1274c30bd091SSascha Wildner#>20 ubyte x \b, level %d 1275c30bd091SSascha Wildner# time stamp 1276614728caSSascha Wildner#>15 ubelong x DATE %#8.8x 1277c30bd091SSascha Wildner# OS ID for level 1 1278c30bd091SSascha Wildner>20 ubyte 1 1279c30bd091SSascha Wildner# 0x20 types find for *.rom files 1280614728caSSascha Wildner>>(21.b+24) ubyte <0x21 \b, %#x OS 1281c30bd091SSascha Wildner# ascii type like M for MSDOS 1282c30bd091SSascha Wildner>>(21.b+24) ubyte >0x20 \b, '%c' OS 1283c30bd091SSascha Wildner# OS ID for level 2 1284c30bd091SSascha Wildner>20 ubyte 2 1285614728caSSascha Wildner#>>23 ubyte x \b, OS ID %#x 1286614728caSSascha Wildner>>23 ubyte <0x21 \b, %#x OS 1287c30bd091SSascha Wildner>>23 ubyte >0x20 \b, '%c' OS 1288c30bd091SSascha Wildner# filename only for level 0 and 1 1289c30bd091SSascha Wildner>20 ubyte <2 1290c30bd091SSascha Wildner# length of filename 1291c30bd091SSascha Wildner>>21 ubyte >0 \b, with 1292c30bd091SSascha Wildner# filename 1293c30bd091SSascha Wildner>>>21 pstring x "%s" 1294c30bd091SSascha Wildner# 1295c30bd091SSascha Wildner#2 string -lh0- LHarc 1.x/ARX archive data [lh0] 1296c30bd091SSascha Wildner#!:mime application/x-lharc 1297c30bd091SSascha Wildner2 string -lh0- 1298c30bd091SSascha Wildner>0 use lharc-file 1299c30bd091SSascha Wildner#2 string -lh1- LHarc 1.x/ARX archive data [lh1] 1300c30bd091SSascha Wildner#!:mime application/x-lharc 1301c30bd091SSascha Wildner2 string -lh1- 1302c30bd091SSascha Wildner>0 use lharc-file 1303c30bd091SSascha Wildner# NEW -lz2- ... -lz8- 1304c30bd091SSascha Wildner2 string -lz2- 1305c30bd091SSascha Wildner>0 use lharc-file 1306c30bd091SSascha Wildner2 string -lz3- 1307c30bd091SSascha Wildner>0 use lharc-file 1308c30bd091SSascha Wildner2 string -lz4- 1309c30bd091SSascha Wildner>0 use lharc-file 1310c30bd091SSascha Wildner2 string -lz5- 1311c30bd091SSascha Wildner>0 use lharc-file 1312c30bd091SSascha Wildner2 string -lz7- 1313c30bd091SSascha Wildner>0 use lharc-file 1314c30bd091SSascha Wildner2 string -lz8- 1315c30bd091SSascha Wildner>0 use lharc-file 1316327e51cbSPeter Avalos# [never seen any but the last; -lh4- reported in comp.compression:] 1317c30bd091SSascha Wildner#2 string -lzs- LHa/LZS archive data [lzs] 1318c30bd091SSascha Wildner2 string -lzs- 1319c30bd091SSascha Wildner>0 use lharc-file 1320c30bd091SSascha Wildner# According to wikipedia and others such a version does not exist 1321c30bd091SSascha Wildner#2 string -lh\40- LHa 2.x? archive data [lh ] 1322c30bd091SSascha Wildner#2 string -lhd- LHa 2.x? archive data [lhd] 1323c30bd091SSascha Wildner2 string -lhd- 1324c30bd091SSascha Wildner>0 use lharc-file 1325c30bd091SSascha Wildner#2 string -lh2- LHa 2.x? archive data [lh2] 1326c30bd091SSascha Wildner2 string -lh2- 1327c30bd091SSascha Wildner>0 use lharc-file 1328c30bd091SSascha Wildner#2 string -lh3- LHa 2.x? archive data [lh3] 1329c30bd091SSascha Wildner2 string -lh3- 1330c30bd091SSascha Wildner>0 use lharc-file 1331c30bd091SSascha Wildner#2 string -lh4- LHa (2.x) archive data [lh4] 1332c30bd091SSascha Wildner2 string -lh4- 1333c30bd091SSascha Wildner>0 use lharc-file 1334c30bd091SSascha Wildner#2 string -lh5- LHa (2.x) archive data [lh5] 1335c30bd091SSascha Wildner2 string -lh5- 1336c30bd091SSascha Wildner>0 use lharc-file 1337c30bd091SSascha Wildner#2 string -lh6- LHa (2.x) archive data [lh6] 1338c30bd091SSascha Wildner2 string -lh6- 1339c30bd091SSascha Wildner>0 use lharc-file 1340c30bd091SSascha Wildner#2 string -lh7- LHa (2.x)/LHark archive data [lh7] 1341c30bd091SSascha Wildner2 string -lh7- 1342c30bd091SSascha Wildner# !:mime application/x-lha 1343c30bd091SSascha Wildner# >20 byte x - header level %d 1344c30bd091SSascha Wildner>0 use lharc-file 1345c30bd091SSascha Wildner# NEW -lh8- ... -lhe- , -lhx- 1346c30bd091SSascha Wildner2 string -lh8- 1347c30bd091SSascha Wildner>0 use lharc-file 1348c30bd091SSascha Wildner2 string -lh9- 1349c30bd091SSascha Wildner>0 use lharc-file 1350c30bd091SSascha Wildner2 string -lha- 1351c30bd091SSascha Wildner>0 use lharc-file 1352c30bd091SSascha Wildner2 string -lhb- 1353c30bd091SSascha Wildner>0 use lharc-file 1354c30bd091SSascha Wildner2 string -lhc- 1355c30bd091SSascha Wildner>0 use lharc-file 1356c30bd091SSascha Wildner2 string -lhe- 1357c30bd091SSascha Wildner>0 use lharc-file 1358c30bd091SSascha Wildner2 string -lhx- 1359c30bd091SSascha Wildner>0 use lharc-file 1360327e51cbSPeter Avalos# taken from idarc [JW] 1361327e51cbSPeter Avalos2 string -lZ PUT archive data 1362c30bd091SSascha Wildner# already done by LHarc magics 1363c30bd091SSascha Wildner# this should never happen if all sub types of LZS archive are identified 1364c30bd091SSascha Wildner#2 string -lz LZS archive data 1365327e51cbSPeter Avalos2 string -sw1- Swag archive data 1366327e51cbSPeter Avalos 1367c30bd091SSascha Wildner0 name rar-file-header 1368c30bd091SSascha Wildner>24 byte 15 \b, v1.5 1369c30bd091SSascha Wildner>24 byte 20 \b, v2.0 1370c30bd091SSascha Wildner>24 byte 29 \b, v4 1371c30bd091SSascha Wildner>15 byte 0 \b, os: MS-DOS 1372c30bd091SSascha Wildner>15 byte 1 \b, os: OS/2 1373c30bd091SSascha Wildner>15 byte 2 \b, os: Win32 1374c30bd091SSascha Wildner>15 byte 3 \b, os: Unix 1375c30bd091SSascha Wildner>15 byte 4 \b, os: Mac OS 1376c30bd091SSascha Wildner>15 byte 5 \b, os: BeOS 1377c30bd091SSascha Wildner 1378c30bd091SSascha Wildner0 name rar-archive-header 1379c30bd091SSascha Wildner>3 leshort&0x1ff >0 \b, flags: 1380c30bd091SSascha Wildner>>3 leshort &0x01 ArchiveVolume 1381c30bd091SSascha Wildner>>3 leshort &0x02 Commented 1382c30bd091SSascha Wildner>>3 leshort &0x04 Locked 1383c30bd091SSascha Wildner>>3 leshort &0x10 NewVolumeNaming 1384c30bd091SSascha Wildner>>3 leshort &0x08 Solid 1385c30bd091SSascha Wildner>>3 leshort &0x20 Authenticated 1386c30bd091SSascha Wildner>>3 leshort &0x40 RecoveryRecordPresent 1387c30bd091SSascha Wildner>>3 leshort &0x80 EncryptedBlockHeader 1388c30bd091SSascha Wildner>>3 leshort &0x100 FirstVolume 1389c30bd091SSascha Wildner 1390c30bd091SSascha Wildner# RAR (Roshal Archive) archive 1391c30bd091SSascha Wildner0 string Rar!\x1a\7\0 RAR archive data 139279343712SPeter Avalos!:mime application/x-rar 1393c30bd091SSascha Wildner!:ext rar/cbr 1394c30bd091SSascha Wildner# file header 1395c30bd091SSascha Wildner>(0xc.l+9) byte 0x74 1396c30bd091SSascha Wildner>>(0xc.l+7) use rar-file-header 1397c30bd091SSascha Wildner# subblock seems to share information with file header 1398c30bd091SSascha Wildner>(0xc.l+9) byte 0x7a 1399c30bd091SSascha Wildner>>(0xc.l+7) use rar-file-header 1400c30bd091SSascha Wildner>9 byte 0x73 1401c30bd091SSascha Wildner>>7 use rar-archive-header 1402c30bd091SSascha Wildner 1403c30bd091SSascha Wildner0 string Rar!\x1a\7\1\0 RAR archive data, v5 1404c30bd091SSascha Wildner!:mime application/x-rar 1405c30bd091SSascha Wildner!:ext rar 1406c30bd091SSascha Wildner 1407c30bd091SSascha Wildner# Very old RAR archive 14086fca56fbSSascha Wildner# https://jasonblanks.com/wp-includes/images/papers/KnowyourarchiveRAR.pdf 1409c30bd091SSascha Wildner0 string RE\x7e\x5e RAR archive data (<v1.5) 1410c30bd091SSascha Wildner!:mime application/x-rar 1411c30bd091SSascha Wildner!:ext rar/cbr 1412327e51cbSPeter Avalos 1413327e51cbSPeter Avalos# SQUISH archiver (Greg Roelofs, newt@uchicago.edu) 1414327e51cbSPeter Avalos0 string SQSH squished archive data (Acorn RISCOS) 1415327e51cbSPeter Avalos 1416327e51cbSPeter Avalos# UC2 archiver (Greg Roelofs, newt@uchicago.edu) 1417327e51cbSPeter Avalos# [JW] see exe section for self-extracting version 1418327e51cbSPeter Avalos0 string UC2\x1a UC2 archive data 1419327e51cbSPeter Avalos 1420f72f8299SJan Lentfer# PKZIP multi-volume archive 1421f72f8299SJan Lentfer0 string PK\x07\x08PK\x03\x04 Zip multi-volume archive data, at least PKZIP v2.50 to extract 1422f72f8299SJan Lentfer!:mime application/zip 1423c30bd091SSascha Wildner!:ext zip/cbz 1424f72f8299SJan Lentfer 1425e4d4ce0cSPeter Avalos# Zip archives (Greg Roelofs, c/o zip-bugs@wkuvx1.wku.edu) 1426e8af9738SPeter Avalos0 string PK\005\006 Zip archive data (empty) 1427c30bd091SSascha Wildner!:mime application/zip 1428c30bd091SSascha Wildner!:ext zip/cbz 14296fca56fbSSascha Wildner!:strength +1 1430327e51cbSPeter Avalos0 string PK\003\004 14316fca56fbSSascha Wildner!:strength +1 1432327e51cbSPeter Avalos 1433e4d4ce0cSPeter Avalos# Specialised zip formats which start with a member named 'mimetype' 1434e4d4ce0cSPeter Avalos# (stored uncompressed, with no 'extra field') containing the file's MIME type. 1435e4d4ce0cSPeter Avalos# Check for have 8-byte name, 0-byte extra field, name "mimetype", and 1436e4d4ce0cSPeter Avalos# contents starting with "application/": 1437e4d4ce0cSPeter Avalos>26 string \x8\0\0\0mimetypeapplication/ 1438e4d4ce0cSPeter Avalos 1439e4d4ce0cSPeter Avalos# KOffice / OpenOffice & StarOffice / OpenDocument formats 1440327e51cbSPeter Avalos# From: Abel Cheung <abel@oaka.org> 1441327e51cbSPeter Avalos 1442327e51cbSPeter Avalos# KOffice (1.2 or above) formats 1443e4d4ce0cSPeter Avalos# (mimetype contains "application/vnd.kde.<SUBTYPE>") 1444f72f8299SJan Lentfer>>50 string vnd.kde. KOffice (>=1.2) 1445f72f8299SJan Lentfer>>>58 string karbon Karbon document 1446f72f8299SJan Lentfer>>>58 string kchart KChart document 1447f72f8299SJan Lentfer>>>58 string kformula KFormula document 1448f72f8299SJan Lentfer>>>58 string kivio Kivio document 1449f72f8299SJan Lentfer>>>58 string kontour Kontour document 1450f72f8299SJan Lentfer>>>58 string kpresenter KPresenter document 1451f72f8299SJan Lentfer>>>58 string kspread KSpread document 1452f72f8299SJan Lentfer>>>58 string kword KWord document 1453327e51cbSPeter Avalos 1454327e51cbSPeter Avalos# OpenOffice formats (for OpenOffice 1.x / StarOffice 6/7) 1455e4d4ce0cSPeter Avalos# (mimetype contains "application/vnd.sun.xml.<SUBTYPE>") 1456c990e5baSDaniel Fojt# URL: https://en.wikipedia.org/wiki/OpenOffice.org_XML 1457c990e5baSDaniel Fojt# reference: http://fileformats.archiveteam.org/wiki/OpenOffice.org_XML 1458f72f8299SJan Lentfer>>50 string vnd.sun.xml. OpenOffice.org 1.x 1459f72f8299SJan Lentfer>>>62 string writer Writer 1460f72f8299SJan Lentfer>>>>68 byte !0x2e document 1461c990e5baSDaniel Fojt!:mime application/vnd.sun.xml.writer 1462c990e5baSDaniel Fojt!:ext sxw 1463f72f8299SJan Lentfer>>>>68 string .template template 1464c990e5baSDaniel Fojt!:mime application/vnd.sun.xml.writer.template 1465c990e5baSDaniel Fojt!:ext stw 1466c990e5baSDaniel Fojt>>>>68 string .web Web template 1467c990e5baSDaniel Fojt!:mime application/vnd.sun.xml.writer.web 1468c990e5baSDaniel Fojt!:ext stw 1469f72f8299SJan Lentfer>>>>68 string .global global document 1470c990e5baSDaniel Fojt!:mime application/vnd.sun.xml.writer.global 1471c990e5baSDaniel Fojt!:ext sxg 1472f72f8299SJan Lentfer>>>62 string calc Calc 1473f72f8299SJan Lentfer>>>>66 byte !0x2e spreadsheet 1474c990e5baSDaniel Fojt!:mime application/vnd.sun.xml.calc 1475c990e5baSDaniel Fojt!:ext sxc 1476f72f8299SJan Lentfer>>>>66 string .template template 1477c990e5baSDaniel Fojt!:mime application/vnd.sun.xml.calc.template 1478c990e5baSDaniel Fojt!:ext stc 1479f72f8299SJan Lentfer>>>62 string draw Draw 1480f72f8299SJan Lentfer>>>>66 byte !0x2e document 1481c990e5baSDaniel Fojt!:mime application/vnd.sun.xml.draw 1482c990e5baSDaniel Fojt!:ext sxd 1483f72f8299SJan Lentfer>>>>66 string .template template 1484c990e5baSDaniel Fojt!:mime application/vnd.sun.xml.draw.template 1485c990e5baSDaniel Fojt!:ext std 1486f72f8299SJan Lentfer>>>62 string impress Impress 1487f72f8299SJan Lentfer>>>>69 byte !0x2e presentation 1488c990e5baSDaniel Fojt!:mime application/vnd.sun.xml.impress 1489c990e5baSDaniel Fojt!:ext sxi 1490f72f8299SJan Lentfer>>>>69 string .template template 1491c990e5baSDaniel Fojt!:mime application/vnd.sun.xml.impress.template 1492c990e5baSDaniel Fojt!:ext sti 1493f72f8299SJan Lentfer>>>62 string math Math document 1494c990e5baSDaniel Fojt!:mime application/vnd.sun.xml.math 1495c990e5baSDaniel Fojt!:ext sxm 1496f72f8299SJan Lentfer>>>62 string base Database file 1497c990e5baSDaniel Fojt!:mime application/vnd.sun.xml.base 1498c990e5baSDaniel Fojt!:ext sdb 1499327e51cbSPeter Avalos 1500*3b9cdfa3SAntonio Huete Jimenez# URL: https://wiki.openoffice.org/wiki/Documentation/DevGuide/Extensions/File_Format 1501*3b9cdfa3SAntonio Huete Jimenez# From: Joerg Jenderek 1502*3b9cdfa3SAntonio Huete Jimenez# Note: only few OXT samples are detected here by mimetype member 1503*3b9cdfa3SAntonio Huete Jimenez# is used by OpenOffice and LibreOffice and probably also NeoOffice 1504*3b9cdfa3SAntonio Huete Jimenez# verified by `unzip -Zv *.oxt` or `7z l -slt *.oxt` 1505*3b9cdfa3SAntonio Huete Jimenez>>50 string vnd.openofficeorg. OpenOffice 1506*3b9cdfa3SAntonio Huete Jimenez>>>68 string extension \b/LibreOffice Extension 1507*3b9cdfa3SAntonio Huete Jimenez# http://extension.nirsoft.net/oxt 1508*3b9cdfa3SAntonio Huete Jimenez!:mime application/vnd.openofficeorg.extension 1509*3b9cdfa3SAntonio Huete Jimenez# like: Gallery-Puzzle.2.1.0.1.oxt 1510*3b9cdfa3SAntonio Huete Jimenez!:ext oxt 1511*3b9cdfa3SAntonio Huete Jimenez 1512327e51cbSPeter Avalos# OpenDocument formats (for OpenOffice 2.x / StarOffice >= 8) 1513c990e5baSDaniel Fojt# URL: http://fileformats.archiveteam.org/wiki/OpenDocument 15146fca56fbSSascha Wildner# https://lists.oasis-open.org/archives/office/200505/msg00006.html 1515e4d4ce0cSPeter Avalos# (mimetype contains "application/vnd.oasis.opendocument.<SUBTYPE>") 1516f72f8299SJan Lentfer>>50 string vnd.oasis.opendocument. OpenDocument 1517f72f8299SJan Lentfer>>>73 string text 1518f72f8299SJan Lentfer>>>>77 byte !0x2d Text 151979343712SPeter Avalos!:mime application/vnd.oasis.opendocument.text 1520c990e5baSDaniel Fojt!:ext odt 1521f72f8299SJan Lentfer>>>>77 string -template Text Template 1522f72f8299SJan Lentfer!:mime application/vnd.oasis.opendocument.text-template 1523c990e5baSDaniel Fojt!:ext ott 1524f72f8299SJan Lentfer>>>>77 string -web HTML Document Template 1525f72f8299SJan Lentfer!:mime application/vnd.oasis.opendocument.text-web 1526c990e5baSDaniel Fojt!:ext oth 1527f72f8299SJan Lentfer>>>>77 string -master Master Document 1528f72f8299SJan Lentfer!:mime application/vnd.oasis.opendocument.text-master 1529c990e5baSDaniel Fojt!:ext odm 1530f72f8299SJan Lentfer>>>73 string graphics 1531f72f8299SJan Lentfer>>>>81 byte !0x2d Drawing 1532f72f8299SJan Lentfer!:mime application/vnd.oasis.opendocument.graphics 1533c990e5baSDaniel Fojt!:ext odg 1534c990e5baSDaniel Fojt>>>>81 string -template Drawing Template 1535f72f8299SJan Lentfer!:mime application/vnd.oasis.opendocument.graphics-template 1536c990e5baSDaniel Fojt!:ext otg 1537f72f8299SJan Lentfer>>>73 string presentation 1538f72f8299SJan Lentfer>>>>85 byte !0x2d Presentation 1539f72f8299SJan Lentfer!:mime application/vnd.oasis.opendocument.presentation 1540c990e5baSDaniel Fojt!:ext odp 1541c990e5baSDaniel Fojt>>>>85 string -template Presentation Template 1542f72f8299SJan Lentfer!:mime application/vnd.oasis.opendocument.presentation-template 1543c990e5baSDaniel Fojt!:ext otp 1544f72f8299SJan Lentfer>>>73 string spreadsheet 1545f72f8299SJan Lentfer>>>>84 byte !0x2d Spreadsheet 1546f72f8299SJan Lentfer!:mime application/vnd.oasis.opendocument.spreadsheet 1547c990e5baSDaniel Fojt!:ext ods 1548c990e5baSDaniel Fojt>>>>84 string -template Spreadsheet Template 1549f72f8299SJan Lentfer!:mime application/vnd.oasis.opendocument.spreadsheet-template 1550c990e5baSDaniel Fojt!:ext ots 1551f72f8299SJan Lentfer>>>73 string chart 1552f72f8299SJan Lentfer>>>>78 byte !0x2d Chart 1553f72f8299SJan Lentfer!:mime application/vnd.oasis.opendocument.chart 1554c990e5baSDaniel Fojt!:ext odc 1555c990e5baSDaniel Fojt>>>>78 string -template Chart Template 1556f72f8299SJan Lentfer!:mime application/vnd.oasis.opendocument.chart-template 1557c990e5baSDaniel Fojt!:ext otc 1558f72f8299SJan Lentfer>>>73 string formula 1559f72f8299SJan Lentfer>>>>80 byte !0x2d Formula 1560f72f8299SJan Lentfer!:mime application/vnd.oasis.opendocument.formula 1561c990e5baSDaniel Fojt!:ext odf 1562c990e5baSDaniel Fojt>>>>80 string -template Formula Template 1563f72f8299SJan Lentfer!:mime application/vnd.oasis.opendocument.formula-template 1564c990e5baSDaniel Fojt!:ext otf 1565c990e5baSDaniel Fojt# https://www.loc.gov/preservation/digital/formats/fdd/fdd000441.shtml 1566f72f8299SJan Lentfer>>>73 string database Database 1567f72f8299SJan Lentfer!:mime application/vnd.oasis.opendocument.database 1568c990e5baSDaniel Fojt!:ext odb 15696fca56fbSSascha Wildner# Valid for LibreOffice Base 6.0.1.1 at least 15706fca56fbSSascha Wildner>>>73 string base Database 1571c990e5baSDaniel Fojt# https://bugs.documentfoundation.org/show_bug.cgi?id=45854 1572c990e5baSDaniel Fojt!:mime application/vnd.oasis.opendocument.database 1573c990e5baSDaniel Fojt#!:mime application/vnd.oasis.opendocument.base 1574c990e5baSDaniel Fojt!:ext odb 1575f72f8299SJan Lentfer>>>73 string image 1576f72f8299SJan Lentfer>>>>78 byte !0x2d Image 1577f72f8299SJan Lentfer!:mime application/vnd.oasis.opendocument.image 1578c990e5baSDaniel Fojt!:ext odi 1579c990e5baSDaniel Fojt>>>>78 string -template Image Template 1580f72f8299SJan Lentfer!:mime application/vnd.oasis.opendocument.image-template 1581c990e5baSDaniel Fojt!:ext oti 1582327e51cbSPeter Avalos 1583e4d4ce0cSPeter Avalos# EPUB (OEBPS) books using OCF (OEBPS Container Format) 15846fca56fbSSascha Wildner# https://www.idpf.org/ocf/ocf1.0/download/ocf10.htm, section 4. 1585e8af9738SPeter Avalos# From: Ralf Brown <ralf.brown@gmail.com> 1586e8af9738SPeter Avalos>>50 string epub+zip EPUB document 1587e4d4ce0cSPeter Avalos!:mime application/epub+zip 1588e4d4ce0cSPeter Avalos 15896fca56fbSSascha Wildner# From: Joerg Jenderek 15906fca56fbSSascha Wildner# URL: http://en.wikipedia.org/wiki/CorelDRAW 15916fca56fbSSascha Wildner# NOTE: version; til 2 WL-based; from 3 til 13 by ./riff; from 14 zip based 15926fca56fbSSascha Wildner>>50 string x-vnd.corel. Corel 15936fca56fbSSascha Wildner>>>62 string draw.document+zip Draw drawing, version 14-16 15946fca56fbSSascha Wildner!:mime application/x-vnd.corel.draw.document+zip 15956fca56fbSSascha Wildner!:ext cdr 15966fca56fbSSascha Wildner>>>62 string draw.template+zip Draw template, version 14-16 15976fca56fbSSascha Wildner!:mime application/x-vnd.corel.draw.template+zip 15986fca56fbSSascha Wildner!:ext cdrt 1599c990e5baSDaniel Fojt>>>62 string zcf.draw.document+zip Draw drawing, version 17-22 16006fca56fbSSascha Wildner!:mime application/x-vnd.corel.zcf.draw.document+zip 16016fca56fbSSascha Wildner!:ext cdr 1602c990e5baSDaniel Fojt>>>62 string zcf.draw.template+zip Draw template, version 17-22 16036fca56fbSSascha Wildner!:mime application/x-vnd.corel.zcf.draw.template+zip 16046fca56fbSSascha Wildner!:ext cdt/cdrt 1605c990e5baSDaniel Fojt# URL: http://product.corel.com/help/CorelDRAW/540240626/Main/EN/Doc/CorelDRAW-Other-file-formats.html 1606c990e5baSDaniel Fojt>>>62 string zcf.pattern+zip Draw pattern, version 22 1607c990e5baSDaniel Fojt!:mime application/x-vnd.corel.zcf.pattern+zip 1608c990e5baSDaniel Fojt!:ext pat 1609c990e5baSDaniel Fojt# URL: https://en.wikipedia.org/wiki/Corel_Designer 1610c990e5baSDaniel Fojt# Reference: http://fileformats.archiveteam.org/wiki/Corel_Designer 1611c990e5baSDaniel Fojt# Note: called by TrID "Corel DESIGN graphics" 1612c990e5baSDaniel Fojt>>>62 string designer.document+zip DESIGNER graphics, version 14-16 1613c990e5baSDaniel Fojt!:mime application/x-vnd.corel.designer.document+zip 1614c990e5baSDaniel Fojt!:ext des 1615c990e5baSDaniel Fojt>>>62 string zcf.designer.document+zip DESIGNER graphics, version 17-21 1616c990e5baSDaniel Fojt!:mime application/x-vnd.corel.zcf.designer.document+zip 1617c990e5baSDaniel Fojt!:ext des 1618c990e5baSDaniel Fojt# URL: http://product.corel.com/help/CorelDRAW/540223850/Main/EN/Documentation/ 1619c990e5baSDaniel Fojt# CorelDRAW-Corel-Symbol-Library-CSL.html 1620c990e5baSDaniel Fojt>>>62 string symbol.library+zip Symbol Library, version 6-16.3 1621c990e5baSDaniel Fojt!:mime application/x-vnd.corel.symbol.library+zip 1622c990e5baSDaniel Fojt!:ext csl 1623c990e5baSDaniel Fojt>>>62 string zcf.symbol.library+zip Symbol Library, version 17-22 1624c990e5baSDaniel Fojt!:mime application/x-vnd.corel.zcf.symbol.library+zip 1625c990e5baSDaniel Fojt!:ext csl 16266fca56fbSSascha Wildner 1627e4d4ce0cSPeter Avalos# Catch other ZIP-with-mimetype formats 1628e4d4ce0cSPeter Avalos# In a ZIP file, the bytes immediately after a member's contents are 1629e4d4ce0cSPeter Avalos# always "PK". The 2 regex rules here print the "mimetype" member's 1630e4d4ce0cSPeter Avalos# contents up to the first 'P'. Luckily, most MIME types don't contain 1631e4d4ce0cSPeter Avalos# any capital 'P's. This is a kludge. 1632e4d4ce0cSPeter Avalos# (mimetype contains "application/<OTHER>") 16336fca56fbSSascha Wildner>>50 default x Zip data 16346fca56fbSSascha Wildner>>>38 regex [!-OQ-~]+ (MIME type "%s"?) 1635e4d4ce0cSPeter Avalos!:mime application/zip 1636e4d4ce0cSPeter Avalos# (mimetype contents other than "application/*") 1637e4d4ce0cSPeter Avalos>26 string \x8\0\0\0mimetype 1638e4d4ce0cSPeter Avalos>>38 string !application/ 1639e4d4ce0cSPeter Avalos>>>38 regex [!-OQ-~]+ Zip data (MIME type "%s"?) 1640e4d4ce0cSPeter Avalos!:mime application/zip 1641e4d4ce0cSPeter Avalos 1642e8af9738SPeter Avalos# Java Jar files 1643e8af9738SPeter Avalos>(26.s+30) leshort 0xcafe Java archive data (JAR) 1644e8af9738SPeter Avalos!:mime application/java-archive 1645e8af9738SPeter Avalos 1646c30bd091SSascha Wildner# iOS App 1647c30bd091SSascha Wildner>(26.s+30) leshort !0xcafe 1648c30bd091SSascha Wildner>>26 string !\x8\0\0\0mimetype 1649c30bd091SSascha Wildner>>>30 string Payload/ 1650c30bd091SSascha Wildner>>>>38 search/64 .app/ iOS App 1651c30bd091SSascha Wildner!:mime application/x-ios-app 1652c30bd091SSascha Wildner 1653614728caSSascha Wildner# Dup, see above. 1654614728caSSascha Wildner#>30 search/100/b application/epub+zip EPUB document 1655614728caSSascha Wildner#!:mime application/epub+zip 1656c30bd091SSascha Wildner 1657e4d4ce0cSPeter Avalos# Generic zip archives (Greg Roelofs, c/o zip-bugs@wkuvx1.wku.edu) 1658e4d4ce0cSPeter Avalos# Next line excludes specialized formats: 1659e8af9738SPeter Avalos>(26.s+30) leshort !0xcafe 1660c990e5baSDaniel Fojt>>30 search/100/b !application/epub+zip 1661c990e5baSDaniel Fojt>>>26 string !\x8\0\0\0mimetype Zip archive data 1662e4d4ce0cSPeter Avalos!:mime application/zip 1663c990e5baSDaniel Fojt>>>>4 beshort x \b, at least 1664c990e5baSDaniel Fojt>>>>4 use zipversion 1665c990e5baSDaniel Fojt>>>>4 beshort x to extract 1666970935fdSSascha Wildner>>>>8 beshort x \b, compression method= 1667970935fdSSascha Wildner>>>>8 use zipcompression 1668c990e5baSDaniel Fojt>>>>0x161 string WINZIP \b, WinZIP self-extracting 1669a96e001bSPeter Avalos 1670a96e001bSPeter Avalos# StarView Metafile 1671a96e001bSPeter Avalos# From Pierre Ducroquet <pinaraf@pinaraf.info> 1672a96e001bSPeter Avalos0 string VCLMTF StarView MetaFile 1673a96e001bSPeter Avalos>6 beshort x \b, version %d 1674a96e001bSPeter Avalos>8 belong x \b, size %d 1675e4d4ce0cSPeter Avalos 1676327e51cbSPeter Avalos# Zoo archiver 1677327e51cbSPeter Avalos20 lelong 0xfdc4a7dc Zoo archive data 167879343712SPeter Avalos!:mime application/x-zoo 1679327e51cbSPeter Avalos>4 byte >48 \b, v%c. 1680327e51cbSPeter Avalos>>6 byte >47 \b%c 1681327e51cbSPeter Avalos>>>7 byte >47 \b%c 1682327e51cbSPeter Avalos>32 byte >0 \b, modify: v%d 1683327e51cbSPeter Avalos>>33 byte x \b.%d+ 1684327e51cbSPeter Avalos>42 lelong 0xfdc4a7dc \b, 1685327e51cbSPeter Avalos>>70 byte >0 extract: v%d 1686327e51cbSPeter Avalos>>>71 byte x \b.%d+ 1687327e51cbSPeter Avalos 1688327e51cbSPeter Avalos# Shell archives 1689327e51cbSPeter Avalos10 string #\ This\ is\ a\ shell\ archive shell archive text 169079343712SPeter Avalos!:mime application/octet-stream 1691327e51cbSPeter Avalos 1692327e51cbSPeter Avalos# 1693327e51cbSPeter Avalos# LBR. NB: May conflict with the questionable 1694327e51cbSPeter Avalos# "binary Computer Graphics Metafile" format. 1695327e51cbSPeter Avalos# 1696327e51cbSPeter Avalos0 string \0\ \ \ \ \ \ \ \ \ \ \ \0\0 LBR archive data 1697327e51cbSPeter Avalos# 1698327e51cbSPeter Avalos# PMA (CP/M derivative of LHA) 1699c30bd091SSascha Wildner# Update: Joerg Jenderek 1700c30bd091SSascha Wildner# URL: https://en.wikipedia.org/wiki/LHA_(file_format) 1701327e51cbSPeter Avalos# 1702c30bd091SSascha Wildner#2 string -pm0- PMarc archive data [pm0] 1703c30bd091SSascha Wildner2 string -pm0- 1704c30bd091SSascha Wildner>0 use lharc-file 1705c30bd091SSascha Wildner#2 string -pm1- PMarc archive data [pm1] 1706c30bd091SSascha Wildner2 string -pm1- 1707c30bd091SSascha Wildner>0 use lharc-file 1708c30bd091SSascha Wildner#2 string -pm2- PMarc archive data [pm2] 1709c30bd091SSascha Wildner2 string -pm2- 1710c30bd091SSascha Wildner>0 use lharc-file 1711327e51cbSPeter Avalos2 string -pms- PMarc SFX archive (CP/M, DOS) 1712c30bd091SSascha Wildner#!:mime application/x-foobar-exec 1713c30bd091SSascha Wildner!:ext com 1714327e51cbSPeter Avalos5 string -pc1- PopCom compressed executable (CP/M) 1715c30bd091SSascha Wildner#!:mime application/x- 1716c30bd091SSascha Wildner#!:ext com 1717327e51cbSPeter Avalos 1718327e51cbSPeter Avalos# From Rafael Laboissiere <rafael@laboissiere.net> 1719327e51cbSPeter Avalos# The Project Revision Control System (see 1720327e51cbSPeter Avalos# http://prcs.sourceforge.net) generates a packaged project 1721327e51cbSPeter Avalos# file which is recognized by the following entry: 1722327e51cbSPeter Avalos0 leshort 0xeb81 PRCS packaged project 1723327e51cbSPeter Avalos 1724327e51cbSPeter Avalos# Microsoft cabinets 1725327e51cbSPeter Avalos# by David Necas (Yeti) <yeti@physics.muni.cz> 1726327e51cbSPeter Avalos#0 string MSCF\0\0\0\0 Microsoft cabinet file data, 1727327e51cbSPeter Avalos#>25 byte x v%d 1728327e51cbSPeter Avalos#>24 byte x \b.%d 1729327e51cbSPeter Avalos# MPi: All CABs have version 1.3, so this is pointless. 1730327e51cbSPeter Avalos# Better magic in debian-additions. 1731327e51cbSPeter Avalos 1732327e51cbSPeter Avalos# GTKtalog catalogs 1733327e51cbSPeter Avalos# by David Necas (Yeti) <yeti@physics.muni.cz> 1734327e51cbSPeter Avalos4 string gtktalog\ GTKtalog catalog data, 1735327e51cbSPeter Avalos>13 string 3 version 3 1736327e51cbSPeter Avalos>>14 beshort 0x677a (gzipped) 1737327e51cbSPeter Avalos>>14 beshort !0x677a (not gzipped) 1738327e51cbSPeter Avalos>13 string >3 version %s 1739327e51cbSPeter Avalos 1740327e51cbSPeter Avalos############################################################################ 1741327e51cbSPeter Avalos# Parity archive reconstruction file, the 'par' file format now used on Usenet. 1742327e51cbSPeter Avalos0 string PAR\0 PARity archive data 1743327e51cbSPeter Avalos>48 leshort =0 - Index file 1744327e51cbSPeter Avalos>48 leshort >0 - file number %d 1745327e51cbSPeter Avalos 1746327e51cbSPeter Avalos# Felix von Leitner <felix-file@fefe.de> 1747327e51cbSPeter Avalos0 string d8:announce BitTorrent file 174879343712SPeter Avalos!:mime application/x-bittorrent 1749*3b9cdfa3SAntonio Huete Jimenez!:ext torrent 1750c30bd091SSascha Wildner# Durval Menezes, <jmgthbfile at durval dot com> 1751c30bd091SSascha Wildner0 string d13:announce-list BitTorrent file 1752c30bd091SSascha Wildner!:mime application/x-bittorrent 1753*3b9cdfa3SAntonio Huete Jimenez!:ext torrent 17546fca56fbSSascha Wildner0 string d7:comment BitTorrent file 17556fca56fbSSascha Wildner!:mime application/x-bittorrent 1756*3b9cdfa3SAntonio Huete Jimenez!:ext torrent 17576fca56fbSSascha Wildner0 string d4:info BitTorrent file 17586fca56fbSSascha Wildner!:mime application/x-bittorrent 1759*3b9cdfa3SAntonio Huete Jimenez!:ext torrent 1760327e51cbSPeter Avalos 1761327e51cbSPeter Avalos# Atari MSA archive - Teemu Hukkanen <tjhukkan@iki.fi> 1762*3b9cdfa3SAntonio Huete Jimenez# URL: http://fileformats.archiveteam.org/wiki/MSA_(Magic_Shadow_Archiver) 1763*3b9cdfa3SAntonio Huete Jimenez# Reference: http://info-coach.fr/atari/documents/_mydoc/FD_Image_File_Format.pdf 1764*3b9cdfa3SAntonio Huete Jimenez# http://mark0.net/download/triddefs_xml.7z/defs/m/msa.trid.xml 1765*3b9cdfa3SAntonio Huete Jimenez# Update: Joerg Jenderek 1766*3b9cdfa3SAntonio Huete Jimenez# Note: called by TrID "Atari MSA Disk Image" and verified by 1767*3b9cdfa3SAntonio Huete Jimenez# command like `deark -l -m msa -d2 PDATS578.msa` as " Atari ST floppy disk image" 1768*3b9cdfa3SAntonio Huete Jimenez# GRR: line below is too general as it matches setup.skin 1769*3b9cdfa3SAntonio Huete Jimenez0 beshort 0x0e0f 1770*3b9cdfa3SAntonio Huete Jimenez# skip foo setup.skin with unrealistic high number 52255 of sides by check for valid "low" value 1771*3b9cdfa3SAntonio Huete Jimenez>4 ubeshort <2 Atari MSA archive data 1772*3b9cdfa3SAntonio Huete Jimenez#!:mime application/octet-stream 1773*3b9cdfa3SAntonio Huete Jimenez!:mime application/x-atari-msa 1774*3b9cdfa3SAntonio Huete Jimenez!:ext msa 1775*3b9cdfa3SAntonio Huete Jimenez# sectors per track like: 9 10 1776*3b9cdfa3SAntonio Huete Jimenez>>2 beshort x \b, %d sectors per track 1777*3b9cdfa3SAntonio Huete Jimenez# sides (0 or 1; add 1 to this to get correct number of sides) 1778*3b9cdfa3SAntonio Huete Jimenez>>4 beshort 0 \b, 1 sided 1779*3b9cdfa3SAntonio Huete Jimenez>>4 beshort 1 \b, 2 sided 1780*3b9cdfa3SAntonio Huete Jimenez# starting track like: 0 1781*3b9cdfa3SAntonio Huete Jimenez>>6 beshort x \b, starting track: %d 1782*3b9cdfa3SAntonio Huete Jimenez# ending track like: 39 79 80 81 1783*3b9cdfa3SAntonio Huete Jimenez>>8 beshort x \b, ending track: %d 1784*3b9cdfa3SAntonio Huete Jimenez# tracks content 1785*3b9cdfa3SAntonio Huete Jimenez#>>10 ubequad x \b, track content %#16.16llx 1786327e51cbSPeter Avalos 1787327e51cbSPeter Avalos# Alternate ZIP string (amc@arwen.cs.berkeley.edu) 1788327e51cbSPeter Avalos0 string PK00PK\003\004 Zip archive data 17896fca56fbSSascha Wildner!:mime application/zip 17906fca56fbSSascha Wildner!:ext zip/cbz 1791327e51cbSPeter Avalos 1792327e51cbSPeter Avalos# ACE archive (from http://www.wotsit.org/download.asp?f=ace) 1793327e51cbSPeter Avalos# by Stefan `Sec` Zehl <sec@42.org> 1794327e51cbSPeter Avalos7 string **ACE** ACE archive data 1795*3b9cdfa3SAntonio Huete Jimenez!:mime application/x-ace-compressed 1796*3b9cdfa3SAntonio Huete Jimenez!:ext ace 1797327e51cbSPeter Avalos>15 byte >0 version %d 1798327e51cbSPeter Avalos>16 byte =0x00 \b, from MS-DOS 1799327e51cbSPeter Avalos>16 byte =0x01 \b, from OS/2 1800327e51cbSPeter Avalos>16 byte =0x02 \b, from Win/32 1801327e51cbSPeter Avalos>16 byte =0x03 \b, from Unix 1802327e51cbSPeter Avalos>16 byte =0x04 \b, from MacOS 1803327e51cbSPeter Avalos>16 byte =0x05 \b, from WinNT 1804327e51cbSPeter Avalos>16 byte =0x06 \b, from Primos 1805327e51cbSPeter Avalos>16 byte =0x07 \b, from AppleGS 1806327e51cbSPeter Avalos>16 byte =0x08 \b, from Atari 1807327e51cbSPeter Avalos>16 byte =0x09 \b, from Vax/VMS 1808327e51cbSPeter Avalos>16 byte =0x0A \b, from Amiga 1809327e51cbSPeter Avalos>16 byte =0x0B \b, from Next 1810327e51cbSPeter Avalos>14 byte x \b, version %d to extract 1811327e51cbSPeter Avalos>5 leshort &0x0080 \b, multiple volumes, 1812327e51cbSPeter Avalos>>17 byte x \b (part %d), 1813327e51cbSPeter Avalos>5 leshort &0x0002 \b, contains comment 1814327e51cbSPeter Avalos>5 leshort &0x0200 \b, sfx 1815327e51cbSPeter Avalos>5 leshort &0x0400 \b, small dictionary 1816327e51cbSPeter Avalos>5 leshort &0x0800 \b, multi-volume 1817327e51cbSPeter Avalos>5 leshort &0x1000 \b, contains AV-String 1818327e51cbSPeter Avalos>>30 string \x16*UNREGISTERED\x20VERSION* (unregistered) 1819327e51cbSPeter Avalos>5 leshort &0x2000 \b, with recovery record 1820327e51cbSPeter Avalos>5 leshort &0x4000 \b, locked 1821327e51cbSPeter Avalos>5 leshort &0x8000 \b, solid 1822327e51cbSPeter Avalos# Date in MS-DOS format (whatever that is) 1823327e51cbSPeter Avalos#>18 lelong x Created on 1824327e51cbSPeter Avalos 1825327e51cbSPeter Avalos# sfArk : compression program for Soundfonts (sf2) by Dirk Jagdmann 1826327e51cbSPeter Avalos# <doj@cubic.org> 1827327e51cbSPeter Avalos0x1A string sfArk sfArk compressed Soundfont 1828327e51cbSPeter Avalos>0x15 string 2 1829327e51cbSPeter Avalos>>0x1 string >\0 Version %s 1830327e51cbSPeter Avalos>>0x2A string >\0 : %s 1831327e51cbSPeter Avalos 1832327e51cbSPeter Avalos# DR-DOS 7.03 Packed File *.??_ 1833970935fdSSascha Wildner# Reference: http://www.antonis.de/dos/dos-tuts/mpdostip/html/nwdostip.htm 1834970935fdSSascha Wildner# Note: unpacked by PNUNPACK.EXE 1835970935fdSSascha Wildner0 string Packed\ File\ 1836970935fdSSascha Wildner# by looking for Control-Z skip ASCII text starting with Packed File 1837970935fdSSascha Wildner>0x18 ubyte 0x1a Personal NetWare Packed File 1838970935fdSSascha Wildner!:mime application/x-novell-compress 1839970935fdSSascha Wildner!:ext ??_ 1840970935fdSSascha Wildner>>12 string x \b, was "%.12s" 1841970935fdSSascha Wildner# 1 or 2 1842970935fdSSascha Wildner#>>0x19 ubyte x \b, at 0x19 %u 1843970935fdSSascha Wildner>>0x1b ulelong x with %u bytes 1844327e51cbSPeter Avalos 1845327e51cbSPeter Avalos# EET archive 1846327e51cbSPeter Avalos# From: Tilman Sauerbeck <tilman@code-monkey.de> 1847327e51cbSPeter Avalos0 belong 0x1ee7ff00 EET archive 184879343712SPeter Avalos!:mime application/x-eet 1849327e51cbSPeter Avalos 1850327e51cbSPeter Avalos# rzip archives 1851327e51cbSPeter Avalos0 string RZIP rzip compressed data 1852327e51cbSPeter Avalos>4 byte x - version %d 1853327e51cbSPeter Avalos>5 byte x \b.%d 1854327e51cbSPeter Avalos>6 belong x (%d bytes) 1855327e51cbSPeter Avalos 18566fca56fbSSascha Wildner# From: Joerg Jenderek 18576fca56fbSSascha Wildner# URL: https://help.foxitsoftware.com/kb/install-fzip-file.php 18586fca56fbSSascha Wildner# reference: http://mark0.net/download/triddefs_xml.7z/ 18596fca56fbSSascha Wildner# defs/f/fzip.trid.xml 18606fca56fbSSascha Wildner# Note: unknown compression; No "PK" zip magic; normally in directory like 18616fca56fbSSascha Wildner# "%APPDATA%\Foxit Software\Addon\Foxit Reader\Install" 18626fca56fbSSascha Wildner0 ubequad 0x2506781901010000 Foxit add-on/update 18636fca56fbSSascha Wildner!:mime application/x-fzip 18646fca56fbSSascha Wildner!:ext fzip 18656fca56fbSSascha Wildner 1866327e51cbSPeter Avalos# From: "Robert Dale" <robdale@gmail.com> 1867327e51cbSPeter Avalos0 belong 123 dar archive, 1868327e51cbSPeter Avalos>4 belong x label "%.8x 1869327e51cbSPeter Avalos>>8 belong x %.8x 1870327e51cbSPeter Avalos>>>12 beshort x %.4x" 1871327e51cbSPeter Avalos>14 byte 0x54 end slice 1872327e51cbSPeter Avalos>14 beshort 0x4e4e multi-part 1873327e51cbSPeter Avalos>14 beshort 0x4e53 multi-part, with -S 1874327e51cbSPeter Avalos 1875327e51cbSPeter Avalos# Symbian installation files 18766fca56fbSSascha Wildner# https://www.thouky.co.uk/software/psifs/sis.html 1877327e51cbSPeter Avalos# http://developer.symbian.com/main/downloads/papers/SymbianOSv91/softwareinstallsis.pdf 1878327e51cbSPeter Avalos8 lelong 0x10000419 Symbian installation file 187979343712SPeter Avalos!:mime application/vnd.symbian.install 1880327e51cbSPeter Avalos>4 lelong 0x1000006D (EPOC release 3/4/5) 1881327e51cbSPeter Avalos>4 lelong 0x10003A12 (EPOC release 6) 1882327e51cbSPeter Avalos0 lelong 0x10201A7A Symbian installation file (Symbian OS 9.x) 188379343712SPeter Avalos!:mime x-epoc/x-sisx-app 1884327e51cbSPeter Avalos 1885327e51cbSPeter Avalos# From "Nelson A. de Oliveira" <naoliv@gmail.com> 1886327e51cbSPeter Avalos0 string MPQ\032 MoPaQ (MPQ) archive 1887327e51cbSPeter Avalos 1888327e51cbSPeter Avalos# From: "Nelson A. de Oliveira" <naoliv@gmail.com> 1889327e51cbSPeter Avalos# .kgb 1890327e51cbSPeter Avalos0 string KGB_arch KGB Archiver file 1891327e51cbSPeter Avalos>10 string x with compression level %.1s 189279343712SPeter Avalos 189379343712SPeter Avalos# xar (eXtensible ARchiver) archive 18946fca56fbSSascha Wildner# URL: https://en.wikipedia.org/wiki/Xar_(archiver) 18956fca56fbSSascha Wildner# xar archive format: https://code.google.com/p/xar/ 189679343712SPeter Avalos# From: "David Remahl" <dremahl@apple.com> 18976fca56fbSSascha Wildner# Update: Joerg Jenderek 18986fca56fbSSascha Wildner# TODO: lzma compression; X509Data for pkg and xip 18996fca56fbSSascha Wildner# Note: verified by `xar --dump-header -f FullBundleUpdate.xar` or 19006fca56fbSSascha Wildner# 7z t -txar Xcode_10.2_beta_4.xip` 190179343712SPeter Avalos0 string xar! xar archive 1902c30bd091SSascha Wildner!:mime application/x-xar 19036fca56fbSSascha Wildner# pkg for Mac OSX installer package like FullBundleUpdate.pkg 19046fca56fbSSascha Wildner# xip for signed Apple software like Xcode_10.2_beta_4.xip 19056fca56fbSSascha Wildner!:ext xar/pkg/xip 19066fca56fbSSascha Wildner# always 28 in older archives 19076fca56fbSSascha Wildner>4 ubeshort >28 \b, header size %u 19086fca56fbSSascha Wildner# currently there exit only version 1 since about 2014 19096fca56fbSSascha Wildner>6 ubeshort >1 version %u, 19106fca56fbSSascha Wildner>8 ubequad x compressed TOC: %llu, 19116fca56fbSSascha Wildner#>16 ubequad x uncompressed TOC: %llu, 19126fca56fbSSascha Wildner# cksum_alg 0-2 in older and also 3-4 in newer 191379343712SPeter Avalos>24 belong 0 no checksum 191479343712SPeter Avalos>24 belong 1 SHA-1 checksum 191579343712SPeter Avalos>24 belong 2 MD5 checksum 19166fca56fbSSascha Wildner>24 belong 3 SHA-256 checksum 19176fca56fbSSascha Wildner>24 belong 4 SHA-512 checksum 1918614728caSSascha Wildner>24 belong >4 unknown %#x checksum 19196fca56fbSSascha Wildner#>24 belong >4 checksum 19206fca56fbSSascha Wildner# For no compression jump 0 bytes 19216fca56fbSSascha Wildner>24 belong 0 19226fca56fbSSascha Wildner>>0 ubyte x 19236fca56fbSSascha Wildner# jump more bytes forward by header size 19246fca56fbSSascha Wildner>>>&(4.S) ubyte x 19256fca56fbSSascha Wildner# jump more bytes forward by compressed table of contents size 1926614728caSSascha Wildner#>>>>&(8.Q) ubequad x \b, heap data %#llx 19276fca56fbSSascha Wildner>>>>&(8.Q) ubyte x 19286fca56fbSSascha Wildner# look for data by ./compress after message with 1 space at end 19296fca56fbSSascha Wildner>>>>>&-3 indirect x \b, contains 19306fca56fbSSascha Wildner# For SHA-1 jump 20 minus 2 bytes 19316fca56fbSSascha Wildner>24 belong 1 19326fca56fbSSascha Wildner>>18 ubyte x 19336fca56fbSSascha Wildner# jump more bytes forward by header size 19346fca56fbSSascha Wildner>>>&(4.S) ubyte x 19356fca56fbSSascha Wildner# jump more bytes forward by compressed table of contents size 19366fca56fbSSascha Wildner>>>>&(8.Q) ubyte x 19376fca56fbSSascha Wildner# data compressed by gzip, bzip, lzma or none 19386fca56fbSSascha Wildner>>>>>&-1 indirect x \b, contains 19396fca56fbSSascha Wildner# For SHA-256 jump 32 minus 2 bytes 19406fca56fbSSascha Wildner>24 belong 3 19416fca56fbSSascha Wildner>>30 ubyte x 19426fca56fbSSascha Wildner# jump more bytes forward by header size 19436fca56fbSSascha Wildner>>>&(4.S) ubyte x 19446fca56fbSSascha Wildner# jump more bytes forward by compressed table of contents size 19456fca56fbSSascha Wildner>>>>&(8.Q) ubyte x 19466fca56fbSSascha Wildner>>>>>&-1 indirect x \b, contains 19476fca56fbSSascha Wildner# For SHA-512 jump 64 minus 2 bytes 19486fca56fbSSascha Wildner>24 belong 4 19496fca56fbSSascha Wildner>>62 ubyte x 19506fca56fbSSascha Wildner# jump more bytes forward by header size 19516fca56fbSSascha Wildner>>>&(4.S) ubyte x 19526fca56fbSSascha Wildner# jump more bytes forward by compressed table of contents size 19536fca56fbSSascha Wildner>>>>&(8.Q) ubyte x 19546fca56fbSSascha Wildner>>>>>&-1 indirect x \b, contains 1955e4d4ce0cSPeter Avalos 1956e4d4ce0cSPeter Avalos# Type: Parity Archive 1957e4d4ce0cSPeter Avalos# From: Daniel van Eeden <daniel_e@dds.nl> 1958e4d4ce0cSPeter Avalos0 string PAR2 Parity Archive Volume Set 1959e4d4ce0cSPeter Avalos 1960e4d4ce0cSPeter Avalos# Bacula volume format. (Volumes always start with a block header.) 19616fca56fbSSascha Wildner# URL: https://bacula.org/3.0.x-manuals/en/developers/developers/Block_Header.html 1962e4d4ce0cSPeter Avalos# From: Adam Buchbinder <adam.buchbinder@gmail.com> 1963e4d4ce0cSPeter Avalos12 string BB02 Bacula volume 1964e4d4ce0cSPeter Avalos>20 bedate x \b, started %s 1965e4d4ce0cSPeter Avalos 1966e4d4ce0cSPeter Avalos# ePub is XHTML + XML inside a ZIP archive. The first member of the 1967e4d4ce0cSPeter Avalos# archive must be an uncompressed file called 'mimetype' with contents 1968e4d4ce0cSPeter Avalos# 'application/epub+zip' 1969e4d4ce0cSPeter Avalos 1970e4d4ce0cSPeter Avalos 1971e8af9738SPeter Avalos# From: "Michael Gorny" <mgorny@gentoo.org> 1972e4d4ce0cSPeter Avalos# ZPAQ: http://mattmahoney.net/dc/zpaq.html 1973e4d4ce0cSPeter Avalos0 string zPQ ZPAQ stream 1974e4d4ce0cSPeter Avalos>3 byte x \b, level %d 1975c30bd091SSascha Wildner# From: Barry Carter <carter.barry@gmail.com> 19766fca56fbSSascha Wildner# https://encode.ru/threads/456-zpaq-updates/page32 1977c30bd091SSascha Wildner0 string 7kSt ZPAQ file 1978a96e001bSPeter Avalos 1979a96e001bSPeter Avalos# BBeB ebook, unencrypted (LRF format) 19806fca56fbSSascha Wildner# URL: https://www.sven.de/librie/Librie/LrfFormat 1981a96e001bSPeter Avalos# From: Adam Buchbinder <adam.buchbinder@gmail.com> 1982a96e001bSPeter Avalos0 string L\0R\0F\0\0\0 BBeB ebook data, unencrypted 1983a96e001bSPeter Avalos>8 beshort x \b, version %d 1984a96e001bSPeter Avalos>36 byte 1 \b, front-to-back 1985a96e001bSPeter Avalos>36 byte 16 \b, back-to-front 1986a96e001bSPeter Avalos>42 beshort x \b, (%dx, 1987a96e001bSPeter Avalos>44 beshort x %d) 198882c5fa3eSPeter Avalos 198982c5fa3eSPeter Avalos# Symantec GHOST image by Joerg Jenderek at May 2014 19906fca56fbSSascha Wildner# https://us.norton.com/ghost/ 19916fca56fbSSascha Wildner# https://www.garykessler.net/library/file_sigs.html 199282c5fa3eSPeter Avalos0 ubelong&0xFFFFf7f0 0xFEEF0100 Norton GHost image 199382c5fa3eSPeter Avalos# *.GHO 199482c5fa3eSPeter Avalos>2 ubyte&0x08 0x00 \b, first file 199582c5fa3eSPeter Avalos# *.GHS or *.[0-9] with cns program option 199682c5fa3eSPeter Avalos>2 ubyte&0x08 0x08 \b, split file 199782c5fa3eSPeter Avalos# part of split index interesting for *.ghs 1998614728caSSascha Wildner>>4 ubyte x id=%#x 199982c5fa3eSPeter Avalos# compression tag minus one equals numeric compression command line switch z[1-9] 200082c5fa3eSPeter Avalos>3 ubyte 0 \b, no compression 200182c5fa3eSPeter Avalos>3 ubyte 2 \b, fast compression (Z1) 200282c5fa3eSPeter Avalos>3 ubyte 3 \b, medium compression (Z2) 200382c5fa3eSPeter Avalos>3 ubyte >3 200482c5fa3eSPeter Avalos>>3 ubyte <11 \b, compression (Z%d-1) 200582c5fa3eSPeter Avalos>2 ubyte&0x08 0x00 200682c5fa3eSPeter Avalos# ~ 30 byte password field only for *.gho 200782c5fa3eSPeter Avalos>>12 ubequad !0 \b, password protected 200882c5fa3eSPeter Avalos>>44 ubyte !1 200982c5fa3eSPeter Avalos# 1~Image All, sector-by-sector only for *.gho 201082c5fa3eSPeter Avalos>>>10 ubyte 1 \b, sector copy 201182c5fa3eSPeter Avalos# 1~Image Boot track only for *.gho 201282c5fa3eSPeter Avalos>>>43 ubyte 1 \b, boot track 201382c5fa3eSPeter Avalos# 1~Image Disc only for *.gho implies Image Boot track and sector copy 201482c5fa3eSPeter Avalos>>44 ubyte 1 \b, disc sector copy 201582c5fa3eSPeter Avalos# optional image description only *.gho 201682c5fa3eSPeter Avalos>>0xff string >\0 "%-.254s" 201782c5fa3eSPeter Avalos# look for DOS sector end sequence 201882c5fa3eSPeter Avalos>0xE08 search/7776 \x55\xAA 201982c5fa3eSPeter Avalos>>&-512 indirect x \b; contains 202082c5fa3eSPeter Avalos 2021c30bd091SSascha Wildner# Google Chrome extensions 2022c30bd091SSascha Wildner# https://developer.chrome.com/extensions/crx 2023c30bd091SSascha Wildner# https://developer.chrome.com/extensions/hosting 2024c30bd091SSascha Wildner0 string Cr24 Google Chrome extension 2025c30bd091SSascha Wildner!:mime application/x-chrome-extension 2026c30bd091SSascha Wildner>4 ulong x \b, version %u 2027c30bd091SSascha Wildner 2028c30bd091SSascha Wildner# SeqBox - Sequenced container 2029c30bd091SSascha Wildner# ext: sbx, seqbox 2030c30bd091SSascha Wildner# Marco Pontello marcopon@gmail.com 2031c30bd091SSascha Wildner# reference: https://github.com/MarcoPon/SeqBox 2032c30bd091SSascha Wildner0 string SBx SeqBox, 2033c30bd091SSascha Wildner>3 byte x version %d 20346fca56fbSSascha Wildner 20356fca56fbSSascha Wildner# LyNX archive 20366fca56fbSSascha Wildner56 string USE\040LYNX\040TO\040DISSOLVE\040THIS\040FILE LyNX archive 20376fca56fbSSascha Wildner 20386fca56fbSSascha Wildner# From: Joerg Jenderek 20396fca56fbSSascha Wildner# URL: https://www.acronis.com/ 20406fca56fbSSascha Wildner# Reference: https://en.wikipedia.org/wiki/TIB_(file_format) 20416fca56fbSSascha Wildner# Note: only tested with True Image 2013 Build 5962 and 2019 Build 14110 20426fca56fbSSascha Wildner0 ubequad 0xce24b9a220000000 Acronis True Image backup 20436fca56fbSSascha Wildner!:mime application/x-acronis-tib 20446fca56fbSSascha Wildner!:ext tib 20456fca56fbSSascha Wildner# 01000000 2046614728caSSascha Wildner#>20 ubelong x \b, at 20 %#x 20476fca56fbSSascha Wildner# 20000000 2048614728caSSascha Wildner#>28 ubelong x \b, at 28 %#x 20496fca56fbSSascha Wildner# strings like "Generic- SD/MMC 1.00" "Unknown Disk" "Msft Virtual Disk 1.0" 20506fca56fbSSascha Wildner# ??? 20516fca56fbSSascha Wildner# strings like "\Device\0000011e" "\Device\0000015a" 20526fca56fbSSascha Wildner#>0 search/0x6852300/cs \\Device\\ 20536fca56fbSSascha Wildner#>>&-1 pstring x \b, %s 20546fca56fbSSascha Wildner# "\Device\HarddiskVolume30" "\Device\HarddiskVolume39" 20556fca56fbSSascha Wildner#>>>&1 search/180/cs \\Device\\ 20566fca56fbSSascha Wildner#>>>>&-1 pstring x \b, %s 20576fca56fbSSascha Wildner#>>>>>&0 search/29/cs \0\0\xc8\0 20586fca56fbSSascha Wildner# disk label 20596fca56fbSSascha Wildner#>>>>>>&10 lestring16 x \b, disk label %11.11s 20606fca56fbSSascha Wildner#>>>>>>&9 plestring16 x \b, disk label "%11.11s" 20616fca56fbSSascha Wildner#>>>>>>&10 ubequad x %16.16llx 20626fca56fbSSascha Wildner 20636fca56fbSSascha Wildner 20646fca56fbSSascha Wildner# Gentoo XPAK binary package 20656fca56fbSSascha Wildner# by Michal Gorny <mgorny@gentoo.org> 20666fca56fbSSascha Wildner# https://gitweb.gentoo.org/proj/portage.git/tree/man/xpak.5 20676fca56fbSSascha Wildner-4 string STOP 20686fca56fbSSascha Wildner>-16 string XPAKSTOP Gentoo binary package (XPAK) 20696fca56fbSSascha Wildner 20706fca56fbSSascha Wildner# From: Joerg Jenderek 20716fca56fbSSascha Wildner# URL: https://kodi.wiki/view/TexturePacker 20726fca56fbSSascha Wildner# Reference: https://mirrors.kodi.tv/releases/source/17.3-Krypton.tar.gz 20736fca56fbSSascha Wildner# /xbmc-Krypton/xbmc/guilib/XBTF.h 20746fca56fbSSascha Wildner# /xbmc-Krypton/xbmc/guilib/XBTF.cpp 20756fca56fbSSascha Wildner0 string XBTF 20766fca56fbSSascha Wildner# skip ASCII text by looking for terminating \0 of path 20776fca56fbSSascha Wildner>264 ubyte 0 XBMC texture package 20786fca56fbSSascha Wildner!:mime application/x-xbmc-xbt 20796fca56fbSSascha Wildner!:ext xbt 20806fca56fbSSascha Wildner# XBTF_VERSION 2 20816fca56fbSSascha Wildner>>4 string !2 \b, version %-.1s 20826fca56fbSSascha Wildner# nofFiles /xbmc-Krypton/xbmc/guilib/XBTFReader.cpp 20836fca56fbSSascha Wildner>>5 ulelong x \b, %u file 20846fca56fbSSascha Wildner# plural s 20856fca56fbSSascha Wildner>>5 ulelong >1 \bs 20866fca56fbSSascha Wildner# path[CXBTFFile[MaximumPathLength=256] 20876fca56fbSSascha Wildner>>9 string x \b, 1st %s 20886fca56fbSSascha Wildner 2089970935fdSSascha Wildner# ALZIP archive 2090970935fdSSascha Wildner# by Hyungjun Park <hyungjun.park@worksmobile.com>, Hajin Jang <hajin_jang@worksmobile.com> 2091970935fdSSascha Wildner# http://kippler.com/win/unalz/ 2092970935fdSSascha Wildner# https://salsa.debian.org/l10n-korean-team/unalz 2093970935fdSSascha Wildner0 string ALZ\001 ALZ archive data 2094970935fdSSascha Wildner!:ext alz 2095970935fdSSascha Wildner 2096970935fdSSascha Wildner# https://cf-aldn.altools.co.kr/setup/EGG_Specification.zip 2097970935fdSSascha Wildner0 string EGGA EGG archive data, 2098970935fdSSascha Wildner!:ext egg 2099970935fdSSascha Wildner>5 byte x version %u 2100970935fdSSascha Wildner>4 byte x \b.%u 2101970935fdSSascha Wildner>>0x0E ulelong =0x08E28222 2102970935fdSSascha Wildner>>0x0E ulelong =0x24F5A262 \b, split 2103970935fdSSascha Wildner>>0x0E ulelong =0x24E5A060 \b, solid 2104970935fdSSascha Wildner>>0x0E default x \b, unknown 2105970935fdSSascha Wildner 2106970935fdSSascha Wildner# PAQ9A archive 2107970935fdSSascha Wildner# URL: http://mattmahoney.net/dc/#paq9a 2108970935fdSSascha Wildner# Note: Line 1186 of paq9a.cpp gives the magic bytes 2109970935fdSSascha Wildner0 string pQ9\001 PAQ9A archive 2110*3b9cdfa3SAntonio Huete Jimenez 2111*3b9cdfa3SAntonio Huete Jimenez# From wof (wof@stachelkaktus.net) 2112*3b9cdfa3SAntonio Huete Jimenez0 string Unison\ archive\ format Unison archive format 2113