DMG Apple Disk Image

Apple Disk Image adalah format gambar disk yang biasa digunakan oleh sistem operasi macOS. Saat dibuka, Apple Disk Image dipasang sebagai volume di dalam Finder.

Gambar Disk Apple dapat disusun menurut salah satu dari beberapa format gambar disk berpemilik, termasuk Universal Disk Image Format (UDIF) dari Mac OS X dan New Disk Image Format (NDIF) dari Mac OS 9. Nama file gambar disk Apple biasanya memiliki “.dmg” sebagai ekstensinya. Gambar disk adalah salinan terkompresi dari konten disk atau folder. Gambar disk memiliki .dmg di akhir namanya. Untuk melihat isi disk image, Anda harus terlebih dahulu membuka disk image agar muncul di desktop atau di jendela Finder.

Fitur
File Apple Disk Image diterbitkan dengan tipe MIME application/x-apple-diskimage.

Sistem file yang berbeda dapat dimuat di dalam gambar disk ini, dan ada juga dukungan untuk membuat gambar media optik hibrid yang berisi banyak sistem file. Beberapa sistem file yang didukung termasuk Hierarchical File System (HFS), HFS Plus (HFS+), File Allocation Table (FAT), ISO9660, dan Universal Disk Format (UDF).

Gambar Disk Apple dapat dibuat menggunakan utilitas yang dibundel dengan Mac OS X, khususnya Disk Copy di Mac OS X v10.2 dan versi lebih lama dan Disk Utility di Mac OS X v10.3 dan versi lebih baru. Utilitas ini juga dapat menggunakan file image disk Apple sebagai image untuk membakar CD dan DVD. File gambar disk juga dapat dikelola melalui antarmuka baris perintah menggunakan utilitas hdiutil.[3]

Di Mac OS X v10.2.3, Apple memperkenalkan Compressed Disk Images[4] dan Internet-Enabled Disk Images untuk digunakan dengan utilitas Apple Disk Copy, yang kemudian diintegrasikan ke dalam Disk Utility di 10.3. Aplikasi Disk Copy memiliki kemampuan untuk menampilkan perjanjian lisensi perangkat lunak multibahasa sebelum memasang image disk. Gambar tidak akan dipasang kecuali pengguna menunjukkan persetujuan dengan lisensi.

Gambar Disk Apple memungkinkan perlindungan kata sandi yang aman serta kompresi file, dan karenanya melayani fungsi keamanan dan distribusi file; gambar disk semacam itu paling sering digunakan untuk mendistribusikan perangkat lunak melalui Internet.

Sejarah
Apple awalnya membuat format gambar disknya karena garpu sumber daya yang digunakan oleh aplikasi Mac tidak dapat dengan mudah ditransfer melalui jaringan campuran seperti yang membentuk Internet. Meskipun penggunaan garpu sumber daya menurun dengan Mac OS X, gambar disk tetap menjadi format distribusi perangkat lunak standar. Gambar disk memungkinkan distributor untuk mengontrol presentasi jendela Finder, yang biasanya digunakan untuk menginstruksikan pengguna untuk menyalin aplikasi ke folder yang benar.

Versi format sebelumnya, hanya ditujukan untuk image floppy disk, biasanya disebut sebagai format “Disk Copy 4.2”, setelah versi utilitas Disk Copy yang digunakan untuk menangani image ini Format serupa yang mendukung kompresi gambar floppy disk disebut DART.

Format Gambar Disk Baru (NDIF) adalah format gambar disk default sebelumnya di Mac OS 9, dan gambar disk dengan format ini umumnya memiliki file .img (jangan bingung dengan file gambar disk .img mentah) atau file .smi perpanjangan. Berkas dengan ekstensi .smi sebenarnya adalah aplikasi yang memasang image disk tertanam, sehingga disebut “Self Mounting Image”, hanya ditujukan untuk Mac OS 9 dan sebelumnya.

Universal Disk Image Format (UDIF) adalah format gambar disk format asli untuk Mac OS X. Gambar disk dalam format ini biasanya memiliki ekstensi .dmg

Format file

Apple belum merilis dokumentasi apa pun tentang format tersebut, tetapi upaya untuk merekayasa balik bagian dari format tersebut telah berhasil. Lapisan terenkripsi direkayasa balik dalam implementasi yang disebut VileFault (spoonerisme dari FileVault).

File gambar disk Apple pada dasarnya adalah gambar disk mentah (yaitu berisi data blok) dengan beberapa metadata tambahan, secara opsional dengan satu atau dua lapisan yang diterapkan yang menyediakan kompresi dan enkripsi. Di hdiutil, lapisan ini disebut CUDIFEncoding dan CEncryptedEncoding

UDIF mendukung ADC (format kompresi lama milik Apple)

Metadata

The UDIF metadata is found at the end of the disk image following the data. This trailer can be described using the following C structure All values are big-endian (PowerPC byte ordering)

typedef struct {
  uint8_t  Signature[4];           // magic 'koly'
  uint32_t Version;                // 4 (as of 2013)
  uint32_t HeaderSize;             // sizeof(this) =  512 (as of 2013)
  uint32_t Flags;                 
  uint64_t RunningDataForkOffset;
  uint64_t DataForkOffset;         // usually 0, beginning of file
  uint64_t DataForkLength;
  uint64_t RsrcForkOffset;         // resource fork offset and length
  uint64_t RsrcForkLength;        
  uint32_t SegmentNumber;          // Usually 1, can be 0
  uint32_t SegmentCount;           // Usually 1, can be 0
  uuid_t   SegmentID; 
  uint32_t DataChecksumType;       // Data fork checksum
  uint32_t DataChecksumSize;
  uint32_t DataChecksum[32];
  uint64_t XMLOffset;              // Position of XML property list in file
  uint64_t XMLLength; 
  uint8_t  Reserved1[120];
  uint32_t ChecksumType;           // Master checksum
  uint32_t ChecksumSize;
  uint32_t Checksum[32];
  uint32_t ImageVariant;           // Unknown, commonly 1
  uint64_t SectorCount;
  uint32_t reserved2;
  uint32_t reserved3;
  uint32_t reserved4;
} __attribute__((packed, scalar_storage_order("big-endian"))) UDIFResourceFile;

The XML plist contains a blkx (blocks) key, with information about how the preceding data fork is allocated. The main data is stored in a base64 block, using tables identified by the magic 'mish'. This 'mish' structure contains a table about blocks of data and the position and lengths of each “chunk” (usually only one chunk, but compression will create more) The data and resource fork information is probably inherited from NDIF.

, zlib, bzip2 (pada Mac OS X v10.4), LZFSE (pada Mac OS X v10.11), dan lzma (pada macOS v10. 15) kompresi internal

Enkripsi
Lapisan enkripsi hadir dalam dua versi. Versi 1 memiliki trailer di akhir file, sedangkan versi 2 (default sejak OS X 10.5) menempatkannya di awal. Apakah enkripsi adalah lapisan di luar atau di dalam metadata blkx (UDIF) tidak jelas dari dokumentasi yang direkayasa balik, tetapi menilai dari demonstrasi vfcrack mungkin di luar

Keperluan
Ada beberapa pilihan yang tersedia untuk mengekstrak file atau me-mount format Apple Disk Image. Beberapa utilitas konversi lintas platform adalah:

  • dmg2img awalnya ditulis dalam Perl; namun, versi Perl tidak lagi dipertahankan, dan proyek ditulis ulang dalam C. Ini mengekstrak disk image mentah dari DMG, tanpa menangani sistem file di dalamnya. Gambar terkompresi ADC UDIF (UDCO) telah didukung sejak versi 1.5.
  • DMGEXtractor ditulis dalam Java dengan antarmuka pengguna grafis (GUI), dan mendukung fitur dmg yang lebih canggih termasuk gambar terenkripsi AES-128 tetapi bukan gambar UDCO.
  • Kit Detektif. Hanya menangani format DMG, HFS+, dan APFS yang tidak dikompresi.

Sebagian besar file dmg tidak terenkripsi. Karena metadata dmg ditemukan pada akhirnya, program yang tidak memahami file dmg tetap dapat membacanya seolah-olah itu adalah disk image biasa, selama ada dukungan untuk sistem file di dalamnya. Alat dengan kapasitas semacam ini meliputi:

  • Lintas platform: 7-zip (HFS/HFS+), PeaZip (HFS/HFS+).
  • Windows: UltraISO, IsoBuster, MacDrive (HFS/HFS+).
  • Seperti Unix: cdrecord dan mount (misalnya mount -o loop,ro -t hfsplus imagefile.dmg /mnt/mountpoint).

Alat dengan dukungan dmg khusus meliputi:

  • Jendela:
    Transmac dapat menangani file UDIF .dmg dan sparsebundle, serta HFS/HFS+ dan APFS. Tidak diketahui apakah itu menangani enkripsi. Ini dapat digunakan untuk membuat penginstal macOS yang dapat di-boot di bawah Windows.
    Penampil Gambar Disk DMG Apple gratis juga ada, tetapi tidak diketahui berapa banyak yang sebenarnya didukungnya.
  • Seperti Unix:
    darling-dmg adalah modul FUSE yang memungkinkan pemasangan file DMG dengan mudah di Linux. Ini mendukung UDIF dan HFS/HFS+