7z Format description (4.59)
----------------------------
This file contains description of 7z archive format.
7z archive can contain files compressed with any method.
See "Methods.txt" for description 7z Format description (4.59)
Format structure Overview
-------------------------
Some fields can be optional.
Archive structure
~~~~~~~~~~~~~~~~~
SignatureHeader
[PackedStreams]
[PackedStreamsForHeaders]
[
Header
or
{
Packed Header
HeaderInfo
}
]
Header structure
~~~~~~~~~~~~~~~~
{
ArchiveProperties
AdditionalStreams
{
PackInfo
{
PackPos
NumPackStreams
Sizes[NumPackStreams]
CRCs[NumPackStreams]
}
CodersInfo
{
NumFolders
Folders[NumFolders]
{
NumCoders
CodersInfo[NumCoders]
{
ID
NumInStreams;
NumOutStreams;
PropertiesSize
Properties[PropertiesSize]
}
NumBindPairs
BindPairsInfo[NumBindPairs]
{
InIndex;
OutIndex;
}
PackedIndices
}
UnPackSize[Folders][Folders.NumOutstreams]
CRCs[NumFolders]
}
SubStreamsInfo
{
NumUnPackStreamsInFolders[NumFolders];
UnPackSizes[]
---------------java.lang.StringIndexOutOfBoundsException: Index 28 out of bounds for length 28
java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5
java.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 3
}
java.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 3
FilesInfo
{
NumFiles
Properties[]
{
ID
Size
Data
}
}
}
HeaderInfo structure
~~~~~~~~~
{
(Same as in AdditionalStreams)
}
java.lang.StringIndexOutOfBoundsException: Range [11, 5) out of bounds for length 33
----------------------------java.lang.StringIndexOutOfBoundsException: Index 33 out of bounds for length 33
7 uses encoding
7z java.lang.StringIndexOutOfBoundsException: Range [10, 8) out of bounds for length 24
[}
Header
[]
REAL_UINT64 means real UINT64.
UINT64 means real UINT64 encoded with the following
Size of encoding sequence depends from java.lang.StringIndexOutOfBoundsException: Index 7 out of bounds for length 7
First_Byte Extra_Bytes}
(binary)java.lang.StringIndexOutOfBoundsException: Index 13 out of bounds for length 13
0xxxxxxx :( xxxxxxx java.lang.StringIndexOutOfBoundsException: Index 48 out of bounds for length 48
10 y[] : ( xxxxxx << (8 M.xt"for descriptiondefinedcompressing.
110xxxxxy
.java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5
1111110x y[] :( x< (8java.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 3
y[]:y
11111111 BYTE y[8] : ]
Property IDs
-----
0x00 = kEnd
0x01 = kHeader HeaderInfojava.lang.StringIndexOutOfBoundsException: Range [16, 17) out of bounds for length 16
0x02[
0x03 = kAdditionalStreamsInfo
REAL_UINT64 meansrealUINT64.
0
0x06 = kPackInfo
0x07 = kUnPackInfo
08=kSubStreamsInfo
0x09 = kSize
0x0A = kCRC(binary java.lang.StringIndexOutOfBoundsException: Index 13 out of bounds for length 13
0x0B = kFolder
0x0C = kCodersUnPackSize
0x0D = kNumUnPackStream
0x0E = kEmptyStream
0x0F = kEmptyFile
0x10 .
0x11 = kName
0x12 = kCTime
0x13 = 11111110 BYTE 7 :
0x14 = kMTime
0x15 = kWinAttributes
0Property
000=
001=kHeader
0x19 =kDummy
7z format headers
-------------0x04=kMainStreamsInfo
atureHeader
~~~~~~~java.lang.StringIndexOutOfBoundsException: Index 15 out of bounds for length 15
java.lang.StringIndexOutOfBoundsException: Range [12, 6) out of bounds for length 58
ArchiveVersion
{
BYTE Major; // now = 0
BYTE Minor; // now = 2
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
UINT32 StartHeaderCRC;
StartHeader
{
L_UINT64
java.lang.StringIndexOutOfBoundsException: Index 17 out of bounds for length 17
INT32 NextHeaderCRC
java.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 3
..........................
ArchiveProperties
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 0
for ;;
S
BYTEPropertyType;
if (aType == 0)
break;
kSignature]={7,'z' 0xBC x,0,0x1C;
java.lang.StringIndexOutOfBoundsException: Range [16, 6) out of bounds for length 34
}
Digests (NumStreams)
~~~~~~~~~~~~~~~~~~~~~
BYTE java.lang.StringIndexOutOfBoundsException: Index 11 out of bounds for length 0
if == 0
{
for(NumStreams)
BIT Defined
java.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 3
ArchiveProperties
~~~~~~
BYTE NID::kPackInfo (0x06)
UINT64 PackPos
UINT64 NumPackStreams
[
BYTEBYTE PropertyType
(aType=0)
[]
[]
BYTE
[java.lang.StringIndexOutOfBoundsException: Index 32 out of bounds for length 19
[]
BYTE NID::kEnd
java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 0
~
UINT64;
for N)
C
YTE
java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5
03CodecIdSize{
4: Is Complex
5: NID::kPackInfo)
6: Reserved
7 morealternative N used anymore,must be 0).
BYTE CodecId[odecIdSize
if UINT64 PackSizes[umPackStreamsjava.lang.StringIndexOutOfBoundsException: Index 34 out of bounds for length 34
PackStreamDigestsjava.lang.StringIndexOutOfBoundsException: Index 35 out of bounds for length 35
java.lang.StringIndexOutOfBoundsException: Index 11 out of bounds for length 5
;
}
5 Attributes
{
UINT64 7: There are more al.( usedanymore, must be 0.
BYTE [PropertiesSize
}
}
NumBindPairs = NumOutStreamsTotal - 1;
for ()
}
UINT64 InIndex;
UINT64 OutIndex;
}
NumPackedStreams =NumInStreamsTotal ;
if (BYTE Properties[PropertiesSize]
for(NumPackedStreams)
{
UINT64 Index;
}
Coders Info
~~for (umBindPairsjava.lang.StringIndexOutOfBoundsException: Index 20 out of bounds for length 20
BYTEfo (0x07 }
BYTE NID::kFolder (
[java.lang.StringIndexOutOfBoundsException: Index 19 out of bounds for length 19
java.lang.StringIndexOutOfBoundsException: Index 4 out of bounds for length 0
switch(External
NID:kFolder (x0Bjava.lang.StringIndexOutOfBoundsException: Index 27 out of bounds for length 27
::
Folders[NumFolders]
case 1:
switchExternal)
}
BYTE ID: BYTE ID::kCodersUnPackSize[NumFoldersjava.lang.StringIndexOutOfBoundsException: Index 25 out of bounds for length 25
(olders)
forNotes aboutjava.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 3
UINT64 UnPackSize;
[]
BYTE NID::kCRC java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
z archiveNumOutStreams)
[]
BYTE NID::kEnd
SubStreams Info
~~~
REAL_UINT64 means real UINT64.
[BYTE NID:kCRC (0x0A)
UINT64 means real UINT64 encoded with the UnPackDigests[NumFolders]
NumUnPackStreamsInFolders[java.lang.StringIndexOutOfBoundsException: Index 41 out of bounds for length 4
[
[]
NID::kSize (0x09~~~~~
UINT64[java.lang.StringIndexOutOfBoundsException: Index 22 out of bounds for length 22
[
[]
BYTE::kCRC (0x0A)
Digests[Number of java.lang.StringIndexOutOfBoundsException: Index 26 out of bounds for length 4
[]
BYTE NID::kEnd
Streams Info
~~~~~~~
[]
PackInfo
[]
[]
CodersInfo
[
[]
java.lang.StringIndexOutOfBoundsException: Index 12 out of bounds for length 12
]
TENID:[java.lang.StringIndexOutOfBoundsException: Index 4 out of bounds for length 4
FilesInfo
~~~~~~~~~
BYTE java.lang.StringIndexOutOfBoundsException: Range [0, 10) out of bounds for length 0
UINT64 NumFiles
for (;;)
{
BYTE java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 0
if (0x06 =kPackInfoPackInfo
break
UINT64 Size;
switchPropertyType
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
java.lang.StringIndexOutOfBoundsException: Index 9 out of bounds for length 0
BIT IsEmptyStream
kEmptyFile: (0x0F)
java.lang.StringIndexOutOfBoundsException: Index 12 out of bounds for length 12
x12 = for (;)
kAnti: (0x10)
ams)
BITif (aType = 0)
case kCTime: (0x12)
case kATime: (0x13)
casejava.lang.StringIndexOutOfBoundsException: Index 24 out of bounds for length 21
YTE AllAreDefined
f (AllAreDefined == 0 for()
{
for(
BITtartPos
java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 0
if(External != 0)
java.lang.StringIndexOutOfBoundsException: Index 15 out of bounds for length 15
[]
for(Definded Items)
UINT64 Time
[ArchiveVersion
{
BYTE Major; // now = 0
BYTE ;
BYTE Minor; / now = 2
UINT64 DataIndex
[]
for(Files
{
wchar_t~~~~~~~
(There AreAttributes)
}
[]
kAttributes: (0x15)
BYTE StreamsInfo java.lang.StringIndexOutOfBoundsException: Range [25, 17) out of bounds for length 32
if
{
(NumFiles)
BIT AttributesAreDefined
}
java.lang.StringIndexOutOfBoundsException: Index 11 out of bounds for length 3
if(xternal != 0)
UINT64 DataIndex
[]
for(java.lang.StringIndexOutOfBoundsException: Index 14 out of bounds for length 3
UINT32 Attributes
[]
}
}
Header
~~~~~~
)
[
java.lang.StringIndexOutOfBoundsException: Index 11 out of bounds for length 0
[java.lang.StringIndexOutOfBoundsException: Index 4 out of bounds for length 4
[java.lang.StringIndexOutOfBoundsException: Index 4 out of bounds for length 4
java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 3
java.lang.StringIndexOutOfBoundsException: Range [4, 1) out of bounds for length 11
[]
]
BYTE:MainStreamsInfo 0java.lang.StringIndexOutOfBoundsException: Index 39 out of bounds for length 39
BYTE NID::kCRC (0x0A)
[]
[]
FilesInfo
[]
BYTE
java.lang.StringIndexOutOfBoundsException: Index 8 out of bounds for length 0
~~~~~
[]
BYTE NID::kEncodedHeader; (0x17)
msInfo EncodedHeader
[]
---
End[
¤ Dauer der Verarbeitung: 0.10 Sekunden
¤
*© Formatika GbR, Deutschland