Apple [1] Disk Image es un formato de imagen de disco comúnmente utilizado por el sistema operativo macOS . Cuando se abre, una imagen de disco de Apple se monta como un volumen dentro del Finder .
Una imagen de disco de Apple se puede estructurar según uno de varios formatos de imagen de disco propietarios, incluido el formato de imagen de disco universal (UDIF) de Mac OS X y el nuevo formato de imagen de disco (NDIF) de Mac OS 9 . El nombre de un archivo de imagen de disco de Apple generalmente tiene ".dmg" como extensión. Una imagen de disco es una copia comprimida del contenido de un disco o carpeta. Las imágenes de disco tienen .dmg al final de sus nombres. Para ver el contenido de una imagen de disco, primero debe abrir la imagen del disco para que aparezca en el escritorio o en una ventana del Finder.
Los archivos de imagen de disco de Apple se publican con un tipo MIME de aplicación/x-apple-diskimage .
Dentro de estas imágenes de disco se pueden contener diferentes sistemas de archivos y también hay soporte para crear imágenes de medios ópticos híbridos que contienen múltiples sistemas de archivos. [1] Algunos de los sistemas de archivos admitidos incluyen el sistema de archivos jerárquico (HFS), HFS Plus (HFS+), tabla de asignación de archivos (FAT), ISO9660 y formato de disco universal (UDF). [1] [2]
Las imágenes de disco de Apple se pueden crear utilizando utilidades incluidas con Mac OS X, específicamente Copia de disco en Mac OS X v10.2 y versiones anteriores y Utilidad de discos en Mac OS X v10.3 y versiones posteriores. Estas utilidades también pueden utilizar archivos de imagen de disco de Apple como imágenes para grabar CD y DVD. Los archivos de imagen de disco también se pueden administrar a través de la interfaz de línea de comandos usando la hdiutilutilidad. [3]
En Mac OS X v10.2 .3, Apple introdujo imágenes de disco comprimidas [4] e imágenes de disco habilitadas para Internet para usar con la utilidad Disk Copy de Apple, que luego se integró en Disk Utility en 10.3. La aplicación Disk Copy tenía la capacidad de mostrar un acuerdo de licencia de software multilingüe antes de montar una imagen de disco. La imagen no se montará a menos que el usuario indique que está de acuerdo con la licencia. [5]
Una imagen de disco de Apple permite la protección segura con contraseña, así como la compresión de archivos y, por lo tanto, cumple funciones de seguridad y distribución de archivos; Esta imagen de disco se utiliza más comúnmente para distribuir software a través de Internet.
Apple creó originalmente sus formatos de imagen de disco porque la bifurcación de recursos utilizada por las aplicaciones de Mac no podía transferirse fácilmente a través de redes mixtas como las que conforman Internet. Incluso cuando el uso de bifurcaciones de recursos disminuyó con Mac OS X, las imágenes de disco siguieron siendo el formato de distribución de software estándar. Las imágenes de disco permiten al distribuidor controlar la presentación de la ventana en el Finder, que se utiliza comúnmente para indicar al usuario que copie la aplicación en la carpeta correcta.
Una versión anterior del formato, destinada únicamente a imágenes de disquetes , generalmente se denomina formato "Disk Copy 4.2", en honor a la versión de la utilidad Disk Copy que se utilizó para manejar estas imágenes. [1] Un formato similar que admitía la compresión de imágenes de disquetes se llama DART. [ dieciséis]
El nuevo formato de imagen de disco (NDIF) era el formato de imagen de disco predeterminado anterior en Mac OS 9 , [1] y las imágenes de disco con este formato generalmente tienen un archivo .img (que no debe confundirse con archivos de imagen de disco .img sin formato ) o .smi . extensión. Los archivos con la extensión .smi son en realidad aplicaciones que montan una imagen de disco incrustada, por lo tanto una "imagen de automontaje", destinada únicamente a Mac OS 9 y versiones anteriores. [7] [2]
El formato de imagen de disco universal (UDIF) es el formato de imagen de disco nativo para Mac OS X. Las imágenes de disco en este formato suelen tener una extensión .dmg . [1]
Apple no ha publicado ninguna documentación sobre el formato, pero los intentos de realizar ingeniería inversa en partes del formato han tenido éxito. La capa cifrada fue sometida a ingeniería inversa en una implementación llamada VileFault (un Spoonerismo de FileVault ). [8]
Los archivos de imagen de disco de Apple son esencialmente imágenes de disco sin formato (es decir, contienen datos en bloque) con algunos metadatos agregados, opcionalmente con una o dos capas aplicadas que brindan compresión y cifrado. En , estas capas se denominan CUDIFEncoding y CEncryptedEncoding. [1]hdiutil
UDIF admite ADC (un antiguo formato de compresión propietario de Apple), zlib , bzip2 (a partir de Mac OS X v10.4 ), LZFSE (a partir de Mac OS X v10.11 ), [9] y lzma (a partir de macOS v10. 15 ) compresión interna.
Los metadatos UDIF se encuentran al final de la imagen del disco después de los datos. Este tráiler se puede describir utilizando la siguiente estructura C. [10] Todos los valores son big-endian ( ordenamiento de bytes de PowerPC )
estructura typedef { uint8_t Firma [ 4 ]; // versión mágica 'koly' uint32_t ; // 4 (a partir de 2013) uint32_t HeaderSize ; // tamaño de (esto) = 512 (a partir de 2013) uint32_t Banderas ; uint64_t RunningDataForkOffset ; uint64_t DataForkOffset ; // normalmente 0, comienzo del archivo uint64_t DataForkLength ; uint64_t RsrcForkOffset ; // desplazamiento y longitud de la bifurcación de recursos uint64_t RsrcForkLength ; uint32_t Número de segmento ; // Generalmente 1, puede ser 0 uint32_t SegmentCount ; // Generalmente 1, puede ser 0 uuid_t SegmentID ; uint32_t Tipo de suma de comprobación de datos ; // Suma de comprobación de bifurcación de datos uint32_t DataChecksumSize ; uint32_t Suma de comprobación de datos [ 32 ]; uint64_t XMLOffset ; // Posición de la lista de propiedades XML en el archivo uint64_t XMLLength ; uint8_t Reservado1 [ 120 ]; uint32_t Tipo de suma de comprobación ; // Suma de comprobación maestra uint32_t ChecksumSize ; uint32_t Suma de comprobación [ 32 ]; uint32_t Variante de imagen ; // Desconocido, comúnmente 1 uint64_t SectorCount ; uint32_t reservado2 ; uint32_t reservado3 ; uint32_t reservado4 ; } __attribute__ (( empaquetado , escalar_storage_order ( "big-endian" ))) UDIFResourceFile ;
La lista XML contiene una blkx
clave (bloques), con información sobre cómo se asigna la bifurcación de datos anterior. Los datos principales se almacenan en un bloque base64, utilizando tablas identificadas por la magia 'mish'
. Esta 'mish'
estructura contiene una tabla sobre bloques de datos y la posición y longitud de cada "fragmento" (normalmente sólo un fragmento, pero la compresión creará más). [10] La información de la bifurcación de datos y recursos probablemente se hereda del NDIF.
La capa de cifrado viene en dos versiones. La versión 1 tiene un avance al final del archivo, mientras que la versión 2 (predeterminada desde OS X 10.5) lo coloca al principio. Si el cifrado es una capa fuera o dentro de los blkx
metadatos (UDIF) no está claro en la documentación de ingeniería inversa, pero a juzgar por la vfcrack
demostración, probablemente esté afuera. [8]
Hay pocas opciones disponibles para extraer archivos o montar el formato propietario de imagen de disco de Apple. Algunas utilidades de conversión multiplataforma son:
La mayoría de los archivos dmg no están cifrados. Debido a que los metadatos dmg se encuentran al final, un programa que no comprenda los archivos dmg puede leerlos como si fuera una imagen de disco normal, siempre que haya soporte para el sistema de archivos interno. Las herramientas con este tipo de capacidad incluyen:
mount
(por ejemplo ). [14] [15]mount -o loop,ro -t hfsplus imagefile.dmg /mnt/mountpoint
Las herramientas con soporte específico para dmg incluyen: