发明内容
鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的检测移动存储装置容量的方法和相应的检测移动存储装置容量的设备。
依据本发明的一个方面,提供了一种检测移动存储装置容量的方法,包括:
确定测试点信息,所述测试点信息包括移动存储装置的存储介质上用来测试的测试点数量,测试点的起始地址,以及各个测试点处需读取的数据块的大小;
根据所述测试点信息,在各个测试点处分别读取数据块,将读取到的各个数据块作为源数据;
对读取到的所述源数据的各数据块进行加密处理,并将加密处理后的各数据块分别写回到各数据块对应的测试点的起始地址;
读取各所述起始地址处的加密处理后的各数据块,并对读取的加密处理后的各数据块进行解密处理,将解密处理后的各个数据块作为目标数据;
将各存储地址相对应的所述目标数据的数据块与所述源数据的数据块分别进行一一比对,根据比对结果确定所述移动存储装置标称容量真伪。
可选地,所述确定测试点信息,包括:
获取接入系统的移动存储装置的控制器信息;所述控制器信息包括:移动存储装置的供应商识别码VID,和/或,移动存储装置的标称容量;
根据所述供应商识别码VID,和/或,移动存储装置的标称容量,确定所述测试点信息。
可选地,还包括:
将检测移动存储装置容量真伪的过程中的测试点信息,保存为测试历史数据;
所述确定测试点信息,包括:
当再次检测同一移动存储装置容量真伪时,读取所述测试历史数据,根据所述测试历史数据,确定本次检测的测试点信息。
可选地,还包括:
在读取源数据的数据块后,获取源数据的数据块的第一校验值;并在获取所述目标数据的数据块后,获取目标数据的数据块的第二校验值;
所述将各存储地址相对应的所述目标数据的数据块与所述源数据的数据块分别进行一一比对,根据比对结果确定所述移动存储装置标称容量真伪,包括:
将各存储地址相对应的所述源数据的数据块的第一校验值,与对应的所述目标数据的数据块的第二校验值进行比对,根据所述第一校验值与所述第二校验值进行比对的结果确定标称容量真伪。
可选地,所述读取各所述起始地址处的加密处理后的各数据块,并对读取的加密处理后的各数据块进行解密处理,将解密处理后的各个数据块作为目标数据,包括:
在所述测试点数量为至少三个时,为读取和解密各测试点的所述加密处理后的数据块确定一随机顺序;以所述随机顺序,读取各所述起始地址处的加密处理后的各数据块,并对读取的加密处理后的各数据块进行解密处理,将解密处理后的各个数据块作为目标数据。
可选地,还包括:
将所述目标数据的各个数据块写入各数据块对应的测试点的起始地址,将所述移动存储装置中的数据还原为检测前的原有数据。
可选地,还包括:
根据所述起始地址顺序排列的各测试点中,第一个目标数据的数据块与源数据的数据块进行比对不相匹配的测试点的存储地址,确定所述移动存储装置的真实存储容量。
根据本发明的另一方面,提供了一种检测移动存储装置容量的设备,包括:
测试点信息确定单元,用于确定测试点信息,所述测试点信息包括移动存储装置的存储介质上用来测试的测试点数量,测试点的起始地址,以及各个测试点处需读取的数据块的大小;
源数据读取单元,用于根据所述测试点信息,在各个测试点处分别读取数据块,将读取到的各个数据块作为源数据;
加密及写回单元,用于对读取到的所述源数据的各数据块进行加密处理,并将加密处理后的各数据块分别写回到各数据块对应的测试点的起始地址;
目标数据获取单元,用于读取各所述起始地址处的加密处理后的各数据块,并对读取的加密处理后的各数据块进行解密处理,将解密处理后的各个数据块作为目标数据;
比对单元,用于将存储地址相对应的所述目标数据的数据块与所述源数据的数据块进行比对,根据比对结果确定所述移动存储装置标称容量真伪。
可选地,所述测试点信息确定单元,包括:
控制器信息获取子单元,用于获取接入系统的移动存储装置的控制器信息;所述控制器信息包括:移动存储装置的供应商识别码VID,和/或,移动存储装置的标称容量;
测试点信息确定子单元,用于根据所述供应商识别码VID,和/或,移动存储装置的标称容量,确定所述测试点信息。
可选地,还包括:
检测结果保存单元,用于将检测移动存储装置容量真伪的过程中的测试点信息,保存为测试历史数据;
所述测试点信息确定单元,具体用于:
当再次检测同一移动存储装置容量真伪时,读取所述测试历史数据,根据所述测试历史数据,确定本次检测的测试点信息。
可选地,还包括:
校验值获取单元,用于在读取源数据的数据块后,获取源数据的数据块的第一校验值;并在获取所述目标数据的数据块后,获取目标数据的数据块的第二校验值;
所述比对单元,具体用于:
将各存储地址相对应的所述源数据的数据块的第一校验值,与对应的所述目标数据的数据块的第二校验值进行比对,根据所述第一校验值与所述第二校验值进行比对的结果确定标称容量真伪。
可选地,所述目标数据获取单元,包括:
目标数据获取子单元,用于在所述测试点数量为至少三个时,为读取和解密各测试点的所述加密处理后的数据块确定一随机顺序;以所述随机顺序,读取各所述起始地址处的加密处理后的各数据块,并对读取的加密处理后的各数据块进行解密处理,将解密处理后的各个数据块作为目标数据。
可选地,还包括:
数据还原单元,用于将所述目标数据的各个数据块写入各数据块对应的测试点的起始地址,将所述移动存储装置中的数据还原为检测前的原有数据。
可选地,还包括:
真实容量确定单元,用于根据所述起始地址顺序排列的各测试点中,第一个目标数据的数据块与源数据的数据块进行比对不相匹配的测试点的存储地址,确定所述移动存储装置的真实存储容量。
根据本发明的检测移动存储装置容量的方法,可以根据在移动存储装置上选择测试点,在测试点出读取源数据的各数据块,对源数据的数据块进行加密后写回到对应的测试点的起始地址,然后将写入的加密数据读出,解密后与源数据的对应数据块进行比较,利用所得到的比较结果,判定移动存储装置是否虚标了容量。由于在虚标了容量的移动存储装置中,如果在其超出实际容量的空间内写入数据,写入的数据就会被写入其实际容量的空间内,写入的数据会覆盖原有数据,本发明利用读取的移动存储装置上的原有数据,并对原有数据进行加密后写入,再读出并与源数据的各个数据块进行对比,能够有效的检测出原有数据是否已经被后写入数据所覆盖,进而确定移动存储装置的标称容量的真伪。此外对测试时写入的数据进行了加密,有效对的避免了移动存储装置的容量检测时,免测试点数据被伪造,以及可以使写入的数据不为连续的固定值,从而保证测试结果的有效性。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
请参见图1,本发明实施例公开的检测移动存储装置容量的方法可以包括以下步骤:
S101:确定测试点信息,测试点信息包括移动存储装置的存储介质上用来测试的测试点数量,测试点的起始地址,以及各个测试点处需读取的数据块的大小;
对于接入的移动存储装置进行检测,首先需要在移动存储装置的存储介质上选择测试点,确定所选取的测试点的信息,测试点的信息可以包括移动存储装置的存储介质上,用来测试的测试点数量,测试点的起始地址,以及各个测试点处需读取的数据块的大小等。在确定测试点信息的过程时,可以读取预置的测试点信息。预置的测试点信息包括,预置的用来测试的测试点数量,测试点的起始地址,以及各个测试点处需读取的数据块的大小等。在实际应用中,对于不同的移动存储装置,其容量、供应商等可能各不相同,可以根据不同容量,不同供应商等信息,对不同的移动存储装置选取不同的测试点数量,测试点的起始地址,以及各个测试点处需读取的数据块大小。使得选取的测试点更加符合实际的检测需求,从而得到更可靠的检测结果。例如对于容量较大的移动存储装置,可以选取相对较多的测试点,在各测试点出读取相对较大的数据块进行测试,提高对较大容量的移动存储装置的检测结果的可靠性。
具体在确定测试点信息时,可以首先获取移动存储装置的控制器信息,在移动存储装置的控制器信息中,通常包括移动存储装置的供应商识别码VID,存储设备的标称容量等,因此,可以通过读取移动存储装置的控制器信息,获取其中的VID,和/或存储设备的标称容量。
移动存储装置的VID,可以用来代表移动存储装置的提供商或生产商,而市场上被篡改主控信息而虚标容量的移动存储装置,常常集中出现在几个特定提供商所生产的产品中,因此可以预设VID列表,在预设的VID列表中记录容易出现虚标容量产品的提供商VID。在检测的过程中,以在控制器信息中读取到的VID信息查询预设的VID列表,一旦命中,则对要检测的移动存储装置采用更为严格的检测方式,如在确定测试点信息时,可以选取更多的检测点进行测试,和/或在各测试点出读取相对较大的数据块进行测试。
移动存储装置的标称容量,也是确定测试点信息时可以参考的依据,对于标称容量较大的移动存储装置,如果选取的测试点数量过少,或选取测试点处的用于测试的数据块过小,则有可能无法对移动存储装置进行有效的检测。在确定测试点信息时,可以依据读取到的控制器信息中的标称容量,来确定用于测试的测试点数量,及在各测试点处读取的数据块大小。实际应用中,可以在移动存储装置的标称容量选取测试点,标称容量越大的移动存储装置,则选择更多的测试点,和/或,在测试点读取更大的数据块进行测试。
在确定测试点信息时,也可以综合上述的两种参考信息作为确定的依据,即根据控制器信息中的VID和标称容量,来共同确定测试点的数量,具体的,可以在控制器信息中获取的VID是预设的VID列表中记录的容易出现虚标容量产品的提供商VID,且从控制器信息中获取的标称容量相对较大时,选择更多的测试点,和/或,在测试点读取更大的数据块进行测试;反之则选择较少的测试点,和/或,在测试点读取较小的数据块进行测试。
对于测试点信息中的测试地址的确定,可以根据选择的测试点的数量在移动存储装置的存储地址空间上确定,具体的,可以是移动存储装置的存储地址空间上连续,均匀分布的一系列测试地址,例如在标称容量为4G的移动存储装置的存储地址空间上,选取的连续均匀分布的400个测试地址;也可以是移动存储装置的存储地址空间上非均匀分布的测试地址,在选择非均匀分布的以系列测试地址时,要保证在某一个数量级的每一个存储区域上,都有至少一个测试点的分布,例如在标称容量为4G的移动存储装置的存储地址空间上,选取的非均匀分布的400个测试地址时,同时要保证每10M的存储空间内至少有1个测试点,避免因测试点非均匀分布导致对部分存储空间的漏检。处于移动存储装置的检测效率与有效性的综合考虑,对目前市场上出现的移动存储装置进行检测时,测试点的数量可以在100-800个之间浮动,所读取的用于检测的数据块的大小可以在4K,8K,或者16K之间选择。
此外,还可以在检测移动存储装置容量真伪的过程中,将检测移动存储装置容量真伪所确定的测试点信息,保存起来作为测试历史数据;在再次对同一移动存储装置容量的真伪进行检测时,直接读取测试历史数据,根据读取的测试历史数据,确定本次检测的测试点信息。具体在根据测试历史数据确定本次检测的测试点信息时,可以直接使用测试历史数据保存的测试点信息作为本次检测的测试点信息;也可以在对同一移动存储装置容量的真伪进行再检测时,在测试历史数据的基础上,增加测试点数量和相应的此时点对点起始地址,和/或,测试点出读取的数据块大小,提高再次检测时的检测精度和检测结果的可靠性。
S102:根据所述测试点信息,在各个测试点处分别读取数据块,将读取到的各个数据块作为源数据;
在确定了检测移动存储装置容量所需的测试点信息后,可以根据测试点信息,在各个测试点处分别读取数据块,具体的,可以是在从测试点的起始地址处开始,读测试点信息中确定大小的数据块。数据块的大小,可以是4KB或4KB的整数倍数量的数据,这是因为在移动存储装置一些常用的文件系统,是以4KB或4KB的整数倍的存储空间作为一个单元存储数据的,在对移动存储装置容量进行检测时,所读取的用于检测的数据块,也可以是4KB或4KB的整数倍的数据,这样一方面保证了读取数据的效率,另一方面也能从一定程度上读取比较完整的数据块,作为测试用数据块,有利于提高检测的效率和检测结果的可靠性。
进一步可以将读取到的各个数据块作为源数据。因为后续要使用源数据的数据块作为比对的对象,因此,对于读取到的源数据的各数据块,可选择保存在除被检测的移动存储装置以外的其他存储设备上,例如缓存在磁盘上等。一个优选的方案也可以是在读取到各数据块后,计算各数据块的校验值,将源数据各数据块的各校验值作为比对的对象之一。源数据块的校验值,可以保存在计算机存储设备上;因为校验值的占用空间较小,也可以开辟计算机内存空间,将源数据各数据块的各校验值保存在内存上,在比对时进行快速的调用。
S103:对读取到的所述源数据的各数据块进行加密处理,并将加密处理后的各数据块分别写回到各数据块对应的测试点的起始地址;
从移动存储装置中读取到源数据的各数据块后,可以对读取到的源数据的各数据块进行加密处理,并将加密处理后的各数据块分别写回到各数据块对应的测试点的起始地址。在步骤S102中,测试点的起始地址,与在各个测试点处分别读取的源数据的数据块存在一一对应的关系,在步骤103中,对源数据的数据块进行加密后,各个加密后的数据块,与测试点的起始地址,以及各个测试点处分别读取的源数据的数据块同样存在一一对应的关系,在将加密处理后的各数据块写回到移动存储装置中时,可以分别写回到与各数据块/加密后的数据块相对应的测试点的起始地址。
经过加密处理后的数据块的大小,应该等于或小于读取的源数据的数据块的大小,这样可以保证在写入的过程中不破坏其他不用来检测的原有数据,此外在加密的过程中,可以使用现有技术中通用的加密算法,如AES,DES,RSA等加密算法,也可以为源数据的数据块加密设计专有的加密算法,对源数据的数据块进行加密,本发明实施例对此并没有限制。
对读取到的源数据的各数据块进行加密再写回到对应的测试点的起始地址,可以避免虚标容量的移动存储装置,通过一定的技术手段伪造从移动存储装置中读写的数据,使测试过程中无法从实际的测试点起始地址读取正确的数据,影响检测结果的有效性。其次,在移动存储装置的使用过程中,用户存入的数据量常常远低于设备的实际容量,在移动存储装置中可能存在大量的剩余空间,这些剩余空间上所存储的数据可能是随机的,也可能是连续的值,如连续的0或1,如果在这样的存储空间上选择测试点,所读取的源数据的数据块可能全部为0或1,将这样的连续的0或者1写回到移动存储装置后进行检测是没有效果的。总之,对读取到的源数据的各数据块进行加密再写回到对应的测试点的起始地址,一方面可以避免测试点数据被伪造,另一方面加密后的数据可以使写入的数据不为连续的固定值,从而保证测试结果的有效性。
S104:读取各所述起始地址处的加密处理后的各数据块,并对读取的加密处理后的各数据块进行解密处理,将解密处理后的各个数据块作为目标数据;
在步骤S104中,读取各所述起始地址处的加密处理后的各数据块,并对并对读取的加密处理后的各数据块进行解密处理,所使用的解密算法,与步骤S103中的加密算法相对应。所读取的数据的大小与步骤S103中写入测试点的起始地址的加密数据块的大小相同。
对于解密后的目标数据各数据块,可选择保存在除被检测的移动存储装置以外的其他存储设备上,例如计算机磁盘或内存中。一个优选的方案是,可以是在读取到目标数据各数据块后,计算各数据块的校验值,将目标数据各数据块的各校验值作为比对的对象之一。目标数据的数据块的校验值,可以保存在计算机硬盘上;因为校验值的占用空间较小,也可以在计算机内存中申请存储空间,将目标数据各数据块的各校验值缓存在内存中,方便在比对时对其进行快速的调用。
此外,在选取三个或三个测试点时,可以在读取和解密各测试点的加密处理后的数据块时,确定一随机的读取顺序,以随机的顺序,读取各起始地址处的加密处理后的各数据块,并对读取的加密处理后的各数据块进行解密处理,将解密处理后的各个数据块作为目标数据。这是因为,有的虚标容量的移动存储装置可以通过其主控芯片,对线性单向增长的地址值进行规律的映射,对这种虚标容量的移动存储装置进行检测时,如果是顺序的读取各起始地址处的加密处理后的各数据块,可能因会对主控芯片的地址值映射而对检测结果有所干扰,采用随机的读取顺序读取各起始地址处的加密处理后的各数据块,则可以避免或减少这种干扰。
S105:将各存储地址相对应的所述目标数据的数据块与所述源数据的数据块分别进行一一比对,根据比对结果确定所述移动存储装置标称容量真伪。
若移动存储装置虚标了容量,如果在其超出实际容量的空间内写入数据,写入的数据就会被写入其实际容量的空间内,进而覆盖率原有数据。因此可以对先后写入移动存储装置的源数据和目标数据的各个对应数据块进行对比,确定移动存储装置容量的真伪。获取到了源数据的各数据块,以及目标数据的各个数据块后,可以地两者进行比对,根据比对的结果是两者一致,则移动存储装置的容量是真实容量,反之被检测的移动存储装置是虚标容量的移动存储装置。如前所述,目标数据的各数据块,与测试点的起始地址,以及各个测试点处分别读取的源数据的数据块同样存在一一对应的关系,在比对是,应将统一存储地址对应的源数据的数据块与目标数据的数据块进行比对。
在比对的过程中,一种优选的方案是利用源数据的数据块的校验值,与目标数据对应数据块的校验值进行对比,具体的,可以在读取源数据的数据块后,获取源数据的数据块的第一校验值;并在获取目标数据的数据块后,获取目标数据的数据块的第二校验值;将存储地址相对应的源数据的数据块的第一校验值,与对应的目标数据的数据块的第二校验值进行比对,根据第一校验值与第二校验值进行比对的结果确定标称容量真伪,若所有对应数据块的校验值比对都一致,则移动存储装置的容量是真实容量,反之被检测的移动存储装置是虚标容量的移动存储装置。因为数据块的校验值相比较数据块本身要小很多,利用校验值进行比对,可以利用比较小的内存空间,提高比对的效率,进而提高检测的效率。
进一步的,由于此时移动存储装置上的各测试点处存储的是加密处理后的源数据,还可以对移动存储装置检测前的用户数据进行恢复,可以将解密处理后的目标数据的各个数据块写入各数据块对应的测试点的起始地址,将移动存储装置中的数据还原为检测前的原有数据,还原移动存储装置上检测前的用户数据。
再者,在对移动存储装置的容量进行检测的过程中,测试点的起始地址是顺序分布在移动存储装置上的,通常,起始地址顺序排列的各测试点中,第一个目标数据的数据块与源数据的数据块进行比对不相匹配的测试点的存储地址,或相邻地址,可以代表移动存储装置的真实容量,因此可以根据起始地址顺序排列的各测试点中,第一个目标数据的数据块与源数据的数据块进行比对不相匹配的测试点的存储地址,确定移动存储装置的真实存储容量。例如,在使用的800个测试点的顺序排列中,第一个校验不通过的地址为0x00000000C0000000,那么可以确定该移动存储装置的实际容量为0xC000000(Bytes),也即为3G的容量。进一步的,可以将移动存储装置是否虚标容量的检测结果,以及虚标容量的移动存储装置的真实容量显示给用户。
以上介绍了本发明实施例提供的检测移动存储装置容量的方法,通过本方法,可以根据在移动存储装置上选择测试点,在测试点出读取源数据的各数据块,对源数据的数据块进行加密后写回到对应的测试点的起始地址,然后将写入的加密数据读出,解密后与源数据的对应数据块进行比较,利用所得到的比较结果,判定移动存储装置是否虚标了容量。若移动存储装置虚标了容量,如果在其超出实际容量的空间内写入数据,写入的数据就会被写入其实际容量的空间内,进而覆盖原有数据,本发明利用读取的移动存储装置上的原有数据,并对原有数据进行加密后写入,再读出并与源数据的各个数据块进行对比,能够有效的检测出原有数据是否已经被后写入数据所覆盖,进而确定移动存储装置的标称容量的真伪。此外对测试时写入的数据进行了加密,有效对的避免了移动存储装置的容量检测时,免测试点数据被伪造,以及可以使写入的数据不为连续的固定值,从而保证测试结果的有效性。
与本发明实施例提供的检测移动存储装置容量的方法相对应,本发明实施例还提供了检测移动存储装置容量的设备,请参图2,该设备可以包括:
测试点信息确定单元210,用于确定测试点信息,其中测试点信息包括移动存储装置的存储介质上用来测试的测试点数量,测试点的起始地址,以及各个测试点处需读取的数据块的大小;
源数据读取单元220,用于根据测试点信息,在各个测试点处分别读取数据块,将读取到的各个数据块作为源数据;
加密及写回单元230,用于对读取到的源数据的各数据块进行加密处理,并将加密处理后的各数据块分别写回到各数据块对应的测试点的起始地址;
目标数据获取单元240,用于读取各起始地址处的加密处理后的各数据块,并对读取的加密处理后的各数据块进行解密处理,将解密处理后的各个数据块作为目标数据;
比对单元250,用于将各存储地址相对应的目标数据的数据块与源数据的数据块分别进行一一比对,根据比对结果确定所述移动存储装置标称容量真伪。
其中,测试点信息确定单元210,可以包括:
控制器信息获取子单元,用于获取接入系统的移动存储装置的控制器信息;其中控制器信息包括:移动存储装置的供应商识别码VID,和/或,移动存储装置的标称容量;以及
测试点信息确定子单元,用于根据获取到的控制信息中的供应商识别码VID,和/或,移动存储装置的标称容量,确定测试点信息。
在另一种实施方式下,该设备还可以包括:
检测结果保存单元,用于将检测移动存储装置容量真伪的过程中的测试点信息,保存为测试历史数据;
此时测试点信息确定单元210,具体可以用于:
当再次检测同一移动存储装置容量真伪时,读取所述测试历史数据,根据所述测试历史数据,确定本次检测的测试点信息。
此外,检测移动存储装置容量的设备还可以包括:
校验值获取单元,用于在读取源数据的数据块后,获取源数据的数据块的第一校验值;并在获取所述目标数据的数据块后,获取目标数据的数据块的第二校验值;
在这种实现方式下,比对单元250具体可以用于:
将各存储地址相对应的所述源数据的数据块的第一校验值,与对应的所述目标数据的数据块的第二校验值进行比对,根据所述第一校验值与所述第二校验值进行比对的结果确定标称容量真伪。
在另一种实现方式下,目标数据获取单元240可以包括:
目标数据获取子单元,用于在测试点数量为至少三个时,为读取和解密各测试点的所述加密处理后的数据块确定一随机顺序;以确定的随机顺序,读取各起始地址处的加密处理后的各数据块,并对读取的加密处理后的各数据块进行解密处理,将解密处理后的各个数据块作为目标数据。
检测移动存储装置容量的设备,还可以包括:
数据还原单元,用于将目标数据的各个数据块写入各数据块对应的测试点的起始地址,将移动存储装置中的数据还原为检测前的原有数据。
在另一中实现方式下,检测移动存储装置容量的设备,还可以包括:
真实容量确定单元,用于根据起始地址顺序排列的各测试点中,第一个目标数据的数据块与源数据的数据块进行比对不相匹配的测试点的存储地址,确定所述移动存储装置的真实存储容量。
以上介绍了本发明实施例提供的检测移动存储装置容量的设备,通过本设备,可以根据在移动存储装置上选择测试点,在测试点出读取源数据的各数据块,对源数据的数据块进行加密后写回到对应的测试点的起始地址,然后将写入的加密数据读出,解密后与源数据的对应数据块进行比较,利用所得到的比较结果,有效判定移动存储装置是否虚标了容量。此外该设备还可以对测试时写入的数据进行了加密,有效对的避免了移动存储装置的容量检测时,免测试点数据被伪造,以及可以使写入的数据不为连续的固定值,从而保证测试结果的有效性。
在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的检测移动存储装置容量的设备中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
本申请可以应用于计算机系统/服务器,其可与众多其它通用或专用计算系统环境或配置一起操作。适于与计算机系统/服务器一起使用的众所周知的计算系统、环境和/或配置的例子包括但不限于:个人计算机系统、服务器计算机系统、瘦客户机、厚客户机、手持或膝上设备、基于微处理器的系统、机顶盒、可编程消费电子产品、网络个人电脑、小型计算机系统﹑大型计算机系统和包括上述任何系统的分布式云计算技术环境,等等。
计算机系统/服务器可以在由计算机系统执行的计算机系统可执行指令(诸如程序模块)的一般语境下描述。通常,程序模块可以包括例程、程序、目标程序、组件、逻辑、数据结构等等,它们执行特定的任务或者实现特定的抽象数据类型。计算机系统/服务器可以在分布式云计算环境中实施,分布式云计算环境中,任务是由通过通信网络链接的远程处理设备执行的。在分布式云计算环境中,程序模块可以位于包括存储设备的本地或远程计算系统存储介质上。
本发明还公开了A1、一种检测移动存储装置容量的方法,包括:
确定测试点信息,所述测试点信息包括移动存储装置的存储介质上用来测试的测试点数量,测试点的起始地址,以及各个测试点处需读取的数据块的大小;
根据所述测试点信息,在各个测试点处分别读取数据块,将读取到的各个数据块作为源数据;
对读取到的所述源数据的各数据块进行加密处理,并将加密处理后的各数据块分别写回到各数据块对应的测试点的起始地址;
读取各所述起始地址处的加密处理后的各数据块,并对读取的加密处理后的各数据块进行解密处理,将解密处理后的各个数据块作为目标数据;
将各存储地址相对应的所述目标数据的数据块与所述源数据的数据块分别进行一一比对,根据比对结果确定所述移动存储装置标称容量真伪。
A2、如A1所述的方法,所述确定测试点信息,包括:
获取接入系统的移动存储装置的控制器信息;所述控制器信息包括:移动存储装置的供应商识别码VID,和/或,移动存储装置的标称容量;
根据所述供应商识别码VID,和/或,移动存储装置的标称容量,确定所述测试点信息。
A3、如A1所述的方法,还包括:
将检测移动存储装置容量真伪的过程中的测试点信息,保存为测试历史数据;
所述确定测试点信息,包括:
当再次检测同一移动存储装置容量真伪时,读取所述测试历史数据,根据所述测试历史数据,确定本次检测的测试点信息。
A4、如A1所述的方法,还包括:
在读取源数据的数据块后,获取源数据的数据块的第一校验值;并在获取所述目标数据的数据块后,获取目标数据的数据块的第二校验值;
所述将各存储地址相对应的所述目标数据的数据块与所述源数据的数据块分别进行一一比对,根据比对结果确定所述移动存储装置标称容量真伪,包括:
将各存储地址相对应的所述源数据的数据块的第一校验值,与对应的所述目标数据的数据块的第二校验值进行比对,根据所述第一校验值与所述第二校验值进行比对的结果确定标称容量真伪。
A5、如A1所述的方法,所述读取各所述起始地址处的加密处理后的各数据块,并对读取的加密处理后的各数据块进行解密处理,将解密处理后的各个数据块作为目标数据,包括:
在所述测试点数量为至少三个时,为读取和解密各测试点的所述加密处理后的数据块确定一随机顺序;以所述随机顺序,读取各所述起始地址处的加密处理后的各数据块,并对读取的加密处理后的各数据块进行解密处理,将解密处理后的各个数据块作为目标数据。
A6、如A1所述的方法,还包括:
将所述目标数据的各个数据块写入各数据块对应的测试点的起始地址,将所述移动存储装置中的数据还原为检测前的原有数据。
A7、如A1-A6任一项所述的方法,还包括:
根据所述起始地址顺序排列的各测试点中,第一个目标数据的数据块与源数据的数据块进行比对不相匹配的测试点的存储地址,确定所述移动存储装置的真实存储容量。
本发明还公开了B1、一种检测移动存储装置容量的设备,包括:
测试点信息确定单元,用于确定测试点信息,所述测试点信息包括移动存储装置的存储介质上用来测试的测试点数量,测试点的起始地址,以及各个测试点处需读取的数据块的大小;
源数据读取单元,用于根据所述测试点信息,在各个测试点处分别读取数据块,将读取到的各个数据块作为源数据;
加密及写回单元,用于对读取到的所述源数据的各数据块进行加密处理,并将加密处理后的各数据块分别写回到各数据块对应的测试点的起始地址;
目标数据获取单元,用于读取各所述起始地址处的加密处理后的各数据块,并对读取的加密处理后的各数据块进行解密处理,将解密处理后的各个数据块作为目标数据;
比对单元,用于将存储地址相对应的所述目标数据的数据块与所述源数据的数据块进行比对,根据比对结果确定所述移动存储装置标称容量真伪。
B2、如B1所述的设备,所述测试点信息确定单元,包括:
控制器信息获取子单元,用于获取接入系统的移动存储装置的控制器信息;所述控制器信息包括:移动存储装置的供应商识别码VID,和/或,移动存储装置的标称容量;
测试点信息确定子单元,用于根据所述供应商识别码VID,和/或,移动存储装置的标称容量,确定所述测试点信息。
B3、如B1所述的设备,还包括:
检测结果保存单元,用于将检测移动存储装置容量真伪的过程中的测试点信息,保存为测试历史数据;
所述测试点信息确定单元,具体用于:
当再次检测同一移动存储装置容量真伪时,读取所述测试历史数据,根据所述测试历史数据,确定本次检测的测试点信息。
B4、如B1所述的设备,还包括:
校验值获取单元,用于在读取源数据的数据块后,获取源数据的数据块的第一校验值;并在获取所述目标数据的数据块后,获取目标数据的数据块的第二校验值;
所述比对单元,具体用于:
将各存储地址相对应的所述源数据的数据块的第一校验值,与对应的所述目标数据的数据块的第二校验值进行比对,根据所述第一校验值与所述第二校验值进行比对的结果确定标称容量真伪。
B5、如B1所述的设备,所述目标数据获取单元,包括:
目标数据获取子单元,用于在所述测试点数量为至少三个时,为读取和解密各测试点的所述加密处理后的数据块确定一随机顺序;以所述随机顺序,读取各所述起始地址处的加密处理后的各数据块,并对读取的加密处理后的各数据块进行解密处理,将解密处理后的各个数据块作为目标数据。
B6、如B1所述的设备,还包括:
数据还原单元,用于将所述目标数据的各个数据块写入各数据块对应的测试点的起始地址,将所述移动存储装置中的数据还原为检测前的原有数据。
B7、如B1-B6任一项所述的设备,还包括:
真实容量确定单元,用于根据所述起始地址顺序排列的各测试点中,第一个目标数据的数据块与源数据的数据块进行比对不相匹配的测试点的存储地址,确定所述移动存储装置的真实存储容量。