CN109298894B - 一种提取qcow镜像文件的方法 - Google Patents

一种提取qcow镜像文件的方法 Download PDF

Info

Publication number
CN109298894B
CN109298894B CN201811126716.0A CN201811126716A CN109298894B CN 109298894 B CN109298894 B CN 109298894B CN 201811126716 A CN201811126716 A CN 201811126716A CN 109298894 B CN109298894 B CN 109298894B
Authority
CN
China
Prior art keywords
file
cluster
address
current
size
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201811126716.0A
Other languages
English (en)
Other versions
CN109298894A (zh
Inventor
梁效宁
张佳强
刘波
许超明
朱星海
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sichuan Masterpiece Precision Equipment LLC
Original Assignee
Sichuan Masterpiece Precision Equipment LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sichuan Masterpiece Precision Equipment LLC filed Critical Sichuan Masterpiece Precision Equipment LLC
Priority to CN201811126716.0A priority Critical patent/CN109298894B/zh
Publication of CN109298894A publication Critical patent/CN109298894A/zh
Application granted granted Critical
Publication of CN109298894B publication Critical patent/CN109298894B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4416Network booting; Remote initial program loading [RIPL]

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种提取qcow镜像文件的方法,其特征在于包括以下步骤:S100:查找并解析磁盘中qcow镜像文件的头文件,获取头文件信息;S200:根据所述头文件信息,获取并解析所述一级表,根据解析所述一级表的结果,获取并解析所述二级表,根据解析所述二级表的结果,获取簇地址;S300:根据所述步骤S200的方法,遍历所述qcow镜像文件的所述一级表及所述二级表,获取各个簇地址各自对应的簇数据并顺序保存为系统文件;S400:根据指定文件在所述系统文件中的绝对偏移地址及所述指定文件的大小,计算出所述指定文件在所述qcow镜像文件中的地址,并获取所述指定文件的内容。

Description

一种提取qcow镜像文件的方法
技术领域
本发明属于数据恢复领域,涉及一种提取qcow镜像文件的方法。
背景技术
Qemu发源码的模拟处理器,与其他模拟处理器相比有开源、可移植、仿真速度快的等优点,在GNU/Linux平台上使用广泛。qcow是其扩展镜像文件的后缀。qcow文件系统不支持空洞,拥有更小的文件占用、支持写时拷贝、支持快照、可以选择际遇zlib的压缩方式以及AES加密,qcow镜像被使用广泛。
那么,如何把镜像文件里面的内容提取出来、并获取qcow镜像文件中的用户数据呢?当前主流方法有两种:网络传输或者使用9psetup协议实现虚拟机与宿主之间的文件传输,但它们在提取数据上存在如下弊端:
1.利用网络来进行文件提取,需要先在宿主机上配置网络桥架,在qemu-kvm启动配置网卡。这种方法受网络限制特别大,且文件的传输速度也比较慢。
2.9psetup协议需先让宿主机在内核中配9p选项,同时qemu在编译时需要支持ATTR/XATTR。
3.需要使用工具打开qcow镜像里的虚拟机。
4.不能同时获得多个用户数据。
5.只能获取当前虚拟机所展现的数据,不能获取误删数据。
以上操作复杂,需要专业人员才能完成数据提取,不利于简单快速高效的提取数据。
发明内容
本发明针对现有技术的不足问题,提出了一种提取qcow镜像文件的方法,通过直接解析qcow镜像文件的存储结构,对qcow镜像文件里的数据进行直接提取,包括以下步骤:
S100:查找并解析磁盘中qcow镜像文件的头文件,获取头文件信息,其中,所述头文件信息包含所述头文件的标识、版本、backing file地址、backing file大小、mtime、镜像文件的容量、簇位移数、二级表的项数、加密标识及一级表的起始地址;
S200:根据所述头文件信息,获取并解析所述一级表,根据解析所述一级表的结果,获取并解析所述二级表,根据解析所述二级表的结果,获取簇地址;
S300:根据所述步骤S200的方法,遍历所述qcow镜像文件的所述一级表及所述二级表,获取各个簇地址各自对应的簇数据并顺序保存为系统文件;
S400:根据指定文件在所述系统文件中的绝对偏移地址及所述指定文件的大小,计算出所述指定文件在所述qcow镜像文件中的地址,并获取所述指定文件的内容。
优选地,所述步骤S100中所述头文件信息的数据结构如下:
0至3字节:所述头文件信息的标识0x514649FB
4至7字节:版本
8至15字节:backing file偏移地址
16至19字节:backing file大小
20至23字节:mtime
24至31字节:镜像文件的容量
32字节:簇位移数,表示将二进制数“1”向左移的位数,左移完毕后的二进制数的大小为簇大小
33字节:二级表的项数的位移数,表示将二进制数“1”向左移的位数,左移完毕后的二进制数的大小为当前二级表包含的数据的项数
36至37字节:加密标识,0表示未加密,1表示加密
40至47字节:一级表的起始地址。
优选地,所述步骤S200的具体步骤如下:
S201:根据簇位移数,计算簇大小;具体地,将二进制数“1”向左移,左移的位数等于簇位移数,左移完毕后的二进制数的大小为簇大小;
S202:计算一级表的项数,具体地,一级表的项数=镜像文件的容量/(簇大小*二级表的项数);
S203:根据所述一级表的起始地址,以8字节为一项,寻址并读取各个项,读取所述项的个数为所述步骤S202计算出的所述项数,读取所述项的内容作为寻址所述二级表的地址,如果读取所述项的内容为零,则不做解析;
S204:寻址所述二级表,判断当前二级表中当前项的首字节的最高位是否为1,如果是,表示当前二级表中当前项的内容所表示的簇数据为压缩数据,执行步骤S205,否则,表示当前二级表中当前项的内容为非压缩数据,执行步骤S206;
S205:解压所述压缩数据作为当前二级表中当前项表示的簇数据,执行所述步骤S300;
S206:将当前二级表中当前项的内容作为大端存储的簇地址并进行保存,用以寻址并读取当前二级表中当前项对应的簇数据。
优选地,所述步骤S300的具体步骤如下:
S301:遍历所述一级表;
S302:判断是否完成所述一级表的遍历,如果是,执行步骤S400,否则,执行步骤S303;
S303:判断当前一级表中当前项的内容是否为零,如果是,执行步骤S304,否则,执行步骤S305;
S304:将当前一级表对应的二级表中所有项的内容填零,执行步骤S305;
S305:遍历所述二级表;
S306:判断是否完成所述二级表的遍历,如果是,执行步骤S301,否则,执行步骤S307;
S307:根据所述步骤S200的方法,获取当前簇地址;
S308:根据当前簇地址进行寻址并读取当前二级表中当前项对应的簇数据,如果当前二级表中当前项的内容为零,则对应簇的存储空间顺序填零,执行步骤S306。
优选地,所述步骤S400包含以下具体步骤:
S401:计算指定文件的地址在所述系统文件中簇的位置,具体地,所述簇的位置=ceil(指定文件在所述系统文件中的绝对偏移地址/簇大小),其中,ceil运算符代表向上取整,余数代表指定文件在当前簇内的偏移地址;
S402:计算指定文件的地址在所述一级表中的项数,具体地,所述项数=ceil(所述簇的位置/二级表的项数),其中,ceil运算符代表向上取整,余数代表指定文件在所述一级表中的项数;
S403:获取指定文件;具体地,根据所述步骤S401、S402的计算结果以及所述文件头信息包含的所述一级表的起始地址、作为所述二级表的起始地址的所述一级表的项的内容、作为簇地址的所述二级表的项的内容,获得指定文件在所述qcow镜像文件的绝对偏移地址,并根据所述指定文件的大小,在所述qcow镜像文件中寻址并获取指定文件。
S404:判断当前获取的指定文件大小加上簇内的偏移地址是否大于簇大小,如果是,在当前簇中读取字节长度为簇大小-簇内的偏移地址的内容,并执行步骤S405,否则,结束流程;
S405:对指定文件在所述系统文件中的绝对偏移地址及指定文件大小重新赋值,并执行步骤S401;
具体地,指定文件在所述系统文件中的绝对偏移地址=指定文件在所述系统文件中的绝对偏移地址+(簇大小-指定文件在当前簇内的偏移地址),指定文件大小=指定文件大小-(簇大小-指定文件在当前簇内的偏移地址),其中,簇大小-指定文件在当前簇内的偏移地址为已读取指定文件的大小。
优选地,所述步骤S205包含以下具体步骤:
S2051:以所述一级表的起始地址为首地址,以8字节为一项,寻址并读取各个项,以所读取各个项的内容作为所述二级表的起始地址;
S2052:根据各个所述二级表的起始地址为首地址,对所述二级表寻址,将当前二级表中当前项的8字节内容转换为二进制数;
S2053:所述二进制数的第2比特位至第12比特位作为所述压缩数据的大小,所述二进制数的第13比特位至第64比特位作为所述压缩数据在qcow镜像文件中的偏移地址;
S2054:根据所述压缩数据的在qcow镜像文件中的偏移地址及所述压缩数据的大小,寻址并获取所述压缩数据;
S2055:解压所述压缩数据作为当前二级表中当前项表示的簇数据,执行所述步骤S300。
优选地,所述步骤S206包含以下具体步骤:
S2061:以一级表的起始地址为首地址,以8字节为一项,寻址并读取各个项,以所读取各个项的内容作为二级表的起始地址;
S2062:根据各个二级表的起始地址为首地址,对二级表寻址,将当前二级表中当前项的8字节内容作为非压缩数据在qcow镜像文件中的偏移地址;
S2063:根据非压缩数据的在qcow镜像文件中的偏移地址及非压缩数据的大小,寻址并获取非压缩数据,其中,非压缩数据的大小等于所述簇大小。
本发明的有益效果是:
1.不需要依赖网络传输或者9psetup协议;
2.支持其压缩的qcow镜像文件的提取;
3.提取文件速度快于主流方法;
4.不需要启动虚拟机,可以直接提取文件;
5.不需要切换身份,可获取当前虚拟机上所有用户的数据;
6.同时能够提取误删的数据。
对本发明出现的术语作出以下解释:
向上取整:比自己大的最小整数;
项:item,组成一级表、二级表中数据的最小单位;
backing file:支撑文件;
mtime:更改时间。
附图说明
图1为本发明所提供的方法的总流程图;
图2为本发明实施例中qcow镜像文件的数据结构图,包括一级表、二级表及簇之间的寻址及映射关系;
图3为本发明实施例中头文件信息的数据结构图;
图4为本发明一个实施例中包含头文件信息及一级表的数据结构图;
图5为本发明一个实施例中包含二级表的数据结构图;
图6为本发明一个实施例中簇数据的数据结构图;
图7为本发明另一实施例中包含头文件信息及一级表的数据结构图;
图8为本发明另一实施例中包含二级表的数据结构图;
图9为本发明另一实施例中簇数据的数据结构图;
图10为本发明中获取簇数据并顺序保存为系统文件的具体流程图。
具体实施方式
下面结合附图和实施例对本发明作进一步阐述。
图1示出了本发明所提供的方法的总流程图;
图2示出了本发明实施例中qcow镜像文件的数据结构图,包括一级表、二级表及簇之间的寻址及映射关系;如图2所示,qcow镜像文件是由多个固定单元结构,即,簇(cluster)构成的,簇的地址存储在二级表中并由二级表来管理,二级表的地址存储在一级表上并由一级表来管理。为了说明本申请所提供的方法,在本实施例中,以512字节为一个扇区,把簇分成如图2所示的若干个数据块。获取簇数据,需要解析一级表、二级表的信息以寻址簇数据。
如图1所示,本发明的方法包括以下步骤:
S100:查找并解析磁盘中qcow镜像文件的头文件,获取头文件信息,其中,头文件信息包含头文件的标识、版本、backing file地址、backing file大小、mtime、镜像文件的容量、簇位移数、二级表的项数、加密标识及一级表的起始地址;如图3所示,头文件信息的数据结构如下:
0至3字节:头文件信息的标识0x514649FB,如图3中细黑下划线部分所示,与此相对应的ASCII码为“QFI”
4至7字节:版本
8至15字节:backing file偏移地址
16至19字节:backing file大小
20至23字节:mtime
24至31字节:镜像文件的容量
32字节:簇位移数,表示将二进制数“1”向左移的位数;
如图3中椭圆框部分所示的0x0C,0x0C表示将二进制数“1”向左移0x0C位,即,左移12位,得到二进制数1000000000000,即十进制数4096,由此可以计算出簇大小为4096字节
33字节:二级表的项数,表示将二进制数“1”向左移的位数,左移完毕后的二进制数的大小为当前二级表包含的数据的项数;
如图3中正方形框部分所示的0x09,0x09表示将二进制数“1”向左移0x09位,即,左移9位,得到二进制数1000000000,即十进制数512,由此可以计算出当前二级表包含的数据的为512项
36至37字节:加密标识,0表示未加密,1表示加密
40至47字节:一级表的起始地址,如图3中粗黑下划线部分所示的0x0000000000000030。
S200:根据头文件信息,获取并解析一级表,根据解析一级表的结果,获取并解析二级表,根据解析二级表的结果,获取簇地址,步骤S200的具体步骤如下:
S201:根据簇位移数,计算簇大小;如图3中椭圆框部分所示的0x0C为簇位移数,0x0C表示将二进制数“1”向左移0x0C位,即,左移12位,得到二进制数1000000000000,即十进制数4096,由此可以计算出簇大小为4096字节;
S202:计算一级表的项数,具体地,一级表的项数=镜像文件的容量/(4096*512);
S203:根据一级表的起始地址0x0000000000000030,以8字节为一项,寻址并读取各个项,读取项的个数为步骤S202计算出的项数,如果读取项的内容为零,则不做解析;
S204:判断当前二级表中当前项的首字节的最高位是否为1,如果是,表示当前二级表中当前项的内容所表示的簇数据为压缩数据,执行步骤S205,否则,表示当前二级表中当前项的内容为非压缩数据,执行步骤S206;
S205:解压压缩数据作为当前二级表中当前项表示的簇数据,执行步骤S300;步骤S205包含以下具体步骤:
S2051:图4示出了本发明一个实施例中包含头文件信息及一级表的数据结构图,如图4所示,以一级表的起始地址0x0000000000000030为首地址,以8字节为一项,寻址并读取各个项,以所读取各个项的内容作为二级表的起始地址;
以图4所示的第一项内容0x0000000000015000为例,以0x0000000000015000作为二级表的起始地址;
S2052:以0x0000000000015000为首地址,对二级表寻址;图5示出了本发明一个实施例中包含二级表的数据结构图;读取地址0x0000000000015000为首地址的8字节内容0x8EC8000000016000,将该8字节内容0x8EC8000000016000转换为二进制数为1000111011001000000000000000000000000000000000010110000000000000;
S2053:上述二进制数的第一比特位“1”即为压缩标识,表示该二级表的此项对应的簇数据为压缩数据;
该二进制数的第13比特位至第64比特位000000000000000000000000000000000010110000000000000(即0x16000)作为该压缩数据在qcow镜像文件中的偏移地址;
二进制数的第2比特位至第12比特位000111011001(即0x1D9)作为压缩数据的大小,表示该压缩数据的地址范围从该压缩数据的在qcow镜像文件中的偏移地址0x0000000000016000为起始地址,向后偏移0x1D9字节的长度;
S2054:根据压缩数据的在qcow镜像文件中的偏移地址0x0000000000016000及压缩数据的大小0x1D9,寻址并获取压缩数据;
图6示出了本发明一个实施例中簇数据的数据结构图,如图6中矩形框的内容所示,从地址0x0000000000016000开始至0x00000000000161D9的内容即为该压缩数据;
S2055:解压压缩数据作为当前二级表中当前项表示的簇数据,执行步骤S300。
S206:将当前二级表中当前项的内容作为大端存储的簇地址并进行保存,用以寻址并读取当前二级表中当前项对应的簇数据,步骤S206包含以下具体步骤:
S2061:图7示出了本发明另一实施例中包含头文件信息及一级表的数据结构图,如图7所示,以一级表的起始地址0x0000000000000030为首地址,以8字节为一项,寻址并读取各个项,以所读取各个项的内容作为二级表的起始地址;
以图7所示的第一项内容0x0000000000015000为例,以0x0000000000015000作为二级表的起始地址;
S2062:以0x0000000000015000为首地址,对二级表寻址;图8示出了本发明另一实施例中包含二级表的数据结构图;如图8所示,读取地址0x0000000000015000为首地址的8字节内容0x0000000000016000,将该8字节内容0x0000000000016000作为非压缩数据在qcow镜像文件中的偏移地址;
S2063:根据非压缩数据的在qcow镜像文件中的偏移地址0x0000000000016000及非压缩数据的大小,寻址并获取非压缩数据,其中,非压缩数据的大小等于簇大小4096字节,即0x1000字节;
图9示出了本发明另一实施例中簇数据的数据结构图,如图9所示,从地址0x0000000000016000开始至0x0000000000017000的内容即为该非压缩数据,请注意,图9只示出了该非压缩数据的一部分。
S300:根据步骤S200的方法,遍历qcow镜像文件的一级表及二级表,获取各个簇地址各自对应的簇数据并顺序保存为系统文件,如图10所示,步骤S300的具体步骤如下:
S301:遍历一级表;
S302:判断是否完成一级表的遍历,如果是,执行步骤S400,否则,执行步骤S303;
S303:判断当前一级表中当前项的内容是否为零,如果是,执行步骤S304,否则,执行步骤S305;
S304:将当前一级表对应的二级表中所有项的内容填零,执行步骤S305;
S305:遍历二级表;
S306:判断是否完成二级表的遍历,如果是,执行步骤S301,否则,执行步骤S307;
S307:根据步骤S200的方法,获取当前簇地址;
S308:根据当前簇地址进行寻址并读取当前二级表中当前项对应的簇数据,如果当前二级表中当前项的内容为零,则对应簇的存储空间顺序填零,执行步骤S306。
S400:根据指定文件在系统文件中的绝对偏移地址及指定文件的大小,计算出指定文件在qcow镜像文件中的地址,并获取指定文件的内容,步骤S400包含以下具体步骤:
S401:计算指定文件的地址在系统文件中簇的位置,具体地,簇的位置=ceil(指定文件在系统文件中的绝对偏移地址/簇大小),其中,ceil运算符代表向上取整,余数代表指定文件在当前簇内的偏移地址;
S402:计算指定文件的地址在一级表中的项数,具体地,项数=ceil(簇的位置/二级表的项数),其中,ceil运算符代表向上取整,余数代表指定文件在一级表中的项数;
S403:获取指定文件;具体地,根据步骤S401、S402的计算结果以及文件头信息包含的一级表的起始地址、作为二级表的起始地址的一级表的项的内容、作为簇地址的二级表的项的内容,获得指定文件在qcow镜像文件的绝对偏移地址,并根据指定文件的大小,在qcow镜像文件中寻址并获取指定文件。
S404:判断当前获取的指定文件大小加上簇内的偏移地址是否大于簇大小,如果是,在当前簇中读取字节长度为簇大小-簇内的偏移地址的内容,并执行步骤S405,否则,结束流程;
S405:对指定文件在系统文件中的绝对偏移地址及指定文件大小重新赋值,并执行步骤S401;
具体地,指定文件在系统文件中的绝对偏移地址=指定文件在系统文件中的绝对偏移地址+(簇大小-指定文件在当前簇内的偏移地址),指定文件大小=指定文件大小-(簇大小-指定文件在当前簇内的偏移地址),其中,簇大小-指定文件在当前簇内的偏移地址为已读取指定文件的大小。
通过本发明提供的方法,解决了现有技术中尚无一种通过直接解析qcow的文件存储结构并对qcow镜像文件里的数据进行直接提取的方法的技术问题。
应当理解的是,本发明不限于上述的举例,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,所有这些改进和变换都应属于本发明所附权利要求的保护范围。

Claims (4)

1.一种提取qcow镜像文件的方法,其特征在于包括以下步骤:
S100:查找并解析磁盘中qcow镜像文件的头文件,获取头文件信息,其中,所述头文件信息包含所述头文件的标识、版本、backing file地址、backing file大小、mtime、镜像文件的容量、簇位移数、二级表的项数、加密标识及一级表的起始地址,所述步骤S100中所述头文件信息的数据结构如下:
0至3字节:所述头文件信息的标识0x514649FB
4至7字节:版本
8至15字节:backing file偏移地址
16至19字节:backing file大小
20至23字节:mtime
24至31字节:镜像文件的容量
32字节:簇位移数,表示将二进制数“1”向左移的位数,左移完毕后的二进制数的大小为簇大小
33字节:二级表的项数的位移数,表示将二进制数“1”向左移的位数,左移完毕后的二进制数的大小为当前二级表包含的数据的项数
36至37字节:加密标识,0表示未加密,1表示加密
40至47字节:一级表的起始地址;
S200:根据所述头文件信息,获取并解析所述一级表,根据解析所述一级表的结果,获取并解析所述二级表,根据解析所述二级表的结果,获取簇地址,所述步骤S200的具体步骤如下:
S201:根据簇位移数,计算簇大小;具体地,将二进制数“1”向左移,左移的位数等于所述簇位移数,左移完毕后的二进制数的大小为所述簇大小;
S202:计算一级表的项数,具体地,一级表的项数=镜像文件的容量/(簇大小*二级表的项数);
S203:根据所述一级表的起始地址,以8字节为一项,寻址并读取各个项,读取所述项的个数为所述步骤S202计算出的所述项数,读取所述项的内容作为寻址所述二级表的地址,如果读取所述项的内容为零,则不做解析;
S204:寻址所述二级表,判断当前二级表中当前项的首字节的最高位是否为1,如果是,表示当前二级表中当前项的内容所表示的簇数据为压缩数据,执行步骤S205,否则,表示当前二级表中当前项的内容为非压缩数据,执行步骤S206;
S205:解压所述压缩数据作为当前二级表中当前项表示的簇数据,执行所述步骤S300;
所述步骤S205包含以下具体步骤:
S2051:以所述一级表的起始地址为首地址,以8字节为一项,寻址并读取各个项,以所读取各个项的内容作为所述二级表的起始地址;
S2052:以各个所述二级表的起始地址为首地址,对所述二级表寻址,将当前二级表中当前项的8字节内容转换为二进制数;
S2053:所述二进制数的第63比特位至第53比特位作为所述压缩数据的大小,所述二进制数的第52比特位至第1比特位作为所述压缩数据在qcow镜像文件中的偏移地址;
S2054:根据所述压缩数据的在qcow镜像文件中的偏移地址及所述压缩数据的大小,寻址并获取所述压缩数据;
S2055:解压所述压缩数据作为当前二级表中当前项表示的簇数据,执行所述步骤S300;
S206:将当前二级表中当前项的内容作为大端存储的簇地址并进行保存,用以寻址并读取当前二级表中当前项对应的簇数据;
S300:根据所述步骤S200的方法,遍历所述qcow镜像文件的所述一级表及所述二级表,获取各个簇地址各自对应的簇数据并顺序保存为系统文件;
S400:根据指定文件在所述系统文件中的绝对偏移地址及所述指定文件的大小,计算出所述指定文件在所述qcow镜像文件中的地址,并获取所述指定文件的内容。
2.根据权利要求1所述的一种提取qcow镜像文件的方法,其特征在于,所述步骤S300的具体步骤如下:
S301:遍历所述一级表;
S302:判断是否完成所述一级表的遍历,如果是,执行步骤S400,否则,执行步骤S303;
S303:判断当前一级表中当前项的内容是否为零,如果是,执行步骤S304,否则,执行步骤S305;
S304:将当前一级表对应的二级表中所有项的内容填零,执行步骤S305;
S305:遍历所述二级表;
S306:判断是否完成所述二级表的遍历,如果是,执行步骤S301,否则,执行步骤S307;
S307:根据所述步骤S200的方法,获取当前簇地址;
S308:根据当前簇地址进行寻址并读取当前二级表中当前项对应的簇数据,如果当前二级表中当前项的内容为零,则对应簇的存储空间顺序填零,执行步骤S306。
3.根据权利要求1所述的一种提取qcow镜像文件的方法,其特征在于,所述步骤S400包含以下具体步骤:
S401:计算指定文件的地址在所述系统文件中簇的位置,具体地,所述簇的位置=ceil(指定文件在所述系统文件中的绝对偏移地址/簇大小),其中,ceil运算符代表向上取整,余数代表指定文件在当前簇内的偏移地址;
S402:计算指定文件的地址在所述一级表中的项数,具体地,所述项数=ceil(所述簇的位置/二级表的项数),其中,ceil运算符代表向上取整,余数代表指定文件在所述一级表中的项数;
S403:获取指定文件;具体地,根据所述步骤S401、S402的计算结果以及所述文件头信息包含的所述一级表的起始地址、作为所述二级表的起始地址的所述一级表的项的内容、作为簇地址的所述二级表的项的内容,获得指定文件在所述qcow镜像文件的绝对偏移地址,并根据所述指定文件的大小,在所述qcow镜像文件中寻址并获取指定文件;
S404:判断当前获取的指定文件大小加上簇内的偏移地址是否大于簇大小,如果是,在当前簇中读取字节长度为簇大小-簇内的偏移地址的内容,并执行步骤S405,否则,结束流程;
S405:对指定文件在所述系统文件中的绝对偏移地址及指定文件大小重新赋值,并执行步骤S401;
具体地,指定文件在所述系统文件中的绝对偏移地址=指定文件在所述系统文件中的绝对偏移地址+(簇大小-指定文件在当前簇内的偏移地址),指定文件大小=指定文件大小-(簇大小-指定文件在当前簇内的偏移地址),其中,簇大小-指定文件在当前簇内的偏移地址为已读取指定文件的大小。
4.根据权利要求1所述 的一种提取qcow镜像文件的方法,其特征在于,所述步骤S206包含以下具体步骤:
S2061:以一级表的起始地址为首地址,以8字节为一项,寻址并读取各个项,所读取各个项的内容作为二级表的起始地址;
S2062:以各个二级表的起始地址为首地址,对二级表寻址,将当前二级表中当前项的8字节内容作为非压缩数据在qcow镜像文件中的偏移地址;
S2063:根据非压缩数据的在qcow镜像文件中的偏移地址及非压缩数据的大小,寻址并获取非压缩数据,其中,非压缩数据的大小等于所述簇大小。
CN201811126716.0A 2018-09-26 2018-09-26 一种提取qcow镜像文件的方法 Active CN109298894B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811126716.0A CN109298894B (zh) 2018-09-26 2018-09-26 一种提取qcow镜像文件的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811126716.0A CN109298894B (zh) 2018-09-26 2018-09-26 一种提取qcow镜像文件的方法

Publications (2)

Publication Number Publication Date
CN109298894A CN109298894A (zh) 2019-02-01
CN109298894B true CN109298894B (zh) 2022-03-04

Family

ID=65164524

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811126716.0A Active CN109298894B (zh) 2018-09-26 2018-09-26 一种提取qcow镜像文件的方法

Country Status (1)

Country Link
CN (1) CN109298894B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110647753B (zh) * 2019-09-30 2021-04-16 Oppo广东移动通信有限公司 内核文件的获取方法、装置、设备及存储介质
CN115514498A (zh) * 2022-09-27 2022-12-23 四川长虹电器股份有限公司 快速检测安卓电视系统镜像文件中签名信息的方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102375695A (zh) * 2010-08-23 2012-03-14 联想(北京)有限公司 一种磁盘的访问方法及计算机系统
CN103970585A (zh) * 2013-01-31 2014-08-06 杭州华三通信技术有限公司 创建虚拟机的方法及装置
CN107918521A (zh) * 2016-10-09 2018-04-17 深圳市深信服电子科技有限公司 虚拟磁盘的缩减方法及装置

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8924954B2 (en) * 2011-11-22 2014-12-30 Huawei Technologies Co., Ltd. Application software installation method and application software installation apparatus
CN102999433B (zh) * 2012-11-21 2015-06-17 北京航空航天大学 一种虚拟磁盘的冗余数据删除方法及系统
CN107004032B (zh) * 2016-11-17 2023-12-08 华为云计算技术有限公司 镜像文件转换方法及装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102375695A (zh) * 2010-08-23 2012-03-14 联想(北京)有限公司 一种磁盘的访问方法及计算机系统
CN103970585A (zh) * 2013-01-31 2014-08-06 杭州华三通信技术有限公司 创建虚拟机的方法及装置
CN107918521A (zh) * 2016-10-09 2018-04-17 深圳市深信服电子科技有限公司 虚拟磁盘的缩减方法及装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
"Qcow2镜像格式解析";qrzhcd;《http://www.360doc.com/content/16/0115/13/982782_528150453.shtml》;20160115;第1-3页 *

Also Published As

Publication number Publication date
CN109298894A (zh) 2019-02-01

Similar Documents

Publication Publication Date Title
US10552044B2 (en) Storage apparatus, data processing method and storage system wherein compressed data is read in parallel, said data stored in buffer by size and read from said buffer, in order of when said data is stored in said buffer
JP7157141B2 (ja) ゲノム・ファイルのためのコンテキスト・アウェア差分アルゴリズム
US10044370B1 (en) Lossless binary compression in a memory constrained environment
CN106294352B (zh) 一种文件处理方法、装置和文件系统
US20180081565A1 (en) Data Access Method and Related Apparatus and System
CN109298894B (zh) 一种提取qcow镜像文件的方法
US8185684B1 (en) Method and apparatus for resolving volume identifiers associated with a virtual machine
CN110532347B (zh) 一种日志数据处理方法、装置、设备和存储介质
EP3588325B1 (en) Method, device and system for processing image tagging information
TW200846906A (en) Unified support for solid state storage
EP3364303B1 (en) Data arrangement method, storage apparatus, storage controller and storage array
CN104424263A (zh) 一种数据记录的处理方法及装置
US10810174B2 (en) Database management system, database server, and database management method
CN114706533B (zh) 一种基于gpt分区表的多文件多级启动加载方法及装置
CN110059214B (zh) 一种图像资源处理方法及装置
US20160224251A1 (en) Systems and methods in support of dynamic data management
CN111803917A (zh) 资源的处理方法和装置
JP2020521197A (ja) コンピュータデバイスにおけるゲストオペレーティングシステムのスクリーンショット方法及び装置
JP4693072B2 (ja) Jpegアプリケーションにおける可変長符号の復号
TW412675B (en) Method and apparatus for storing/retrieving data into/from hand-held device
US10103747B1 (en) Lossless binary compression in a memory constrained environment
CN109271209A (zh) 一种解析并提取qcow2及qcow3镜像文件的方法
CN113688139A (zh) 对象存储方法、网关、设备及介质
US8463759B2 (en) Method and system for compressing data
CN112596949A (zh) 一种高效率的ssd删除数据恢复方法及系统

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant