Wat is het PACK-bestandsformaat?
Een .pack-bestand is een Pack200-data-archiefcontainer die wordt gebruikt voor het opslaan van gecomprimeerde JAR-bestanden voor eenvoudiger downloaden via het netwerk. .pack-bestanden worden doorgaans opgeslagen met een extra .gz-achtervoegsel - de standaardbundel heet .jar.pack.gz en wordt geproduceerd door de pack200-opdrachtregeltool van Java.
Een JAR is een ZIP-archief dat ook dient als het uitvoerbare formaat voor de Java Virtual Machine. Pack200, gestandaardiseerd in 2004 onder JSR 200, hercodeert de constant-pools van JAR-class-bestanden met behulp van een gespecialiseerd binair algoritme; gecombineerd met GZIP kan een .pack.gz-bestand tot 60% kleiner zijn dan de originele JAR en daardoor aanzienlijk sneller te downloaden - het hoofddoel van het formaat voor Java Web Start en browser-applets.
Pack200 is nu verouderd. Oracle heeft de pack200- en unpack200-opdrachtregeltools in Java 11 (JEP 336, 2018) afgeschreven en ze volledig verwijderd in Java 14 (2020). Verouderde .pack- of .pack.gz-bestanden kunnen alleen worden gedecomprimeerd met een JDK 8-13-omgeving; de ruwe .pack-stream begint met de magic bytes 0xCAFED00D.
Beveiliging & veiligheid
RISICO: MEDIUMEen .pack zelf is inerte data, maar het decomprimeert naar een Java JAR die uitvoerbare bytecode bevat - pak alleen JAR's uit en voer ze alleen uit van bronnen die u vertrouwt, aangezien een kwaadaardige JAR willekeurige code kan uitvoeren onder de JRE. Pack200 was een bekend historisch aanvalsoppervlak (CVE's in de uitpakker), dus gebruik een actuele JDK-build bij het uitpakken. Vermijd downloadportals van derden voor „PACK-openers”; gebruik in plaats daarvan Oracle/Adoptium JDK's voor unpack200.
Formaatdetails
in een notendop- Git packfile (.pack) - Binnen .git/objects/pack slaat Git objecten op in binaire .pack-bestanden (met een .idx-index); beheerd door Git, nooit handmatig geopend.
- Minecraft / game resource pack (.pack) - Sommige games en modpacks gebruiken .pack voor gebundelde bronnen of texture-packs; de structuur is engine-specifiek (vaak op ZIP gebaseerd).
- Skype / app data pack (.pack) - Verschillende applicaties schrijven interne '.pack'-datablobs; de betekenis hangt volledig af van het programma.
Programma's die PACK-bestanden openen
Technische details
diepe specificaties| Formaat type | Binaire Pack200 gecomprimeerde-JAR-container |
| Magic number | 0xCAFED00D op byte-offset 0 in de ruwe .pack-stream; GZIP-header 0x1F8B op offset 0 in de gebruikelijke .pack.gz-vorm |
| Byte-volgorde | Big-endian |
| Compressie | Pack200 constant-pool hercoderingsalgoritme; buitenste GZIP/DEFLATE toegepast in de standaard .pack.gz-distributievorm |
| Compressieratio | Tot ~60% kleiner dan de equivalente gewone GZIP-gecomprimeerde JAR |
| MIME-type | application/x-java-pack200 |
| Specificatie | JSR 200 - Network Transfer Format for JAR Files (Java SE 5.0, geïntroduceerd in 2004) |
| Max archief-items | Erft de JAR/ZIP-limiet van 65.535 items |
| Versleuteling | Geen; bestaande JAR-code-ondertekeningen blijven behouden door pack200/unpack200 |
| Integriteitscontrole | GZIP CRC-32 op de .pack.gz buitenkant; JAR-handtekeningen onafhankelijk geverifieerd na uitpakken |
| Typische bestandsgrootte | 50 KB - 20 MB (altijd kleiner dan de bron-JAR die het codeert) |
| Status | Afgeschreven in Java 11 (JEP 336, 2018); pack200- en unpack200-tools verwijderd in Java 14 (2020) |
| Uitpak-tools | unpack200 (alleen JDK 8-13); ook 7-Zip op Windows voor inspectie |
| Primair gebruiksdoel | Minimaliseren van JAR-downloadgrootte voor Java Web Start-applicaties en browser-applets |
| Compatibele platforms | Windows, Linux, macOS - elk platform met JDK/JRE 8-13 geïnstalleerd |
| Uitgebracht | 2004 (Java SE 5.0 / J2SE 1.5 - JSR 200 'Network Transfer Format for JAR Files') |
| Laatste versie | Pack200 as specified through JSR 200; deprecated in Java 11 (2018), removed in Java 14 (2020) |
| Open standaard | Ja · royaltyvrij |
| Specificatie | docs.oracle.com |
PACK conversies
Community V&A
gevraagd door gebruikersNog geen vragen - wees de eerste om iets te vragen over PACK-bestanden.