Расширение имени файла | .dmg, .smi, .img |
---|---|
Тип интернет-СМИ | приложение/x-apple-образ диска |
Единый идентификатор типа (UTI) |
|
Разработано | Apple Inc. |
Тип формата | Образ диска |
Apple [1] Disk Image — это формат образа диска , обычно используемый операционной системой macOS . При открытии Apple Disk Image монтируется как том в Finder .
Образ диска Apple может быть структурирован в соответствии с одним из нескольких фирменных форматов образа диска, включая Universal Disk Image Format (UDIF) из Mac OS X и New Disk Image Format (NDIF) из Mac OS 9. Имя файла образа диска Apple обычно имеет расширение «.dmg». Образ диска — это сжатая копия содержимого диска или папки. Образы дисков имеют расширение .dmg в конце своего имени. Чтобы увидеть содержимое образа диска, необходимо сначала открыть образ диска, чтобы он появился на рабочем столе или в окне Finder.
Файлы образа диска Apple публикуются с типом MIME application /x-apple-diskimage .
Внутри этих образов дисков могут содержаться различные файловые системы , а также поддерживается создание гибридных образов оптических носителей , содержащих несколько файловых систем. [1] Некоторые из поддерживаемых файловых систем включают иерархическую файловую систему (HFS), HFS Plus (HFS+), таблицу размещения файлов (FAT), ISO9660 и универсальный дисковый формат (UDF). [1] [2]
Образы дисков Apple можно создавать с помощью утилит, входящих в комплект Mac OS X, в частности Disk Copy в Mac OS X v10.2 и более ранних версиях и Disk Utility в Mac OS X v10.3 и более поздних версиях. Эти утилиты также могут использовать файлы образов дисков Apple в качестве образов для записи CD и DVD. Файлами образов дисков также можно управлять через интерфейс командной строки с помощью hdiutilутилиты. [3]
В Mac OS X v10.2 .3 Apple представила Compressed Disk Images [4] и Internet-Enabled Disk Images для использования с утилитой Apple Disk Copy, которая позже была интегрирована в Disk Utility в 10.3. Приложение Disk Copy имело возможность отображать многоязычное лицензионное соглашение перед монтированием образа диска. Образ не будет смонтирован, если пользователь не согласится с лицензией. [5]
Образ диска Apple обеспечивает надежную защиту паролем, а также сжатие файлов , и, следовательно, выполняет функции как безопасности, так и распространения файлов; такой образ диска чаще всего используется для распространения программного обеспечения через Интернет.
Apple изначально создала свои форматы образов дисков, поскольку ресурсная вилка , используемая приложениями Mac, не могла легко передаваться по смешанным сетям, таким как те, что составляют Интернет. Даже когда использование ресурсных вилок пошло на спад с выходом Mac OS X, образы дисков оставались стандартным форматом распространения программного обеспечения. Образы дисков позволяют дистрибьютору контролировать представление окна Finder, что обычно используется для указания пользователю скопировать приложение в нужную папку.
Предыдущая версия формата, предназначенная только для образов дискет , обычно называется форматом «Disk Copy 4.2» по названию версии утилиты Disk Copy , которая использовалась для обработки этих образов. [1] Похожий формат, который поддерживал сжатие образов дискет, называется DART. [1] [6]
New Disk Image Format (NDIF) был предыдущим форматом образа диска по умолчанию в Mac OS 9 , [1] и образы дисков с этим форматом обычно имеют расширение .img (не путать с файлами образа диска raw .img ) или .smi . Файлы с расширением .smi на самом деле являются приложениями, которые монтируют встроенный образ диска, таким образом, «самомонтируемый образ», предназначенный только для Mac OS 9 и более ранних версий. [7] [2]
Universal Disk Image Format (UDIF) — это собственный формат образа диска для Mac OS X. Образы дисков в этом формате обычно имеют расширение .dmg . [1]
Apple не выпустила никакой документации по формату, но попытки реверс-инжиниринга частей формата были успешными. Зашифрованный слой был реверс-инжинирингован в реализации под названием VileFault (спунеризм FileVault ) . [8]
Файлы образа диска Apple по сути являются сырыми образами дисков (т. е. содержат данные блоков) с некоторыми добавленными метаданными, опционально с одним или двумя примененными слоями, которые обеспечивают сжатие и шифрование. В , эти слои называются CUDIFEncoding и CEncryptedEncoding. [1]hdiutil
UDIF поддерживает внутреннее сжатие ADC (старый фирменный формат сжатия Apple), zlib , bzip2 (начиная с Mac OS X v10.4 ), LZFSE (начиная с Mac OS X v10.11 ), [9] и lzma (начиная с macOS v10.15 ).
Метаданные UDIF находятся в конце образа диска после данных. Этот трейлер можно описать с помощью следующей структуры C. [10] Все значения имеют big-endian ( порядок байтов PowerPC )
typedef struct { uint8_t Signature [ 4 ]; // magic 'koly' uint32_t Version ; // 4 (по состоянию на 2013 год) uint32_t HeaderSize ; // sizeof(this) = 512 (по состоянию на 2013 год) uint32_t Flags ; uint64_t RunningDataForkOffset ; uint64_t DataForkOffset ; // обычно 0, начало файла uint64_t DataForkLength ; uint64_t RsrcForkOffset ; // смещение и длина ответвления ресурса uint64_t RsrcForkLength ; uint32_t SegmentNumber ; // Обычно 1, может быть 0 uint32_t SegmentCount ; // Обычно 1, может быть 0 uuid_t SegmentID ; uint32_t DataChecksumType ; // Контрольная сумма ветвления данных uint32_t DataChecksumSize ; uint32_t DataChecksum [ 32 ]; uint64_t XMLOffset ; // Положение списка свойств XML в файле uint64_t XMLLength ; uint8_t Reserved1 [ 120 ]; uint32_t ChecksumType ; // Основная контрольная сумма uint32_t ChecksumSize ; uint32_t Checksum [ 32 ]; uint32_t ImageVariant ; // Неизвестно, обычно 1 uint64_t SectorCount ; uint32_t reserved2 ; uint32_t reserved3 ; uint32_t reserved4 ; } __attribute__ (( packed , scalar_storage_order ( "big-endian" ))) UDIFResourceFile ;
XML plist содержит blkx
ключ (blocks) с информацией о том, как выделяется предыдущая ветка данных. Основные данные хранятся в блоке base64 с использованием таблиц, идентифицированных магическим 'mish'
. Эта 'mish'
структура содержит таблицу о блоках данных, а также положение и длину каждого «куска» (обычно только один кусок, но сжатие создаст больше). [10] Информация о ветке данных и ресурсов, вероятно, унаследована от NDIF.
Уровень шифрования существует в двух версиях. Версия 1 имеет трейлер в конце файла, а версия 2 (по умолчанию с OS X 10.5) помещает его в начало. Является ли шифрование слоем снаружи или внутри метаданных blkx
(UDIF) неясно из документации по обратному проектированию, но, судя по vfcrack
демонстрации, он, вероятно, снаружи. [8]
Есть несколько вариантов извлечения файлов или монтирования фирменного формата Apple Disk Image. Вот некоторые кроссплатформенные утилиты преобразования:
Большинство файлов dmg не зашифрованы. Поскольку метаданные dmg находятся в конце, программа, не понимающая файлы dmg, может, тем не менее, прочитать их, как если бы это был обычный образ диска, если внутри есть поддержка файловой системы. Инструменты с такой емкостью включают:
mount
(например ). [14] [15]mount -o loop,ro -t hfsplus imagefile.dmg /mnt/mountpoint
Инструменты со специальной поддержкой DMG включают: