xref: /freebsd/contrib/file/magic/Magdir/virtual (revision ae316d1d1cffd71ab7751f94e10118777a88e027)
1b6cee71dSXin LI
2b6cee71dSXin LI#------------------------------------------------------------------------------
3*ae316d1dSXin LI# $File: virtual,v 1.21 2024/09/04 19:09:00 christos Exp $
4b6cee71dSXin LI# From: James Nobis <quel@quelrod.net>
5b6cee71dSXin LI# Microsoft hard disk images for:
6b6cee71dSXin LI# Virtual Server
7b6cee71dSXin LI# Virtual PC
848c779cdSXin LI# VirtualBox
948c779cdSXin LI# URL: http://fileformats.archiveteam.org/wiki/VHD_(Virtual_Hard_Disk)
1048c779cdSXin LI# Reference: https://download.microsoft.com/download/f/f/e/ffef50a5-07dd-4cf8-aaa3-442c0673a029/
1148c779cdSXin LI# Virtual%20Hard%20Disk%20Format%20Spec_10_18_06.doc
12a2dfb722SXin LI0	string	conectix	Microsoft Disk Image, Virtual Server or Virtual PC
1348c779cdSXin LI# alternative shorter names
14a2dfb722SXin LI#0	string	conectix	Microsoft Virtual Hard Disk image
15a2dfb722SXin LI#0	string	conectix	Microsoft Virtual HD image
1648c779cdSXin LI!:mime	application/x-virtualbox-vhd
1748c779cdSXin LI!:ext   vhd
1848c779cdSXin LI# Features is a bit field used to indicate specific feature support
1943a5ec4eSXin LI#>8	ubelong		!0x00000002	\b, Features %#x
2048c779cdSXin LI# Reserved. This bit must always be set to 1.
2143a5ec4eSXin LI#>8	ubelong		&0x00000002	\b, Reserved %#x
2248c779cdSXin LI# File Format Version for the current specification 0x00010000
2343a5ec4eSXin LI#>12	ubelong		!0x00010000	\b, Version %#8.8x
2448c779cdSXin LI# Data Offset only found 0x200
2543a5ec4eSXin LI#>16	ubequad		!0x200		\b, Data Offset %#llx
2643a5ec4eSXin LI#>16	ubequad		x		\b, at %#llx
2748c779cdSXin LI# Dynamic Disk Header cookie like cxsparse
2848c779cdSXin LI#>(16.Q)	string		x		"%-.8s"
2948c779cdSXin LI# This field contains a Unicode string (UTF-16) of the parent hard disk filename
3043a5ec4eSXin LI#>(16.Q+64)	ubequad	x		\b, parent name %#llx
3148c779cdSXin LI# Creator Application
3248c779cdSXin LI# vpc~Microsoft Virtual PC, vs~Microsoft Virtual Server, vbox~VirtualBox, d2v~disk2vhd
3348c779cdSXin LI>28	string		x		\b, Creator %-4.4s
3448c779cdSXin LI# Creator Version: 0x00010000~Virtual Server 2004, 0x00050000~Virtual PC 2004
3548c779cdSXin LI# holds the major/minor version of the application that created the image
3648c779cdSXin LI>32	ubeshort	x		%x
3748c779cdSXin LI>34	ubeshort	x		\b.%x
3843a5ec4eSXin LI#>32	ubelong		x		\b, Version %#8.8x
3948c779cdSXin LI# Creator Host OS: 0x5769326B~Windows (Wi2k), 0x4D616320~Macintosh (Mac)
4048c779cdSXin LI>36	ubelong		x		(
4148c779cdSXin LI>>36	ubelong		0x5769326B	\bW2k
4248c779cdSXin LI>>36	ubelong		0x4D616320	\bMac
4348c779cdSXin LI>>36	default		x		\b0x
4448c779cdSXin LI>>>36	ubelong		x		\b%8.8x
4548c779cdSXin LI# creation Time in seconds since 1 Jan 2000 UTC~946684800 sec. since Unix Epoch
4648c779cdSXin LI>24	bedate+946684800	x	\b) %s
4748c779cdSXin LI# Original Size
4843a5ec4eSXin LI#>40	ubequad		x		\b, o.-Size %#llx
4948c779cdSXin LI# Current Size is same as original size, but change when disk is expanded
5043a5ec4eSXin LI#>48	ubequad		x		\b, Size %#llx
5148c779cdSXin LI>48	ubequad		x		\b, %llu bytes
5248c779cdSXin LI# Disk Geometry: cylinder, heads, and sectors/track for hard disk
5343a5ec4eSXin LI#>56	ubeshort	x		\b, Cylinder %#x
5448c779cdSXin LI>56	ubeshort	x		\b, CHS %u
5548c779cdSXin LI# Heads
5643a5ec4eSXin LI#>58	ubyte		x		\b, Heads %#x
5748c779cdSXin LI>58	ubyte		x		\b/%u
5848c779cdSXin LI# Sectors per track
5943a5ec4eSXin LI#>59	ubyte		x		\b, Sectors %#x
6048c779cdSXin LI>59	ubyte		x		\b/%u
6148c779cdSXin LI# Disk Type: 3~Dynamic hard disk
6243a5ec4eSXin LI>60	ubelong		!0x3		\b, type %#x
6348c779cdSXin LI# Checksum
6443a5ec4eSXin LI#>64	ubelong		x		\b, cksum %#x
6548c779cdSXin LI# universally unique identifier (UUID) to associate a parent with its differencing image
6643a5ec4eSXin LI#>68	ubequad		x		\b, id %#16.16llx
6748c779cdSXin LI#>76	ubequad		x		\b-%16.16llx
6848c779cdSXin LI# Saved State: 1~Saved State
6943a5ec4eSXin LI>84	ubyte		!0		\b, State %#x
7048c779cdSXin LI# Reserved 427 bytes with nils
7143a5ec4eSXin LI#>85	ubequad	!0			\b, Reserved %#16.16llx
72b6cee71dSXin LI
7348c779cdSXin LI# From: Joerg Jenderek
7448c779cdSXin LI# URL: https://msdn.microsoft.com/en-us/library/mt740058.aspx
7548c779cdSXin LI# Reference: https://winprotocoldoc.blob.core.windows.net/productionwindowsarchives/
7648c779cdSXin LI# MS-VHDX/[MS-VHDX].pdf
7748c779cdSXin LI# Note: extends the VHD format with new capabilities, such as a 16TB maximum size
7848c779cdSXin LI# TODO:	find and display values like virtual size, disk size, cluster_size, etc
7948c779cdSXin LI#	display id in GUID format
8048c779cdSXin LI#
8148c779cdSXin LI# VHDX_FILE_IDENTIFIER signature 0x656C696678646876
8248c779cdSXin LI0	string			vhdxfile
8348c779cdSXin LI# VHDX_HEADER signature. 1 header is stored at offset 64KB and the other at 128KB
8448c779cdSXin LI>0x10000	string		head		Microsoft Disk Image eXtended
8548c779cdSXin LI#>0x20000	string			head	\b, 2nd header
8648c779cdSXin LI#!:mime	application/x-virtualbox-vhdx
8748c779cdSXin LI!:ext	vhdx
8848c779cdSXin LI# Creator[256] like "QEMU v3.0.0", "Microsoft Windows 6.3.9600.18512"
8948c779cdSXin LI>>8		lestring16		x	\b, by %.256s
9048c779cdSXin LI# The Checksum field is a CRC-32C hash over the entire 4 KB structure
9143a5ec4eSXin LI#>>0x10004	ulelong			x	\b, CRC %#x
9248c779cdSXin LI# SequenceNumber
9343a5ec4eSXin LI>>0x10008	ulequad			x	\b, sequence %#llx
9448c779cdSXin LI# FileWriteGuid
9543a5ec4eSXin LI#>>0x10010	ubequad			x	\b, file id %#llx
9648c779cdSXin LI#>>>0x10018	ubequad			x	\b-%llx
9748c779cdSXin LI# DataWriteGuid
9843a5ec4eSXin LI#>>0x10020	ubequad			x	\b, data id %#llx
9948c779cdSXin LI#>>>0x10028	ubequad			x	\b-%llx
10048c779cdSXin LI# LogGuid. If this field is zero, then the log is empty or has no valid entries
10143a5ec4eSXin LI>>0x10030	ubequad			>0	\b, log id %#llx
10248c779cdSXin LI>>>0x10038	ubequad			x	\b-%llx
10348c779cdSXin LI# LogVersion. If not 0 there is a log to replay
10443a5ec4eSXin LI>>0x10040	uleshort		>0	\b, LogVersion %#x
10548c779cdSXin LI# Version. This field must be set to 1
10643a5ec4eSXin LI>>0x10042	uleshort		!1	\b, Version %#x
10748c779cdSXin LI# LogLength must be multiples of 1 MB
10848c779cdSXin LI>>0x10044	ulelong/1048576		>1	\b, LogLength %u MB
10948c779cdSXin LI# LogOffset (normally 0x100000 when log direct after header); multiples of 1 MB
11043a5ec4eSXin LI>>0x10048	ulequad			!0x100000 \b, LogOffset %#llx
11148c779cdSXin LI# Log Entry Signature must be 0x65676F6C~loge
11248c779cdSXin LI>>(0x10048.q)	ulelong			!0x65676F6C \b, NO Log Signature
11348c779cdSXin LI>>(0x10048.q)	ulelong			=0x65676F6C	\b; LOG
11448c779cdSXin LI# Log Entry Checksum
11543a5ec4eSXin LI#>>>(0x10048.q+4)	ulelong		x	\b, Log CRC %#x
11648c779cdSXin LI# Log Entry Length must be a multiple of 4 KB
11748c779cdSXin LI>>>(0x10048.q+8)	ulelong/1024	>4	\b, EntryLength %u KB
11848c779cdSXin LI# Log Entry Tail must be a multiple of 4 KB
11943a5ec4eSXin LI#>>>(0x10048.q+12)	ulelong		x	\b, Tail %#x
12048c779cdSXin LI# Log Entry SequenceNumber
12143a5ec4eSXin LI#>>>(0x10048.q+16)	ulequad		x	\b, # %#llx
12248c779cdSXin LI# Log Entry DescriptorCount may be zero. only 4 bytes in other docs instead 8
12343a5ec4eSXin LI#>>>(0x10048.q+24)	ulelong		x	\b, DescriptorCount %#llx
12448c779cdSXin LI# Log Entry Reserved must be set to 0
12543a5ec4eSXin LI>>>(0x10048.q+28)	ulelong		!0	\b, Reserved %#x
12648c779cdSXin LI# Log Entry LogGuid
12743a5ec4eSXin LI#>>>(0x10048.q+32)	ubequad		x	\b, Log id %#llx
12848c779cdSXin LI#>>>(0x10048.q+40)	ubequad		x	\b-%llx
12948c779cdSXin LI# Log Entry FlushedFileOffset should VHDX size when entry is written.
13048c779cdSXin LI#>>>(0x10048.q+48)	ulequad		x	\b, FlushedFileOffset %llu
13148c779cdSXin LI# Log Entry LastFileOffset
13248c779cdSXin LI#>>>(0x10048.q+56)	ulequad		x	\b, LastFileOffset %llu
13348c779cdSXin LI# filling
13448c779cdSXin LI#>>>(0x10048.q+64)	ulequad		>0	\b, filling %llx
13548c779cdSXin LI# Reserved[4016]
13643a5ec4eSXin LI#>>0x10050	ulequad			>0	\b, Reserved %#llx
13748c779cdSXin LI# VHDX_REGION_TABLE_HEADER Signature 0x69676572~regi at offset 192 KB and 256 KB
138*ae316d1dSXin LI>0x30000	ulelong			!0x69676572 Microsoft Disk Image Extended, 1st region INVALID
139*ae316d1dSXin LI>0x30000	ulelong			=0x69676572 Microsoft Disk Image Extended; region
14048c779cdSXin LI# region Checksum. CRC-32C hash over the entire 64-KB table
14143a5ec4eSXin LI#>>0x30004	ulelong			x	\b, CRC %#x
14248c779cdSXin LI# The EntryCount specifies number of valid entries; Found 2; This must be =< 2047.
14348c779cdSXin LI>>0x30008	ulelong			x	\b, %u entries
14448c779cdSXin LI# reserved must be zero
14543a5ec4eSXin LI#>>0x3000C	ulelong			!0	\b, RESERVED %#x
14648c779cdSXin LI# Region Table Entry starts with identifier for the object. often BAT id
14748c779cdSXin LI>>0x30010	use			vhdx-id
14848c779cdSXin LI# FileOffset
14943a5ec4eSXin LI>>0x30020	ulequad		x		\b, at %#llx
15048c779cdSXin LI# Length. Specifies the length of the object within the file
15143a5ec4eSXin LI#>>0x30028	ulelong		x		\b, Length %#x
15248c779cdSXin LI# 1 means region entry is required. if region not recognized, then REFUSE to load VHDX
15348c779cdSXin LI>>0x3002C	ulelong		x		\b, Required %u
15448c779cdSXin LI# 2nd region entry often metadata id
15548c779cdSXin LI>>0x30030	use			vhdx-id
15648c779cdSXin LI# 2nd entry FileOffset
15743a5ec4eSXin LI>>0x30040	ulequad		x		\b, at %#llx
15848c779cdSXin LI# 1 means region entry is required. if region not recognized, then REFUSE to load VHDX
15948c779cdSXin LI>>0x3004C	ulelong		x		\b, Required %u
16048c779cdSXin LI# 2nd region
16148c779cdSXin LI>>0x40000	ulelong		!0x69676572	\b, 2nd region INVALID
16248c779cdSXin LI# check in vhdx images for known id and show names instead hexadecimal
16348c779cdSXin LI0	name		vhdx-id
16448c779cdSXin LI# https://www.windowstricks.in/online-windows-guid-converter
16548c779cdSXin LI# 2DC27766-F623-4200-9D64-115E9BFD4A08		BAT GUID
16648c779cdSXin LI# 6677C22D23F600429D64115E9BFD4A08		BAT ID
16748c779cdSXin LI>0	ubequad		=0x6677C22D23F60042
16848c779cdSXin LI>>8	ubequad		=0x9D64115E9BFD4A08	\b, id BAT
16948c779cdSXin LI# no BAT id
17048c779cdSXin LI>>8	default		x
17148c779cdSXin LI>>>0	use		vhdx-id-hex
17248c779cdSXin LI# 8B7CA206-4790-4B9A-B8FE-575F050F886E		Metadata region GUID
17348c779cdSXin LI# 06A27C8B90479A4BB8FE575F050F886E		Metadata region ID
17448c779cdSXin LI>0	ubequad		=0x06A27C8B90479A4B
17548c779cdSXin LI>>8	ubequad		=0xB8FE575F050F886E	\b, id Metadata
17648c779cdSXin LI# no Metadata id
17748c779cdSXin LI>>8	default		x
17848c779cdSXin LI>>>0	use		vhdx-id-hex
17948c779cdSXin LI# 2FA54224-CD1B-4876-B211-5DBED83BF4B8		Virtual Disk Size GUID
18048c779cdSXin LI# 2442A52F1BCD7648B2115DBED83BF4B8		Virtual Disk Size ID
18148c779cdSXin LI# value "virtual size" can be verified by command `qemu-img info `
18248c779cdSXin LI>0	ubequad		=0x2442A52F1BCD7648
18348c779cdSXin LI>>8	ubequad		=0xB2115DBED83BF4B8	\b, id vsize
18448c779cdSXin LI# no Virtual Disk Size ID
18548c779cdSXin LI>>8	default		x
18648c779cdSXin LI>>>0	use		vhdx-id-hex
18748c779cdSXin LI# other ids
18848c779cdSXin LI>0	default		x
18948c779cdSXin LI>>0	use		vhdx-id-hex
19048c779cdSXin LI# in vhdx images show id as hexadecimal
19148c779cdSXin LI0	name		vhdx-id-hex
19243a5ec4eSXin LI>0	ubequad		x			\b, ID %#16.16llx
19348c779cdSXin LI>8	ubequad		x			\b-%16.16llx
19448c779cdSXin LI#
195b6cee71dSXin LI# libvirt
196b6cee71dSXin LI# From: Philipp Hahn <hahn@univention.de>
197b6cee71dSXin LI0	string	LibvirtQemudSave	Libvirt QEMU Suspend Image
198b6cee71dSXin LI>0x10	lelong	x	\b, version %u
199b6cee71dSXin LI>0x14	lelong	x	\b, XML length %u
200b6cee71dSXin LI>0x18	lelong	1	\b, running
201b6cee71dSXin LI>0x1c	lelong	1	\b, compressed
202b6cee71dSXin LI
203b6cee71dSXin LI0	string	LibvirtQemudPart	Libvirt QEMU partial Suspend Image
204b6cee71dSXin LI# From: Alex Beregszaszi <alex@fsn.hu>
205b6cee71dSXin LI0	string/b	COWD		VMWare3
206b6cee71dSXin LI>4	byte	3		disk image
207b6cee71dSXin LI>>32	lelong	x		(%d/
208b6cee71dSXin LI>>36	lelong	x		\b%d/
209b6cee71dSXin LI>>40	lelong	x		\b%d)
210b6cee71dSXin LI>4	byte	2		undoable disk image
211b6cee71dSXin LI>>32	string	>\0		(%s)
212b6cee71dSXin LI
213b6cee71dSXin LI0	string/b	VMDK		 VMware4 disk image
214b6cee71dSXin LI0	string/b	KDMV		 VMware4 disk image
215b6cee71dSXin LI
216b6cee71dSXin LI#--------------------------------------------------------------------
217b6cee71dSXin LI# Qemu Emulator Images
218b6cee71dSXin LI# Lines written by Friedrich Schwittay (f.schwittay@yousable.de)
219b6cee71dSXin LI# Updated by Adam Buchbinder (adam.buchbinder@gmail.com)
220b6cee71dSXin LI# Made by reading sources, reading documentation, and doing trial and error
221b6cee71dSXin LI# on existing QCOW files
222a4d6d3b8SXin LI0	string/b	QFI\xFB	QEMU QCOW Image
223a4d6d3b8SXin LI!:mime	application/x-qemu-disk
224b6cee71dSXin LI
225b6cee71dSXin LI# Uncomment the following line to display Magic (only used for debugging
226b6cee71dSXin LI# this magic number)
227b6cee71dSXin LI#>0	string/b	x	, Magic: %s
228b6cee71dSXin LI
229b6cee71dSXin LI# There are currently 2 Versions: "1" and "2".
23048c779cdSXin LI# https://www.gnome.org/~markmc/qcow-image-format-version-1.html
231a4d6d3b8SXin LI>4	belong		x	(v%d)
232b6cee71dSXin LI
233b6cee71dSXin LI# Using the existence of the Backing File Offset to determine whether
234b6cee71dSXin LI# to read Backing File Information
235b6cee71dSXin LI>>12	belong	 >0	 \b, has backing file (
236b6cee71dSXin LI# Note that this isn't a null-terminated string; the length is actually
237b6cee71dSXin LI# (16.L). Assuming a null-terminated string happens to work usually, but it
238b6cee71dSXin LI# may spew junk until it reaches a \0 in some cases.
239b6cee71dSXin LI>>>(12.L)	 string >\0	\bpath %s
240b6cee71dSXin LI
241b6cee71dSXin LI# Modification time of the Backing File
242b6cee71dSXin LI# Really useful if you want to know if your backing
243b6cee71dSXin LI# file is still usable together with this image
244b6cee71dSXin LI>>>>20	bedate >0	\b, mtime %s)
245b6cee71dSXin LI>>>>20	default x	\b)
246b6cee71dSXin LI
247b6cee71dSXin LI# Size is stored in bytes in a big-endian u64.
248b6cee71dSXin LI>>24	bequad	x	 \b, %lld bytes
249b6cee71dSXin LI
250b6cee71dSXin LI# 1 for AES encryption, 0 for none.
251b6cee71dSXin LI>>36	belong	1	\b, AES-encrypted
252b6cee71dSXin LI
25348c779cdSXin LI# https://www.gnome.org/~markmc/qcow-image-format.html
254b6cee71dSXin LI>4	belong	2	(v2)
255b6cee71dSXin LI# Using the existence of the Backing File Offset to determine whether
256b6cee71dSXin LI# to read Backing File Information
257b6cee71dSXin LI>>8	bequad  >0	 \b, has backing file
258b6cee71dSXin LI# Note that this isn't a null-terminated string; the length is actually
259b6cee71dSXin LI# (16.L). Assuming a null-terminated string happens to work usually, but it
260b6cee71dSXin LI# may spew junk until it reaches a \0 in some cases. Also, since there's no
261b6cee71dSXin LI# .Q modifier, we just use the bottom four bytes as an offset. Note that if
262b6cee71dSXin LI# the file is over 4G, and the backing file path is stored after the first 4G,
263b6cee71dSXin LI# the wrong filename will be printed. (This should be (8.Q), when that syntax
264b6cee71dSXin LI# is introduced.)
265b6cee71dSXin LI>>>(12.L)	 string >\0	(path %s)
266b6cee71dSXin LI>>24	bequad	x	\b, %lld bytes
267b6cee71dSXin LI>>32	belong	1	\b, AES-encrypted
268b6cee71dSXin LI
269b6cee71dSXin LI>4	belong	3	(v3)
270b6cee71dSXin LI# Using the existence of the Backing File Offset to determine whether
271b6cee71dSXin LI# to read Backing File Information
272b6cee71dSXin LI>>8	bequad  >0	 \b, has backing file
273b6cee71dSXin LI# Note that this isn't a null-terminated string; the length is actually
274b6cee71dSXin LI# (16.L). Assuming a null-terminated string happens to work usually, but it
275b6cee71dSXin LI# may spew junk until it reaches a \0 in some cases. Also, since there's no
276b6cee71dSXin LI# .Q modifier, we just use the bottom four bytes as an offset. Note that if
277b6cee71dSXin LI# the file is over 4G, and the backing file path is stored after the first 4G,
278b6cee71dSXin LI# the wrong filename will be printed. (This should be (8.Q), when that syntax
279b6cee71dSXin LI# is introduced.)
280b6cee71dSXin LI>>>(12.L)	 string >\0	(path %s)
281b6cee71dSXin LI>>24	bequad	x	\b, %lld bytes
282b6cee71dSXin LI>>32	belong	1	\b, AES-encrypted
283b6cee71dSXin LI
284b6cee71dSXin LI>4	default x	(unknown version)
285b6cee71dSXin LI
286b6cee71dSXin LI0	string/b	QEVM		QEMU suspend to disk image
287b6cee71dSXin LI
288b6cee71dSXin LI# QEMU QED Image
28948c779cdSXin LI# https://wiki.qemu.org/Features/QED/Specification
290b6cee71dSXin LI0	string/b	QED\0		QEMU QED Image
291b6cee71dSXin LI
292b6cee71dSXin LI# VDI Image
293b6cee71dSXin LI# Sun xVM VirtualBox Disk Image
294b6cee71dSXin LI# From: Richard W.M. Jones <rich@annexia.org>
295b6cee71dSXin LI# VirtualBox Disk Image
296b6cee71dSXin LI0x40	ulelong		0xbeda107f	VirtualBox Disk Image
297b6cee71dSXin LI>0x44	uleshort	>0		\b, major %u
298b6cee71dSXin LI>0x46	uleshort	>0		\b, minor %u
299b6cee71dSXin LI>0	string		>\0		(%s)
300b6cee71dSXin LI>368	lequad		x		 \b, %lld bytes
301b6cee71dSXin LI
302*ae316d1dSXin LI# From:		Joerg Jenderek
303*ae316d1dSXin LI# URL: 		https://www.virtualbox.org/manual/ch08.html#vboxmanage-modifynvram
304*ae316d1dSXin LI# Reference:	http://mark0.net/download/triddefs_xml.7z/defs/n/nvram-virtualbox.trid.xml
305*ae316d1dSXin LI# Note:		called "VirtualBox saved (U)EFI BIOS settings" by TrID and
306*ae316d1dSXin LI#		verfied partly by VirtualBox version 7.0.12 `VBoxManage modifynvram <uuid|vmname> listvars`
307*ae316d1dSXin LI# first 64 bytes seems to be constant
308*ae316d1dSXin LI0	long		0
309*ae316d1dSXin LI>0x28	string		_FVH
310*ae316d1dSXin LI>>0x64	beshort		0xAA55
311*ae316d1dSXin LI>>>0	use		virtualbox-nvram
312*ae316d1dSXin LI#	display information of virtualbox *.nvram
313*ae316d1dSXin LI0	name	virtualbox-nvram
314*ae316d1dSXin LI>0x64	beshort		x			VirtualBox NVRAM file
315*ae316d1dSXin LI#!:mime	application/octet-stream
316*ae316d1dSXin LI!:mime	application/x-virtualbox-nvram
317*ae316d1dSXin LI!:ext	nvram
318*ae316d1dSXin LI
319b6cee71dSXin LI0	string/b	Bochs\ Virtual\ HD\ Image	Bochs disk image,
320b6cee71dSXin LI>32	string	x				type %s,
321b6cee71dSXin LI>48	string	x				subtype %s
322b6cee71dSXin LI
323b6cee71dSXin LI0	lelong	0x02468ace			Bochs Sparse disk image
324b6cee71dSXin LI
325*ae316d1dSXin LI# QEMU replay image
326*ae316d1dSXin LI# From: Alexandre Iooss <erdnaxe@crans.org>
327*ae316d1dSXin LI# URL: https://www.qemu.org/docs/master/system/replay.html
328*ae316d1dSXin LI# Reference: https://gitlab.com/qemu/qemu/-/blob/master/replay/replay.c
329*ae316d1dSXin LI0	ubelong&0xFFFFFFF0	0x00e02000
330*ae316d1dSXin LI>3	byte			>5
331*ae316d1dSXin LI>>4	quad			0
332*ae316d1dSXin LI>>>12	ulelong			<40		QEMU replay
333*ae316d1dSXin LI>>>>3	byte			x		\b, version %d
334*ae316d1dSXin LI>>>>3	byte			6		(QEMU 2.10-2.11)
335*ae316d1dSXin LI>>>>3	byte			7		(QEMU 2.12-4.1)
336*ae316d1dSXin LI>>>>3	byte			8		(QEMU 4.2)
337*ae316d1dSXin LI>>>>3	byte			9		(QEMU 5.0)
338*ae316d1dSXin LI>>>>3	byte			10		(QEMU 5.1-7.0)
339*ae316d1dSXin LI>>>>3	byte			12		(QEMU 7.1+)
340