Giter Club home page Giter Club logo

libphdi's Introduction

libphdi is a library to access the Parallels Hard Disk image (PHDI) format.

Project information:

* Status: experimental
* Licence: LGPLv3+

Read supported file formats:

* Version 2

Supported image types:

* Fixed-size (plain) hard disk image
* Dynamic-size (expanding) hard disk image
* Split hard disk image
* Differential (or differencing) hard disk image

Unsupported format features:

* Version 1
* Snapshots

For more information see:

* Project documentation: https://github.com/libyal/libphdi/wiki/Home
* How to build from source: https://github.com/libyal/libphdi/wiki/Building

libphdi's People

Contributors

joachimmetz avatar

Stargazers

 avatar  avatar  avatar

Watchers

James Cloos avatar  avatar Mark McKinnon avatar  avatar

libphdi's Issues

Initial version

  • implement format support
  • correct -wiki.ini and re-generate github wiki pages

Unable to mount Parallels disk image

Hello again @joachimmetz ,

I've prepared a test image from Parallels to test this library and check if the "Expandable" disk type is supported ... but I'm not sure why, phdiinfo and phdimount fail with this error:

~/f4n6/images/harddisk.hdd$ phdiinfo DiskDescriptor.xml
phdiinfo 20200318

Unable to open source file.
libphdi_io_handle_read_file_footer: unsupported file signature.
libphdi_handle_open_read: unable to read file footer.
libphdi_handle_open_file_io_handle: unable to read from file handle.
libphdi_handle_open: unable to open handle: DiskDescriptor.xml.
info_handle_open_input: unable to open input.

But the disk is here :(

~/f4n6/images/harddisk.hdd$ ls -lsh
total 9,5G
4,0K -rw------- 1 mquero mquero 2,0K May 21 16:14 DiskDescriptor.xml
4,0K -rw------- 1 mquero mquero 2,0K May 21 16:12 DiskDescriptor.xml.Backup
   0 -rw------- 1 mquero mquero    0 May 21 11:06 harddisk.hdd
9,5G -rw------- 1 mquero mquero 9,5G May 21 16:14 harddisk.hdd.0.{5fbaabe3-6958-40ff-92a7-860e329aab41}.hds
4,0K -rw-r--r-- 1 mquero mquero 2,3K May 21 16:12 harddisk.hdd.drh

More info: DiskDescriptor.xml:

<?xml version='1.0' encoding='UTF-8'?>
<Parallels_disk_image Version="1.0">
    <Disk_Parameters>
        <Disk_size>536870912</Disk_size>
        <Cylinders>1048576</Cylinders>
        <PhysicalSectorSize>4096</PhysicalSectorSize>
        <LogicSectorSize>512</LogicSectorSize>
        <Heads>16</Heads>
        <Sectors>32</Sectors>
        <Padding>0</Padding>
        <Encryption>
            <Engine>{00000000-0000-0000-0000-000000000000}</Engine>
            <Data></Data>
        </Encryption>
        <UID>{a8da553e-22c0-4702-9454-50dadbf3f07e}</UID>
        <Name>harddisk SSD</Name>
        <Miscellaneous>
            <CompatLevel>level2</CompatLevel>
            <SuspendState>0</SuspendState>
            <DupBlocksCnt>0</DupBlocksCnt>
            <CorruptBlocksCnt>0</CorruptBlocksCnt>
            <UnrefBlocksCnt>0</UnrefBlocksCnt>
            <OutOfDiskBlocksCnt>0</OutOfDiskBlocksCnt>
            <BatOverlapBlocksCnt>0</BatOverlapBlocksCnt>
            <BlocksCnt>0</BlocksCnt>
            <TruncatedBlocksCnt>0</TruncatedBlocksCnt>
            <ReferencedBlocksCnt>0</ReferencedBlocksCnt>
            <Bootable>1</Bootable>
            <ChangeState>0</ChangeState>
            <GuestToolsVersion>15.1.4-47270</GuestToolsVersion>
            <ShutdownState>2</ShutdownState>
        </Miscellaneous>
    </Disk_Parameters>
    <StorageData>
        <Storage>
            <Start>0</Start>
            <End>536870912</End>
            <Blocksize>2048</Blocksize>
            <Image>
                <GUID>{5fbaabe3-6958-40ff-92a7-860e329aab41}</GUID>
                <Type>Compressed</Type>
                <File>harddisk.hdd.0.{5fbaabe3-6958-40ff-92a7-860e329aab41}.hds</File>
            </Image>
        </Storage>
    </StorageData>
    <Snapshots>
        <Shot>
            <GUID>{5fbaabe3-6958-40ff-92a7-860e329aab41}</GUID>
            <ParentGUID>{00000000-0000-0000-0000-000000000000}</ParentGUID>
        </Shot>
    </Snapshots>
</Parallels_disk_image>

xxd harddisk.hdd.0.{5fbaabe3-6958-40ff-92a7-860e329aab41}.hds | head -n 50

 00000000: 5769 7468 6f75 7446 7265 6553 7061 6365  WithoutFreeSpace
00000010: 0200 0000 1000 0000 0000 1000 0008 0000  ................
00000020: 0000 0400 0000 0020 0000 0000 7064 3232  ....... ....pd22
00000030: 0010 0000 0000 0000 0000 0000 0000 0000  ................
00000040: 0010 0000 0038 0000 0058 0000 0000 0000  .....8...X......
00000050: 0000 0000 0000 0000 0090 0d01 0000 0000  ................
00000060: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00000070: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00000080: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00000090: 0000 0000 0000 0000 0000 0000 0000 0000  ................
000000a0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
000000b0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
000000c0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
000000d0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
000000e0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
000000f0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00000100: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00000110: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00000120: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00000130: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00000140: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00000150: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00000160: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00000170: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00000180: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00000190: 0000 0000 0000 0000 0000 0000 0000 0000  ................
000001a0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
000001b0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
000001c0: 0000 0000 0020 0000 0028 0000 0030 0000  ..... ...(...0..
000001d0: 0048 0000 0040 0000 0000 0000 0000 0000  .H...@..........
000001e0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
000001f0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00000200: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00000210: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00000220: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00000230: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00000240: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00000250: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00000260: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00000270: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00000280: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00000290: 0000 0000 0000 0000 0000 0000 0000 0000  ................
000002a0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
000002b0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
000002c0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
000002d0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
000002e0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
000002f0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00000300: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00000310: 0000 0000 0000 0000 0000 0000 0000 0000  ................

Best regard.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.