DMG文件格式

风行水上 @ 2011-10-13 09:39:47
标签:

    Mac上的DMG文件从根本上来说,是一个disk image的container。它可以对数据进行了分块、压缩、加密等。

    而刻录光盘用的".iso"或".img"文件,则和数据流直接对应。

    DMG文件数据结构

    DMG文件的末尾0x200个字节是一个简称为kylo的数据结构。这个结构中标明了一个plist文件内容的存储位置。通过这个plist文件的内容,可以知道具体数据块(data block)的位置。

    set schema {
      {a4   signature        : "kylo"}
      {I    version}
      {I    hsize            : "header length. 512 bytes"}
      {I    flags}
      {W    runningDataForkOffset}
      {W    dataForkOffset}
      {W    dataForkLength}
      {W    rsrcForkOffset}
      {W    rsrcForkLength}
      {I    iSegment}
      {I    nSegment}
      {a16  idSegment        - "128-bit number like GUID, but seems not a OSF GUID"}
      {a136 dataForkChecksum -}
      {W    xmlForkOffset    : "plist File offset"}
      {W    xmlForkLength}
      {a120 -                - "reserved! Good for store data"}
      {a136 masterChecksum   -}
      {I    imgVariant}
      {I    nSector}
      {I    -                - "reserved"}
      {I    -                - "reserved"}
      {I    -                - "reserved"}
    }
    
    set file "mac.dmg"
    hexdump::open $file
    set values [hexdump::struct $schema -0x200 end]
    hexdump::print_struct $schema $values
    hexdump::close
    

    网络资源

    • libdmg: Portable libraries and utilities that manipulate HFS+ volumes and Apple's DMG images
    • dmg2iso/dmg2img: 转换DMG文件为".iso"或".img"文件
    标签:

      分享到:
      comments powered by Disqus

      22/25ms