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.
Apple Disk Image dapat disusun berdasarkan salah satu dari beberapa format image disk eksklusif, termasuk Universal Disk Image Format (UDIF) dari Mac OS X dan New Disk Image Format (NDIF) dari Mac OS 9. Nama file image 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.[1] Beberapa sistem file yang didukung termasuk Hierarchical File System (HFS), HFS Plus (HFS+), File Allocation Table (FAT), ISO9660, dan Universal Disk Format (UDF).[1][2]
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.[5]
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.[1] Format serupa yang mendukung kompresi gambar floppy disk disebut DART.[1][6]
Format Gambar Disk Baru (NDIF) adalah format gambar disk default sebelumnya di Mac OS 9,[1] 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.[7][2]
Universal Disk Image Format (UDIF) adalah format gambar disk format asli untuk Mac OS X. Gambar disk dalam format ini biasanya memiliki ekstensi .dmg.[1]
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).[8]
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.[1]
UDIF mendukung ADC (format kompresi lama milik Apple), zlib, bzip2 (pada Mac OS X v10.4), LZFSE (pada Mac OS X v10.11),[9] dan lzma (pada macOS v10. 15) kompresi secara internal.
Metadata
Metadata UDIF ditemukan di akhir citra disk setelah data. Cuplikan ini dapat dideskripsikan menggunakan struktur C berikut.[10] Semua nilai adalah big-endian (pengurutan byte PowerPC)
typedef struct {
tanda tangan uint8_t[4]; // sihir ‘koly’
Versi uint32_t; // 4 (per 2013)
uint32_t Ukuran Header; // sizeof(ini) = 512 (per 2013)
uint32_t Bendera;
uint64_t MenjalankanDataForkOffset;
uint64_t DataForkOffset; // biasanya 0, awal file
uint64_t DataForkLength;
uint64_t RsrcForkOffset; // offset dan panjang garpu sumber daya
uint64_t RsrcForkLength;
uint32_t Nomor Segmen; // Biasanya 1, bisa jadi 0
uint32_t Jumlah Segmen; // Biasanya 1, bisa jadi 0
ID Segmen uuid_t;
uint32_t DataChecksumType; // Checksum garpu data
uint32_t DataChecksumSize;
uint32_t DataChecksum[32];
uint64_t XMLOffset; // Posisi daftar properti XML dalam file
uint64_t XMLLength;
uint8_t Dicadangkan1[120];
uint32_t Jenis Pemeriksaan; // Master checksum
uint32_t Ukuran Checksum;
uint32_t Checksum[32];
uint32_t ImageVariant; // Tidak diketahui, umumnya 1
uint64_t Jumlah Sektor;
uint32_t dipesan2;
uint32_t dipesan3;
uint32_t dipesan4;
} __attribute__((dikemas, scalar_storage_order(“big-endian”))) UDIFResourceFile;
Plist XML berisi kunci blkx (blok), dengan informasi tentang bagaimana fork data sebelumnya dialokasikan. Data utama disimpan dalam blok base64, menggunakan tabel yang diidentifikasi dengan magic ‘mish’. Struktur ‘mish’ ini berisi tabel tentang blok data dan posisi serta panjang setiap “potongan” (biasanya hanya satu potongan, tetapi kompresi akan menghasilkan lebih banyak).[10] Data dan informasi garpu sumber daya mungkin diwarisi dari NDIF.
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.[11] 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.[12] 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 (mis. 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+.