¿Qué es el formato de archivo PACK?
Un archivo .pack es un contenedor de archivo de datos Pack200 utilizado para almacenar archivos JAR comprimidos para facilitar su descarga por red. Los archivos .pack se guardan típicamente con un sufijo adicional .gz - el paquete de entrega estándar se denomina .jar.pack.gz y es producido por la herramienta de línea de comandos pack200 de Java.
Un JAR es un archivo ZIP que también sirve como formato ejecutable para la máquina virtual Java. Pack200, estandarizado en 2004 bajo JSR 200, re-codifica los pools de constantes de los archivos de clase de un JAR utilizando un algoritmo binario especializado; combinado con GZIP, un archivo .pack.gz puede ser hasta un 60% más pequeño que el JAR original y, por lo tanto, significativamente más rápido de descargar - el objetivo principal del formato para la entrega de Java Web Start y applets de navegador.
Pack200 está ahora obsoleto. Oracle declaró obsoletas las herramientas de línea de comandos pack200 y unpack200 en Java 11 (JEP 336, 2018) y las eliminó por completo en Java 14 (2020). Los archivos heredados .pack o .pack.gz solo pueden descomprimirse utilizando un entorno JDK 8-13; el flujo .pack puro comienza con el número mágico 0xCAFED00D.
Seguridad y protección
RIESGO: MEDIUMUn archivo .pack en sí mismo son datos inertes, pero se descomprime en un JAR de Java que contiene bytecode ejecutable - solo desempaca y ejecuta JARs de fuentes en las que confíes, ya que un JAR malicioso puede ejecutar código arbitrario bajo el JRE. Pack200 fue una superficie de ataque histórica conocida (CVEs en el descompresor), así que use una compilación de JDK actual al desempacar. Evite los portales de descarga de terceros de «abridores de PACK»; use en su lugar JDKs de Oracle/Adoptium para unpack200.
Detalles del formato
en pocas palabras- Git packfile (.pack) - Dentro de .git/objects/pack, Git almacena objetos en archivos .pack binarios (con un índice .idx); gestionado por Git, nunca se abre manualmente.
- Minecraft / paquete de recursos de juegos (.pack) - Algunos juegos y paquetes de mods usan .pack para recursos agrupados o paquetes de texturas; la estructura es específica del motor (frecuentemente basada en ZIP).
- Skype / paquete de datos de aplicación (.pack) - Varias aplicaciones escriben bloques de datos internos «.pack»; el significado depende enteramente del programa.
Programas que abren archivos PACK
Detalles técnicos
especificación profunda| Tipo de formato | Contenedor binario de JAR comprimido con Pack200 |
| Número mágico | 0xCAFED00D en el desplazamiento de byte 0 en el flujo .pack puro; cabecera GZIP 0x1F8B en el desplazamiento 0 en la forma común .pack.gz |
| Orden de bytes | Big-endian |
| Compresión | Algoritmo de re-codificación de pool de constantes Pack200; GZIP/DEFLATE exterior aplicado en la forma de entrega estándar .pack.gz |
| Relación de compresión | Hasta un ~60% más pequeño que el JAR equivalente comprimido solo con GZIP |
| Tipo MIME | application/x-java-pack200 |
| Especificación | JSR 200 - Formato de transferencia de red para archivos JAR (Java SE 5.0, introducido en 2004) |
| Máximo de entradas de archivo | Hereda el límite de 65.535 entradas de JAR/ZIP |
| Cifrado | Ninguno; las firmas de código JAR existentes se preservan y mantienen durante el proceso de pack200/unpack200 |
| Comprobación de integridad | GZIP CRC-32 en el contenedor exterior .pack.gz; firmas JAR verificadas independientemente después de desempacar |
| Tamaño de archivo típico | 50 KB - 20 MB (siempre más pequeño que el JAR de origen que codifica) |
| Estado | Obsoleto en Java 11 (JEP 336, 2018); herramientas pack200 y unpack200 eliminadas en Java 14 (2020) |
| Herramientas de descompresión | unpack200 (solo JDK 8-13); también 7-Zip en Windows para inspección |
| Caso de uso principal | Minimizar el tamaño de descarga de JAR para aplicaciones Java Web Start y applets de navegador |
| Plataformas compatibles | Windows, Linux, macOS - cualquier plataforma con JDK/JRE 8-13 instalado |
| Lanzado | 2004 (Java SE 5.0 / J2SE 1.5 - JSR 200 'Network Transfer Format for JAR Files') |
| Última versión | Pack200 as specified through JSR 200; deprecated in Java 11 (2018), removed in Java 14 (2020) |
| Estándar abierto | Sí · libre de regalías |
| Especificación | docs.oracle.com |
Conversiones de PACK
Preguntas y respuestas de la comunidad
preguntado por usuariosAún no hay preguntas; sea el primero en preguntar sobre los archivos PACK.