Apple Disk Image (dmg) 分析/掛載/製作

其他Linux/Unix/BSD/OSX等发行版讨论
回复
头像
torachiyo
帖子: 81
注册时间: 2015-11-29 8:32
系统: Kali Linux

Apple Disk Image (dmg) 分析/掛載/製作

#1

帖子 torachiyo » 2016-04-14 8:58

測試環境: Linux Mint 18 (Ubuntu xenial) / LMDE (Debian sid)

Apple Disk Image 分析

Mac OS X 底下的映像檔其中幾個製作出的種類:

唯讀
$ file app-ro.dmg
app-ro.dmg: data

壓縮
$ file app-comp.dmg
app-comp.dmg: zlib compressed data

可讀寫
$ file app-rw.dmg
app-rw.dmg: DOS/MBR boot sector; partition 1 : ID=0xee, start-CHS (0x3ff,254,63), end-CHS (0x3ff,254,63), startsector 1, 77633 sectors, extended partition table (last)

DVD/CD母片
$ file app-dvd.cdr
app-dvd.cdr: DOS/MBR boot sector; partition 1 : ID=0xee, start-CHS (0x3ff,254,63), end-CHS (0x3ff,254,63), startsector 1, 77633 sectors, extended partition table (last)

混合式映像檔(HFS+/ISO/UDF)
$ file app-mix.dmg
app-mix.dmg: ISO 9660 CD-ROM filesystem data 'APP'


網路下載應用程式分析測試
$ file TorBrowser-5.5.4-osx64_en-US.dmg
TorBrowser-5.5.4-osx64_en-US.dmg: bzip2 compressed data, block size = 900k

$ file Perian_1.2.3.dmg
Perian_1.2.3.dmg: zlib compressed data

dmg2img 轉換後...

$ file TorBrowser-5.5.4-osx64_en-US-img.dmg
TorBrowser-5.5.4-osx64_en-US-img.dmg: ISO 9660 CD-ROM filesystem data '囗囗囗 Browser'

$ file Perian_1.2.3-img.dmg
Perian_1.2.3-img.dmg: Macintosh HFS Extended version 4 data last mounted by: '10.0', created: Sat Jul 23 22:53:07 2011, last modified: Sat Jul 23 21:59:42 2011, last checked: Sat Jul 23 21:53:07 2011, block size: 4096, number of blocks: 3676, free blocks: 2577


掛載方式:
ISO 9660 CD-ROM filesystem data 格式掛載方式與iso相同.
zlib compressed data 或 bzip2 compressed data 須使用dmg2img轉換後才有辦法掛載.
Macintosh HFS Extended version 4 掛載方式使用 mount -t hfsplus

其他暫時未找到掛載方法.但都可以使用 7z 來解壓縮映像檔內容.

Linux 上 dmg 一點用處都沒有, 但如果電腦裡有OSX與Linux雙系統那就非常實用了.
Linux 可當備用的救援系統.當然重點不是在dmg的修改, 而是HFS+的讀寫功能.

=======================
dmg/cdr 映像檔解壓縮
=======================
安裝7-zip
雖然壓縮dmg的格式很多但7-zip比較通用.
$ sudo apt-get install p7zip-full

解壓縮dmg/cdr內容
$ 7z x file.dmg

$ 7z x file.cdr

=======================
dmg映像檔製作
=======================
Linux下製作的未壓縮 dmg 在 OS X 底下也能正常使用.

1.安裝 hfsutils
$ sudo apt-get install hfsutils

2.建立一個大小固定的空白映像檔
範例:40MB=1MBX40
$ sudo dd if=/dev/zero of=~/test.dmg bs=1M count=40

3.格式化映像檔
hfsplus格式支援
$ sudo apt-get install hfsplus
hfs格式
$ sudo hformat -l label ~/test.dmg
hfs+格式
$ sudo mkfs.hfsplus -v label ~/test.dmg

4.掛載映像檔
掛載路徑建議在 /run/media/$USER/ 因為重開機掛載目錄就淨空了.
$ sudo mkdir /run/media/$USER/test/
$ sudo mount -o loop -t hfsplus image.dmg /run/media/$USER/test/

5.複製檔案到掛載映像檔路徑

6.卸載映像檔
可直接在檔案管理員卸載
或輸入指令
$ sudo umount /run/media/$USER/test/

=======================
dmg 掛載
=======================
有壓縮的dmg映像檔例如:
$ file ***.dmg
***.dmg: zlib compressed data
這個必須使用 dmg2img 轉換後才有辦法掛載

$ sudo apt-get install dmg2img

$ dmg2img file.dmg file.img

以讀寫方式掛載(預設讀寫)
# mount -o loop -t hfsplus file.img /run/media/$USER/file/

# mount -wo loop -t hfsplus file.img /run/media/$USER/file/

以唯讀的方式掛載
# mount -ro loop -t hfsplus file.img /run/media/$USER/file/

=======================
「CD」或「分割區」映像檔製作
=======================
將整個HFS+磁區製作成dmg
$ sudo dd if="/dev/sda3" of=image.dmg

$ sudo dd if="/dev/loop1" of=image.dmg

====================
hfs+分割區讀寫
====================
$ sudo apt-get install hfsprogs

掛載未掛載分割區
$ sudo mount -t hfsplus -o force,rw /dev/sdXY /run/media/$USER/mntpoint

重新掛載
$ sudo mount -t hfsplus -o remount,force,rw /dev/sdax

$ sudo mount -t hfsplus -o remount,force,rw /run/media/$USER/mntpoint

如果該裝置卸載錯誤或損壞,執行 fsck.hfsplus:
$ sudo fsck.hfsplus -f /dev/sdax

非ROOT使用者HFS+讀寫
$ sudo usermod --uid 501 username
$ sudo chown -R 501:username /home/username

至於 ios ipsw 內 dmg 檔案, 因為該dmg有加密.
目前只有Windows有工具可以解密,具體掛載與修改方式暫時未知.
須等到 My Apple 能越獄時,才有辦法實際測試並做整理. 图片

以上google大神資料整理與測試 图片
回复