libyal / libphdi Goto Github PK
View Code? Open in Web Editor NEWLibrary and tools to access the Parallels Hard Disk image format
License: GNU Lesser General Public License v3.0
Library and tools to access the Parallels Hard Disk image format
License: GNU Lesser General Public License v3.0
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
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.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.