Microsoft Compress
Microsoft Compress ist die Bezeichnung zweier früher Komprimierungsformate von Microsoft, die überwiegend für deren eigene Produkte genutzt wurde, um die Größe der Installationsdateien und damit die Anzahl der Disketten zu senken.
Mit diesen Formaten können nur einzelne Dateien komprimiert werden, das im Gegensatz zum späteren CAB-Dateiformat, das auch die Komprimierung mehrerer Dateien und Verzeichnisse unterstützt. Komprimierte Dateien lassen sich in der Regel daran erkennen, dass das letzte Zeichen der Dateierweiterung durch einen Unterstrich oder ein Dollar-Zeichen ersetzt ist (also DATEI.EX_
oder DATEI.EX$
statt DATEI.EXE
). Dateien dieser Formate lassen sich mit dem Programm COMPRESS.EXE
erstellen, das verschiedenen Produkten (etwa frühen Versionen von Visual C++) beiliegt. Das Entpacken ist ebenso mit dem Programm EXPAND.EXE
möglich. (Heutige Versionen von EXPAND.EXE
unterstützen diese alten Formate nicht mehr und können ausschließlich Dateien aus CAB-Archiven extrahieren.)
Beide Formate waren ursprünglich undokumentiert, konnten aber durch Reverse Engineering rekonstruiert werden. Für Linux wurde das Paket libmspack entwickelt, das beide Formate entpacken kann.
SZDD
[Bearbeiten | Quelltext bearbeiten]Das ältere Format wurde erstmals 1990 eingesetzt und ist am magischen Wort SZDD
am Dateibeginn erkennbar.
Die Dateistruktur ist sehr einfach: nach dem magischen Wort folgt das Kompressionsformat (nur eins, nämlich A
), das letzte Zeichen der Dateierweiterung und die Dateigröße als 32-Bit-Integer. Anschließend folgt unmittelbar der komprimierte Datenstrom, genutzt wird der LZSS-Algorithmus.
KWAJ
[Bearbeiten | Quelltext bearbeiten]Das neuere Format kam erstmals 1993 zum Einsatz und ist am magischen Wort KWAJ
am Dateibeginn erkennbar.
Das Dateiformat ist im Gegensatz zum früheren Format wesentlich komplizierter, so wird nach dem magischen Wort der Kompressionsalgorithmus als 16-Bit-Integer angegeben. Das Format unterstützt fünf Kompressionsalgorithmen:
- unkomprimiert
- unkomprimiert, aber mit dem Wert
0xFF
XOR-codiert - LZSS
- ein proprietärer Komprimierungsalgorithmus von Microsoft, der LZSS und Huffman kombiniert
- CAB
Danach folgt der Offset zum komprimierten Datenstrom als 16-Bit-Integer. Anschließend werden noch optionale Header-Erweiterungen unterstützt, mit denen zusätzliche Metadaten angegeben werden können, z. B. die Dateigröße oder der volle Dateiname.