Co to jest format pliku PACK?
Plik .pack to kontener archiwum danych Pack200 używany do przechowywania skompresowanych plików JAR w celu łatwiejszego pobierania przez sieć. Pliki .pack są zazwyczaj zapisywane z dodatkowym sufiksem .gz - standardowy pakiet dystrybucyjny nosi nazwę .jar.pack.gz i jest generowany przez narzędzie wiersza poleceń pack200 języka Java.
JAR to archiwum ZIP, które służy również jako format wykonywalny dla maszyny wirtualnej Java. Pack200, wystandaryzowany w 2004 roku w ramach JSR 200, ponownie koduje pule stałych (constant pools) plików klas JAR przy użyciu wyspecjalizowanego algorytmu binarnego; w połączeniu z GZIP, plik .pack.gz może być do 60% mniejszy niż oryginalny JAR, a co za tym idzie, znacznie szybszy do pobrania - co było głównym celem formatu dla Java Web Start i apletów przeglądarkowych.
Pack200 jest obecnie przestarzały. Oracle wycofało narzędzia wiersza poleceń pack200 i unpack200 w Java 11 (JEP 336, 2018) i całkowicie usunęło je w Java 14 (2020). Starsze pliki .pack lub .pack.gz można dekompresować tylko w środowisku JDK 8-13; surowy strumień .pack zaczyna się od „magic number” 0xCAFED00D.
Bezpieczeństwo
RYZYKO: MEDIUMSam plik .pack to dane obojętne, ale dekompresuje się do pliku Java JAR zawierającego wykonywalny kod bajtowy - rozpakowuj i uruchamiaj pliki JAR tylko z zaufanych źródeł, ponieważ złośliwy JAR może uruchomić dowolny kod w środowisku JRE. Pack200 był znanym historycznym punktem ataku (luki CVE w dekompresorze), dlatego podczas rozpakowywania używaj aktualnej kompilacji JDK. Unikaj zewnętrznych portali z „programami do otwierania PACK”; zamiast tego używaj JDK od Oracle/Adoptium dla narzędzia unpack200.
Szczegóły formatu
w pigułce- Git packfile (.pack) - Wewnątrz .git/objects/pack, Git przechowuje obiekty w binarnych plikach .pack (z indeksem .idx); zarządzane przez Git, nigdy nie otwierane ręcznie.
- Minecraft / paczka zasobów gry (.pack) - Niektóre gry i mody używają .pack dla spakowanych zasobów lub tekstur; struktura zależy od silnika (często oparta na ZIP).
- Skype / paczka danych aplikacji (.pack) - Różne aplikacje zapisują wewnętrzne bloki danych „.pack”; znaczenie zależy całkowicie od programu.
Programy otwierające pliki PACK
Szczegóły techniczne
specyfikacja| Typ formatu | Binarny kontener skompresowanego JAR Pack200 |
| Magic number | 0xCAFED00D na offsecie 0 w surowym strumieniu .pack; nagłówek GZIP 0x1F8B na offsecie 0 w powszechnej formie .pack.gz |
| Kolejność bajtów | Big-endian |
| Kompresja | Algorytm ponownego kodowania puli stałych Pack200; zewnętrzny GZIP/DEFLATE stosowany w standardowej formie dystrybucyjnej .pack.gz |
| Stopień kompresji | Do ok. 60% mniejszy niż odpowiedni JAR skompresowany zwykłym GZIP |
| Typ MIME | application/x-java-pack200 |
| Specyfikacja | JSR 200 - Network Transfer Format for JAR Files (Java SE 5.0, wprowadzony w 2004) |
| Maksymalna liczba wpisów | Dziedziczy limit 65 535 wpisów formatu JAR/ZIP |
| Szyfrowanie | Brak; istniejące podpisy cyfrowe kodu JAR są zachowywane przez pack200/unpack200 |
| Kontrola integralności | GZIP CRC-32 w zewnętrznej powłoce .pack.gz; podpisy JAR weryfikowane niezależnie po rozpakowaniu |
| Typowy rozmiar pliku | 50 KB - 20 MB (zawsze mniejszy niż źródłowy JAR, który koduje) |
| Status | Wycofany w Java 11 (JEP 336, 2018); narzędzia pack200 i unpack200 usunięte w Java 14 (2020) |
| Narzędzia do rozpakowania | unpack200 (tylko JDK 8-13); także 7-Zip w systemie Windows do inspekcji |
| Główny przypadek użycia | Minimalizacja rozmiaru pobierania plików JAR dla aplikacji Java Web Start i apletów przeglądarkowych |
| Kompatybilne platformy | Windows, Linux, macOS - każda platforma z zainstalowanym JDK/JRE 8-13 |
| Wydano | 2004 (Java SE 5.0 / J2SE 1.5 - JSR 200 'Network Transfer Format for JAR Files') |
| Najnowsza wersja | Pack200 as specified through JSR 200; deprecated in Java 11 (2018), removed in Java 14 (2020) |
| Otwarty standard | Tak · bezpłatny (royalty-free) |
| Specyfikacja | docs.oracle.com |
Konwersje PACK
Pytania i odpowiedzi społeczności
pytania użytkownikówBrak pytań - bądź pierwszą osobą, która zapyta o pliki PACK.