CN108898030B - 文件隐藏方法和装置 - Google Patents
文件隐藏方法和装置 Download PDFInfo
- Publication number
- CN108898030B CN108898030B CN201810550848.XA CN201810550848A CN108898030B CN 108898030 B CN108898030 B CN 108898030B CN 201810550848 A CN201810550848 A CN 201810550848A CN 108898030 B CN108898030 B CN 108898030B
- Authority
- CN
- China
- Prior art keywords
- file
- cluster
- target
- hidden
- address information
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11B—INFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
- G11B27/00—Editing; Indexing; Addressing; Timing or synchronising; Monitoring; Measuring tape travel
- G11B27/10—Indexing; Addressing; Timing or synchronising; Measuring tape travel
- G11B27/11—Indexing; Addressing; Timing or synchronising; Measuring tape travel by using information not detectable on the record carrier
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Health & Medical Sciences (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Storage Device Security (AREA)
Abstract
本发明提供了一种文件隐藏方法和装置,该方法包括:若检测到文件隐藏指令,则获取位图文件中处于未占用状态的簇;根据文件隐藏指令和每个未占用状态的簇所占用的扇区数量,计算隐藏文件需占用的第一目标簇的簇数量;将隐藏文件的文件内容写入处于未占用状态的簇数量的第一目标簇中,并拒绝对第一目标簇的状态修改;记录隐藏文件对应的簇数量的第一目标簇的地址信息。本发明通过将隐藏文件存储至未被占用的簇中,并对该隐藏文件所占用的簇的地址进行记录,隐藏文件所占用的簇的状态未改变,仍旧保持未占用状态,提升了文件隐藏的安全性。
Description
技术领域
本发明涉及计算机技术领域,特别是涉及一种文件隐藏方法和装置。
背景技术
随着信息共享技术的不断发展,文件在进行网络传输时容易被非法用户截取。尤其对于包含商业机密或关键技术的保密文件,需要对文件进行隐藏处理,以降低信息泄露的风险。
目前的文件隐藏方法很多,例如修改文件的属性为不可见;将文件放到一个非常不起眼的系统目录下;将文件放到加密的磁盘中。但是上述文件隐藏方法都存在着较为明显的安全漏洞,文件隐藏的安全性较低。
发明内容
本发明提供了一种文件隐藏方法和装置,以解决现有技术中的文件隐藏方法所存在的文件隐藏的安全性较低的问题。
为了解决上述问题,根据本发明的一个方面,本发明公开了一种文件隐藏方法,包括:
若检测到文件隐藏指令,则获取位图文件中处于未占用状态的簇;
根据所述文件隐藏指令和每个所述未占用状态的簇所占用的扇区数量,计算隐藏文件需占用的第一目标簇的簇数量;
将所述隐藏文件的文件内容写入处于未占用状态的所述簇数量的第一目标簇中;
记录所述隐藏文件对应的所述簇数量的第一目标簇的地址信息。
根据本发明的另一方面,本发明还公开了一种文件隐藏装置,包括:
获取模块,用于若检测到文件隐藏指令,则获取位图文件中处于未占用状态的簇;
计算模块,用于根据所述文件隐藏指令和每个所述未占用状态的簇所占用的扇区数量,计算隐藏文件需占用的第一目标簇的簇数量;
第一写入模块,用于将所述隐藏文件的文件内容写入处于未占用状态的所述簇数量的第一目标簇中;
第一记录模块,用于记录所述隐藏文件对应的所述簇数量的第一目标簇的地址信息。
与现有技术相比,本发明包括以下优点:
在本发明实施例中,通过将隐藏文件存储至未被占用的簇中,并对该隐藏文件所占用的簇的地址进行记录,其中,在这个文件隐藏过程中,隐藏文件所占用的簇的状态未改变,仍旧保持未占用状态。无论是使用文件还原软件还是其它文件恢复软件,都无法识别出隐藏文件,提升了文件隐藏的安全性;此外,即便窃密者通过对空闲簇进行遍历的方式来获取隐藏文件,由于存储隐藏文件的簇的状态未修改仍保持未占用状态、且未指向任何文件,所以,窃密者仍旧无法查找到被隐藏的隐藏文件,提升了文件隐藏的安全性。
附图说明
图1是本发明的一种文件隐藏方法实施例的步骤流程图;
图2是本发明的一种文件隐藏装置实施例的结构框图。
具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
本发明实施例提供了一种文件隐藏系统,该系统可以包括预设应用程序和磁盘卷过滤驱动。其中,该预设应用程序用于控制磁盘卷过滤驱动进行文件的隐藏和还原;磁盘卷过滤驱动,则用于文件的隐藏和还原、文件的读写、以及在写入文件时防止隐藏文件被写入的文件覆盖。
下面结合上述文件隐藏系统,并参照图1所示的本发明的一种文件隐藏方法实施例的步骤流程图来对本发明实施例的文件隐藏方法的具体流程作详细介绍,该方法具体可以包括如下步骤:
步骤101,读取NTFS文件系统的位图文件;
在终端的操作系统启动后,操作系统可以读取磁盘,对磁盘分区,此外,磁盘卷过滤驱动也启动,启动的磁盘卷过滤驱动可以读取NTFS文件系统的位图文件。其中,NTFS文件系统(New Technology File System,新技术文件系统)中包含一个位图文件,该位图文件记录了磁盘中簇的使用情况,0代表该簇处于空闲状态,1代表该簇处于被占用状态。这样,磁盘卷过滤驱动就可以确定终端的磁盘中哪些簇被占用,哪些簇未被占用。
步骤102,根据所述位图文件中的信息,记录处于未占用状态的簇。
磁盘卷过滤驱动根据位图文件中记录的每个簇的状态,就可以对处于未被占用状态,即处于空闲状态的簇进行记录。
其中,微软操作系统(DOS、WINDOWS等)中磁盘文件存储管理的最小单位叫做“簇”,一个文件通常存放在一个或多个簇里,但至少要单独占据一个“簇”。也就是说两个文件不能存放在同一个簇中。
一个簇,即一组扇区(一个磁道可以分割成若干个大小相等的圆弧,叫扇区)的意思。因为扇区的单位太小,因此把它捆在一起,组成一个更大的单位更方便进行灵活管理。
每个簇可以包括2、4、8、16、32或64个扇区。显然,簇是操作系统所使用的逻辑概念,而非磁盘的物理特性。
在记录处于未占用状态的簇时,可以记录处于未占用状态的簇的簇号。
步骤103,若检测到簇写入指令,则判断调用所述簇写入指令的进程是否为预设进程;
其中,在向磁盘写入数据时,操作系统中的进程可以调用簇写入IRP(IRP可以看成是Win32窗口程序中的消息)。其中,如果文件的正常写入操作,则IRP包括以下信息:本次要写入数据的簇的地址,写入的内容;而如果是上述预设应用程序(App)触发的文件隐藏写入操作,则IRP可以包括以下信息:要隐藏的文件内容、该需要隐藏的文件的文件大小。
其中,若该IPR作为参数传入到磁盘卷过滤驱动,即,磁盘卷过滤驱动检测到簇写入指令,那么磁盘卷过滤驱动可以判断调用该IRP的进程是否为预设进程。
其中,预设进程为预设应用程序的进程。
其中,如果调用该簇写入IPR的进程为预设应用程序的进程,则说明本次需要进行文件隐藏;相反,如果调用该簇写入指令的进程为操作系统中的除预设应用程序的进程之外的进程,则说明本次需要进行文件的正常写入。
由于文件隐藏的流程也属于一种的文件写入,因此,这里通过对调用IPR的进程进行判断来确定本次是进行哪种形式的文件写入。
此外,在判断调用该IRP的进程是否为预设进程时,不仅仅可以通过对调用IPR的进程进行识别的方式来确定,还可以通过对该簇写入指令,即IPR中的信息进行识别,来判断调用该IRP的进程是否为预设进程。
具体而言,如果该IRP中包括本次要写入的簇号的信息,则说明本次只是正常的文件写入流程,所以,执行步骤105;如果IRP中包括要写入的文件的文件内容,但是不包括要写入的簇号的信息,则说明本次是预设应用程序的进程调用IPR进行文件的隐藏,所以,执行步骤104。
若是,则步骤104,将所述簇写入指令确定为文件隐藏指令;
若否,则步骤105,将所述簇写入指令确定为文件写入指令。
如果执行步骤104,则说明预设应用程序在控制磁盘卷过滤驱动进行文件的隐藏,因此,执行步骤106~步骤109的文件隐藏写入流程。
步骤106,若检测到文件隐藏指令,则获取位图文件中处于未占用状态的簇;
其中,在检测到被确定的文件隐藏指令时,可以获取步骤102中磁盘卷过滤驱动启动时所记录的信息,即,获取位图文件中处于未占用状态的簇,例如80号~100号的簇处于未被占用状态。
步骤107,根据所述文件隐藏指令和每个所述未占用状态的簇所占用的扇区数量,计算隐藏文件需占用的第一目标簇的簇数量;
其中,如上述所述,每个簇可以包括2、4、8、16、32或64个扇区,而不同的簇所包括的扇区数量可以不同,因此,这里磁盘卷过滤驱动可以根据80号~100号中每个簇所分别占用的扇区数量,以及上述文件隐藏指令(也即IRP中的信息),来计算当前需要隐藏的文件需要占用哪些簇,以及这些簇的数量。
其中,在一个实施例中,在执行步骤107时,可以通过以下子步骤S11~S12来实现:
S11,根据所述文件隐藏指令,确定隐藏文件的文件大小;
其中,由于文件隐藏指令,也即对应文件隐藏操作的IRP中包括要隐藏的文件内容,以及该需要隐藏的文件的文件大小。所以,磁盘卷过滤驱动可以根据该文件隐藏指令来确定隐藏文件的文件大小。
S12,根据所述文件大小和每个所述未占用状态的簇所占用的扇区数量,计算所述隐藏文件需占用的第一目标簇的簇数量。
其中,对于每个处于空闲状态(也即未占用状态)的簇所占用的扇区数量这一参数而言,在磁盘卷过滤驱动启动时,磁盘卷过滤驱动就可以获取该参数。
因此,磁盘卷过滤驱动可以根据预先获取的每个处于空闲状态的簇所分别占用的扇区数量,以及所述文件大小,来计算所述隐藏文件需占用的哪些簇号的簇,以及这些需占用的簇的数量。
其中,由于每个扇区所占用的磁盘空间是已知的,而每个空闲簇所占用的扇区数量又是确定的,那么磁盘卷过滤驱动就可以基于需要占用磁盘的文件的文件大小,以及空闲簇所占用的扇区数量,就可以计算出该隐藏文件需要占用哪些簇,也即哪些簇对应的磁盘空间。
步骤108,将所述隐藏文件的文件内容写入处于未占用状态的所述簇数量的第一目标簇中,并拒绝对所述第一目标簇的状态修改;
其中,磁盘卷过滤驱动可以将需要隐藏的文件,即隐藏文件的文件内容写入步骤107中确定的相应数量的第一目标簇中。
其中,由于不同的簇所占用的扇区数量可以不同,因此,该第一目标簇可以包括分别占用不同扇区数量的多种空闲簇。
举例来说,上述记录的空闲簇为80号~100号簇,其中,80号~90号中的每个簇分别占用16个扇区;91号~100号簇中的每个簇分别占用4个扇区。
而隐藏文件需要占用24个扇区,那么经过计算需要占用1个包括16个扇区的簇,还需要占用2个包括4个扇区的簇。因此,第一目标簇包括80号~90号中的簇,还包括91号~100号中的簇。其中,这两种簇的数量分别为一个和两个。
其中,磁盘卷过滤驱动可以将所述隐藏文件的占用16个扇区的部分文件内容写入80号~90号中的一个簇A中,将所述隐藏文件的占用8个扇区的部分文件内容以4个扇区为单位分别写入91号~100号中的两个簇B1、B2中;
其中,簇A可以是磁盘卷过滤驱动预先选择的某个簇号的簇,例如85号簇,簇B1、簇B2可以是磁盘卷过滤驱动预先选择的两个簇号的簇,例如91号和92号。在其他实施例中,也可以不预先进行写入文件内容的簇号选择,而是在进行文件写入时,从候选的空闲簇中随机选择相应数量的第一目标簇来进行隐藏文件的内容写入。
其中,在写入文件时,由于簇是一种逻辑概念,并非磁盘的物理特性,因此,文件实际写入位置仍旧是磁盘,即对应第一目标簇的磁盘空间。
其中,在正常情况下,当对空闲簇写入文件,该空闲簇的状态会从未占用状态修改为占用状态,而本实施例中,需要拒绝本次文件写入操作对该被写入内容的簇的状态的修改。
步骤109,记录所述隐藏文件对应的所述簇数量的第一目标簇的地址信息。
其中,可以将被选中的用于存储隐藏文件的所述簇数量的第一目标簇的地址信息进行记录。其中,记录的形式可以是将上述地址信息记录到磁盘的保留扇区中,还可以是将上述地址信息记录到该隐藏文件的配置文件中。
一个NTFS文件系统可以包括多个保留扇区,由于保留扇区的存储空间较小。因此,当隐藏文件所占用的簇的数量较少时,可以将隐藏文件的地址信息记录到一个保留扇区中。一般情况下一个保留扇区存储一个隐藏文件的相应数量的第一目标簇的地址信息。
而当隐藏文件所占用的空闲簇数量较多时,则可以将该隐藏文件所占用的空闲簇的地址信息存储至配置文件中。其中,一个配置文件可以对应一个或多个隐藏文件。针对一个配置文件对应多个隐藏文件的情况,可以通过在配置文件中做分隔符、标记等方式来划分配置文件中的各个隐藏文件的地址信息。
在本发明实施例的文件隐藏方法中,通过将隐藏文件存储至未被占用的簇中,并对该隐藏文件所占用的簇的地址进行记录,其中,在这个文件隐藏过程中,隐藏文件所占用的簇的状态未改变,仍旧保持未占用状态。无论是使用文件还原软件还是其它文件恢复软件,都无法识别出隐藏文件,提升了文件隐藏的安全性;此外,即便窃密者通过对空闲簇进行遍历的方式来获取隐藏文件,由于存储隐藏文件的簇的状态未修改仍保持未占用状态、且未指向任何文件,所以,窃密者仍旧无法查找到被隐藏的隐藏文件,提升了文件隐藏的安全性。
在步骤105以及步骤109之后,即,使用本发明实施例的文件隐藏方法进行了文件隐藏之后,如果检测到文件写入指令,那么为了避免隐藏文件被写入的文件所覆盖,造成隐藏文件丢失,根据本发明实施例的方法还可以包括:
根据所述文件写入指令,确定待写入文件需占用的处于未占用状态的第二目标簇的地址信息;
其中,如上所述,文件写入指令,即IRP可以包括以下信息:本次要写入数据的簇的地址,写入的内容。那么根据该IRP就可以确定本次写入的文件需要占用哪些处于空闲状态的簇,即第二目标簇的地址信息。
其中,簇的地址信息可以是簇号。
在具体实现时,对于上述IRP里面的本次要写入数据的簇的地址实质上是根据数据实际要写入的地址计算出来的,IRP里面实际携带的是数据实际要写入的地址而非本次要写入数据的簇的地址。其中,该实际要写入的地址是数据的偏移,即,相对磁盘卷开始位置按字节的偏移。那么可以根据该偏移来计算本次要写入数据的簇的地址。具体计算方式可以将这个偏移数据除以512(其中,一个扇区512字节)得到扇区号,再使用这个扇区号除以每个簇包含的扇区数,从而得到簇号。那么该最后计算得到的簇号就是上述本次要写入数据的簇的地址。
将所述第二目标簇的地址信息与预先记录的每个隐藏文件对应的第一目标簇的地址信息进行匹配;
其中,在磁盘卷过滤驱动启动时,磁盘卷过滤驱动可以从保留扇区和/或配置文件中读取每个已经隐藏的文件,即隐藏文件所占用的空闲簇的地址信息,即第一目标簇的地址信息。
由于隐藏文件所占用的空闲簇的状态未修改,仍旧是空闲状态,即未占用状态,那么在其他正常文件进行磁盘写入操作时,就可以从处于未占用状态的簇中进行任意选择来占用,所以,标注处于未占用状态但是实际被占用的簇就有可能被其他正常写入的文件占用。那么为了避免其他正常写入的文件将隐藏文件覆盖,在本实施例中,磁盘卷过滤驱动可以将待写入的正常文件需要占用的空闲簇(即第二目标簇)的地址信息,与预先已经记录的每个隐藏文件所占用的空闲簇(即,第一目标簇)的地址信息进行匹配。
其中,不论是正常写入的文件,还是已经隐藏的隐藏文件,它们所占用的空闲簇的数量可以是一个或一个以上。
若所述第一目标簇和所述第二目标簇之间存在地址信息相同的目标簇,则确定地址信息相同的目标簇所对应的目标隐藏文件;
例如写入文件需要占用的第二目标簇包括80号、90号簇,隐藏文件1所占用的第一目标簇包括80号、81号,隐藏文件2所占用的第一目标簇包括89号、90号,隐藏文件3所占用的第一目标簇包括99号、100号。显然,写入文件与隐藏文件1之间存在地址信息相同的80号簇,写入文件与隐藏文件2之间存在地址信息相同的90号簇。写入文件与隐藏文件3之间不存在地址相同的目标簇。
所以本步骤磁盘卷过滤驱动可以确定目标隐藏文件(隐藏文件1、隐藏文件2)与当前需要写入的文件存在冲突的簇。
其中,在进行正常文件写入操作时,系统使用本发明实施例的方法已经隐藏的文件的数量可以是一个或多个,本发明对此并不限定。那么当已经隐藏文件的数量为多个时,就会存在这里确定的目标隐藏文件的数量为多个的可能性。所以,本实施例的目标隐藏文件的数量为一个或多个。
根据所述目标隐藏文件对应的第一目标簇的地址信息,读取所述第一目标簇中的文件内容;
其中,为了避免隐藏文件1和隐藏文件2在磁盘上的存储内容被当前写入的文件覆盖。磁盘卷过滤驱动可以根据隐藏文件1所占用的空闲簇的地址信息,即80号、81号簇,来从磁盘中读取80号、81号簇所对应文件内容。磁盘卷过滤驱动还可以根据隐藏文件2所占用的空闲簇的地址信息,即89号、90号簇,来从磁盘中读取89号、90号簇所对应文件内容。
根据所述位图文件中处于未占用状态的簇和每个隐藏文件对应的第一目标簇的地址信息,确定处于实际未占用状态的簇;
其中,位图文件中处于未占用状态的簇,包括实际未占用的簇,和实际被隐藏文件占用的簇;那么磁盘卷过滤驱动可以根据位图文件中处于未占用状态的簇和每个隐藏文件所占用的簇(即第一目标簇)的地址信息,来确定出位图文件中处于实际未占用状态的簇,即可以通过每个隐藏文件所占用的簇来对位图文件中处于未占用状态的簇进行过滤,剩余的簇则为实际未占用的簇。
将所述文件内容写入处于所述实际未占用状态的簇中;
其中,可以将从标记空闲状态的第一目标簇中读取出来的该目标隐藏文件的文件内容写入该处于实际未占用状态的簇中。
也就是说,当存在正常写入的文件的写入位置与隐藏文件当前所隐藏的位置冲突的情况时,本发明实施例的方法可以将存在位置冲突的隐藏文件的全部文件内容从当前存储的簇中提取出来转移存储到其他处于未占用状态且未被其他隐藏文件占用的空闲簇中,确保隐藏文件不被正常写入的文件所覆盖。
其中,在将目标隐藏文件的文件内容写入处于所述实际未占用状态的簇中的过程与上述流程中的步骤107~步骤108的流程类似,这里不再赘述。其中,区别在于步骤107中的文件隐藏指令中的信息替换为在将目标隐藏文件在第一目标簇中的存储信息(例如对包括M个扇区的簇占用多少个的信息),根据该存储信息就可以直接确定该目标隐藏文件的文件大小。
根据所述文件内容写入的处于所述实际未占用状态的簇的地址信息,对预先记录的所述目标隐藏文件对应的第一目标簇的地址信息进行更新;
例如,磁盘卷过滤驱动将隐藏文件1的文件内容重新写入至82号、83号的空闲簇中,将隐藏文件2的文件内容重新写入至84号、85号的空闲簇中。那么本步骤中,为了便于隐藏文件1、隐藏文件2的准确还原,磁盘卷过滤驱动还可以对预先记录的存储隐藏文件1的空闲簇(即第一目标簇)的地址信息进行更新,即从80号、81号空闲簇更新至82号、83号空闲簇;以及对预先记录的存储隐藏文件2的空闲簇(即第一目标簇)的地址信息进行更新,即从89号、90号空闲簇更新至84号、85号空闲簇。
将所述待写入文件写入所述第二目标簇中;
其中,由于与待写入文件存在簇冲突的目标隐藏文件已经从原始的空闲簇转存至新的空闲簇中,所以,可以将该待写入文件写入至80号、90号簇中。其中,该80号、90号簇中的原始写入内容可以被该待写入文件的文件内容所覆盖。
将所述第二目标簇的状态由未占用状态修改为占用状态。
其中,由于该80号、90号簇是被正常写入的文件占用的,而非隐藏文件所占用,所以,这里需要将第二目标簇,即该80号、90号簇的状态由未占用状态(即空闲状态)修改为占用状态。
在本发明实施例中,由于隐藏文件是存储在空闲簇中的,文件系统并不知道这些空闲簇已被放入隐藏文件的数据,因此,在生成新文件,或扩大文件等情况时,有可能会使用被隐藏文件占用的空闲簇,导致隐藏文件被破坏;而本发明实施例的方法当检测到隐藏文件占用的空闲簇要有数据写入时,可以提前将空闲簇中存储的隐藏文件的内容读出,并转移到其它实际处于空闲状态的空闲簇中,从而达到保护隐藏文件的目的,而且由于隐藏文件所存储的簇的位置不固定,其可以灵活变化,使得隐藏文件的安全性进一步提高。
可选地,在另一个实施例中,所述若所述第一目标簇和所述第二目标簇之间存在地址信息相同的目标簇,则确定地址信息相同的目标簇所对应的目标隐藏文件之后,根据本发明实施例的方法还可以包括:
根据所述目标隐藏文件对应的目标簇的地址信息,读取所述目标簇中的文件内容;
继续以上述实施例的举例来说明,例如写入文件需要占用的第二目标簇包括80号、90号簇,隐藏文件1所占用的第一目标簇包括80号、81号,隐藏文件2所占用的第一目标簇包括89号、90号,隐藏文件3所占用的第一目标簇包括99号、100号。显然,写入文件与隐藏文件1之间存在地址信息相同的80号簇,写入文件与隐藏文件2之间存在地址信息相同的90号簇。写入文件与隐藏文件3之间不存在地址相同的目标簇。
所以,目标隐藏文件包括隐藏文件1和隐藏文件2。其中,隐藏文件1会被文件覆盖的目标簇为80号簇,隐藏文件2会被文件覆盖的目标簇为90号簇。在本实施例中,为了提升系统性能,避免对本次不会覆盖的簇中的内容进行转移,这里可以只对与写入文件存在冲突的目标簇中的文件内容进行读取,即,只读取80号簇(即目标簇)中关于隐藏文件1中的部分文件内容,以及读取90号簇(即目标簇)中关于隐藏文件2中的部分文件内容。
根据所述位图文件中处于未占用状态的簇和每个隐藏文件对应的第一目标簇的地址信息,确定处于实际未占用状态的簇;
该步骤的详细解释详见上述实施例,这里不再赘述。
将所述文件内容写入处于所述实际未占用状态的簇中;
其中,这里需要写入的文件内容即为80号簇(即目标簇)中关于隐藏文件1中的部分文件内容,以及读取90号簇(即目标簇)中关于隐藏文件2中的部分文件内容。例如将80号簇(即目标簇)中关于隐藏文件1中的部分文件内容写入实际未占用状态的85号簇中,将90号簇(即目标簇)中关于隐藏文件2中的部分文件内容写入实际未占用状态的91号簇中。
对于所写入的实际未占用状态的簇的确定上,可以参照上述实施例的类似步骤,这里不再赘述。
根据所述文件内容写入的处于所述实际未占用状态的簇的地址信息,对预先记录的所述目标隐藏文件对应的目标簇的地址信息进行更新;
将所述待写入文件写入所述第二目标簇中;
将所述第二目标簇的状态由未占用状态修改为占用状态。
上述三个步骤与上个实施例的最后三个步骤的执行原理类似,这里不再赘述。
在本发明实施例中,由于隐藏文件是存储在空闲簇中的,文件系统并不知道这些空闲簇已被放入隐藏文件的数据。因此,在生成新文件,或扩大文件等情况时,有可能会使用被隐藏文件占用的空闲簇,导致隐藏文件被破坏;而本发明实施例的方法当检测到隐藏文件占用的空闲簇要有数据写入时,可以提前将与待写入的文件存在簇冲突的目标簇中存储的隐藏文件的部分内容读出,并转移到其它实际处于空闲状态的空闲簇中。这样,可以避免对隐藏文件的所有文件内容都进行转移,而只转移与当前待写入文件存在簇冲突的目标簇中的文件内容,从而提升了系统性能并达到保护隐藏文件的目的;而且由于隐藏文件所存储的簇的位置不固定,其可以灵活变化,使得隐藏文件的安全性进一步提高。
根据本发明的一个实施例,对应于上述文件隐藏方法,本发明实施例还提供了一种隐藏文件的还原方法。
该方法可以包括:
预设应用程序启动,磁盘卷过滤驱动;
磁盘卷过滤驱动读取隐藏文件的地址信息;
例如在隐藏文件的配置文件或者所在的保留扇区中读取该隐藏文件所占用的标记空闲状态的空闲簇。
磁盘卷过滤驱动依据隐藏文件的地址信息读取指定空闲簇中的内容;
该指定空闲簇,即保留扇区中记录的存储该隐藏文件的空闲簇。
磁盘卷过滤驱动将读取的空闲簇中的文件内容依次写入文件中;
磁盘卷过滤驱动对该指定空闲簇中的文件内容进行删除;
磁盘卷过滤驱动删除该隐藏文件的地址信息。
这样,就实现了对上述图1方法实施例所隐藏的文件的还原。
借助于本发明实施例的上述技术方案,基于磁盘卷过滤驱动对涉密文件进行隐藏,使得除本人外,涉密文件对任何人都无痕隐藏,安全性极高,即使磁盘被窃也无法找到文件,避免隐藏后的文件被窃取的问题。
需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。
与上述本发明实施例所提供的方法相对应,参照图2,示出了本发明一种文件隐藏装置实施例的结构框图,具体可以包括如下模块:
获取模块21,用于若检测到文件隐藏指令,则获取位图文件中处于未占用状态的簇;
计算模块22,用于根据所述文件隐藏指令和每个所述未占用状态的簇所占用的扇区数量,计算隐藏文件需占用的第一目标簇的簇数量;
第一写入模块23,用于将所述隐藏文件的文件内容写入处于未占用状态的所述簇数量的第一目标簇中,并拒绝对所述第一目标簇的状态修改;
第一记录模块24,用于记录所述隐藏文件对应的所述簇数量的第一目标簇的地址信息。
可选地,所述计算模块22包括:
确定子模块,用于根据所述文件隐藏指令,确定隐藏文件的文件大小;
计算子模块,用于根据所述文件大小和每个所述未占用状态的簇所占用的扇区数量,计算所述隐藏文件需占用的第一目标簇的簇数量。
可选地,所述装置还包括:
第一读取模块,用于读取NTFS文件系统的位图文件;
第二记录模块,用于根据所述位图文件中的信息,记录处于未占用状态的簇。
可选地,所述装置还包括:
判断模块,用于若检测到簇写入指令,则判断调用所述簇写入指令的进程是否为预设进程;
第一确定模块,用于若所述判断模块判断调用所述簇写入指令的进程为预设进程,则将所述簇写入指令确定为文件隐藏指令;
第二确定模块,用于若所述判断模块判断调用所述簇写入指令的进程不为预设进程,则将所述簇写入指令确定为文件写入指令。
可选地,所述装置还包括:
第三确定模块,用于根据所述文件写入指令,确定待写入文件需占用的处于未占用状态的第二目标簇的地址信息;
匹配模块,用于将所述第二目标簇的地址信息与预先记录的每个隐藏文件对应的第一目标簇的地址信息进行匹配;
第四确定模块,用于若所述第一目标簇和所述第二目标簇之间存在地址信息相同的目标簇,则确定地址信息相同的目标簇所对应的目标隐藏文件;
第二读取模块,用于根据所述目标隐藏文件对应的第一目标簇的地址信息,读取所述第一目标簇中的文件内容;
第五确定模块,用于根据所述位图文件中处于未占用状态的簇和每个隐藏文件对应的第一目标簇的地址信息,确定处于实际未占用状态的簇;
第二写入模块,用于将所述文件内容写入处于所述实际未占用状态的簇中;
第一更新模块,用于根据所述文件内容写入的处于所述实际未占用状态的簇的地址信息,对预先记录的所述目标隐藏文件对应的第一目标簇的地址信息进行更新;
第三写入模块,用于将所述待写入文件写入所述第二目标簇中;
第一修改模块,用于将所述第二目标簇的状态由未占用状态修改为占用状态。
可选地,所述装置还包括:
第三读取模块,用于根据所述目标隐藏文件对应的目标簇的地址信息,读取所述目标簇中的文件内容;
第六确定模块,用于根据所述位图文件中处于未占用状态的簇和每个隐藏文件对应的第一目标簇的地址信息,确定处于实际未占用状态的簇;
第四写入模块,用于将所述文件内容写入处于所述实际未占用状态的簇中;
第二更新模块,用于根据所述文件内容写入的处于所述实际未占用状态的簇的地址信息,对预先记录的所述目标隐藏文件对应的目标簇的地址信息进行更新;
第五写入模块,用于将所述待写入文件写入所述第二目标簇中;
第二修改模块,用于将所述第二目标簇的状态由未占用状态修改为占用状态。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
本领域内的技术人员应明白,本发明实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本发明实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明实施例是参照根据本发明实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明实施例范围的所有变更和修改。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
以上对本发明所提供的一种文件隐藏方法和一种文件隐藏装置,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (6)
1.一种文件隐藏方法,其特征在于,应用于文件隐藏系统中的磁盘卷过滤驱动,所述文件隐藏系统还包括预设应用程序,所述方法包括:
若检测到簇写入指令,则判断调用所述簇写入指令的进程是否为预设进程,所述预设进程为所述预设应用程序的进程;
若是,则将所述簇写入指令确定为文件隐藏指令;
若否,则将所述簇写入指令确定为文件写入指令;
若检测到文件隐藏指令,则获取位图文件中处于实际未占用状态的簇,所述位图文件为NTFS文件系统的位图文件;
根据所述文件隐藏指令和每个所述实际未占用状态的簇所占用的扇区数量,计算隐藏文件需占用的第一目标簇的簇数量;
将所述隐藏文件的文件内容写入处于实际未占用状态的所述簇数量的第一目标簇中,并拒绝所述位图文件上对所述第一目标簇的状态修改;
记录所述隐藏文件对应的所述簇数量的第一目标簇的地址信息;
若检测到文件写入指令,则根据所述文件写入指令,确定待写入文件需占用的处于标注未占用状态的第二目标簇的地址信息;
将所述第二目标簇的地址信息与预先记录的每个隐藏文件对应的第一目标簇的地址信息进行匹配;
若所述第一目标簇和所述第二目标簇之间存在地址信息相同的目标簇,则确定地址信息相同的目标簇所对应的目标隐藏文件;
根据所述目标隐藏文件对应的目标簇的地址信息,读取所述目标簇中的文件内容;
根据所述位图文件中处于标注未占用状态的簇和每个隐藏文件对应的第一目标簇的地址信息,确定处于实际未占用状态的簇;
将所述文件内容写入处于所述实际未占用状态的簇中;
根据所述文件内容写入的处于所述实际未占用状态的簇的地址信息,对预先记录的所述目标隐藏文件对应的目标簇的地址信息进行更新;
将所述待写入文件写入所述第二目标簇中;
将所述第二目标簇的状态由未占用状态修改为占用状态。
2.根据权利要求1所述的方法,其特征在于,所述根据所述文件隐藏指令和每个所述未占用状态的簇所占用的扇区数量,计算隐藏文件需占用的第一目标簇的簇数量,包括:
根据所述文件隐藏指令,确定隐藏文件的文件大小;
根据所述文件大小和每个所述未占用状态的簇所占用的扇区数量,计算所述隐藏文件需占用的第一目标簇的簇数量。
3.根据权利要求1所述的方法,其特征在于,所述若检测到文件隐藏指令,则获取位图文件中处于未占用状态的簇之前,所述方法还包括:
读取NTFS文件系统的位图文件;
根据所述位图文件中的信息,记录处于未占用状态的簇。
4.一种文件隐藏装置,其特征在于,应用于文件隐藏系统中的磁盘卷过滤驱动,所述文件隐藏系统还包括预设应用程序,所述装置包括:
判断模块,用于若检测到簇写入指令,则判断调用所述簇写入指令的进程是否为预设进程,所述预设进程为所述预设应用程序的进程;
第一确定模块,用于若所述判断模块判断调用所述簇写入指令的进程为预设进程,则将所述簇写入指令确定为文件隐藏指令;
第二确定模块,用于若所述判断模块判断调用所述簇写入指令的进程不为预设进程,则将所述簇写入指令确定为文件写入指令;
获取模块,用于若检测到文件隐藏指令,则获取位图文件中处于未占用状态的簇,所述位图文件为NTFS文件系统的位图文件;
计算模块,用于根据所述文件隐藏指令和每个所述未占用状态的簇所占用的扇区数量,计算隐藏文件需占用的第一目标簇的簇数量;
第一写入模块,用于将所述隐藏文件的文件内容写入处于未占用状态的所述簇数量的第一目标簇中,并拒绝所述位图文件上对所述第一目标簇的状态修改;
第一记录模块,用于记录所述隐藏文件对应的所述簇数量的第一目标簇的地址信息;
第三确定模块,用于若检测到文件写入指令,则根据所述文件写入指令,确定待写入文件需占用的处于未占用状态的第二目标簇的地址信息;
匹配模块,用于将所述第二目标簇的地址信息与预先记录的每个隐藏文件对应的第一目标簇的地址信息进行匹配;
第四确定模块,用于若所述第一目标簇和所述第二目标簇之间存在地址信息相同的目标簇,则确定地址信息相同的目标簇所对应的目标隐藏文件;
第二读取模块,用于根据所述目标隐藏文件对应的目标簇的地址信息,读取所述目标簇中的文件内容;
第五确定模块,用于根据所述位图文件中处于未占用状态的簇和每个隐藏文件对应的第一目标簇的地址信息,确定处于实际未占用状态的簇;
第二写入模块,用于将所述文件内容写入处于所述实际未占用状态的簇中;
第一更新模块,用于根据所述文件内容写入的处于所述实际未占用状态的簇的地址信息,对预先记录的所述目标隐藏文件对应的目标簇的地址信息进行更新;
第三写入模块,用于将所述待写入文件写入所述第二目标簇中;
第一修改模块,用于将所述第二目标簇的状态由未占用状态修改为占用状态。
5.根据权利要求4所述的装置,其特征在于,所述计算模块包括:
确定子模块,用于根据所述文件隐藏指令,确定隐藏文件的文件大小;
计算子模块,用于根据所述文件大小和每个所述未占用状态的簇所占用的扇区数量,计算所述隐藏文件需占用的第一目标簇的簇数量。
6.根据权利要求4所述的装置,其特征在于,所述装置还包括:
第一读取模块,用于读取NTFS文件系统的位图文件;
第二记录模块,用于根据所述位图文件中的信息,记录处于未占用状态的簇。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810550848.XA CN108898030B (zh) | 2018-05-31 | 2018-05-31 | 文件隐藏方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810550848.XA CN108898030B (zh) | 2018-05-31 | 2018-05-31 | 文件隐藏方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108898030A CN108898030A (zh) | 2018-11-27 |
CN108898030B true CN108898030B (zh) | 2020-08-07 |
Family
ID=64343650
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810550848.XA Active CN108898030B (zh) | 2018-05-31 | 2018-05-31 | 文件隐藏方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108898030B (zh) |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100714709B1 (ko) * | 2006-01-11 | 2007-05-04 | 삼성전자주식회사 | 숨김 영역 관리 장치 및 방법 |
CN101546295B (zh) * | 2008-03-24 | 2010-12-22 | 上海梅山钢铁股份有限公司 | 基于计算机硬盘分区的数据备份和恢复方法 |
CN101908361B (zh) * | 2010-09-14 | 2012-05-23 | 杭州电子科技大学 | 一种u盘私有信息隐藏方法 |
CN103220272A (zh) * | 2013-03-02 | 2013-07-24 | 苏州阔地网络科技有限公司 | 一种文件隐藏处理的方法及系统 |
-
2018
- 2018-05-31 CN CN201810550848.XA patent/CN108898030B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN108898030A (zh) | 2018-11-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8214406B2 (en) | Backup of incremental metadata in block based backup systems | |
US7624243B2 (en) | Apparatus and method for protecting system data on computer hard-disk | |
US8627020B2 (en) | Security erase of a delete file and of sectors not currently assigned to a file | |
US8818950B2 (en) | Method and apparatus for localized protected imaging of a file system | |
US8606751B1 (en) | System and method for backup by inode number | |
JP5833754B2 (ja) | ファイルシステムをクリーニングするための方法及び装置並びにその記憶媒体 | |
WO2007103141A2 (en) | Method and apparatus for providing virtual machine backup | |
EP2742417A1 (en) | Shrinking virtual hard disk image | |
US7469261B2 (en) | Apparatus and method for protecting system data on computer hard-disk | |
JP2008146408A (ja) | データ記憶装置、そのデータ再配置方法、プログラム | |
CN111382126B (zh) | 删除文件及阻碍文件恢复的系统和方法 | |
CN111382011A (zh) | 一种文件数据存取方法、装置和计算机可读存储介质 | |
JP3108090B2 (ja) | フアイリングシステムのデータ管理方法および装置 | |
CN113190178B (zh) | 一种fat32文件系统中数据无痕删除方法及系统 | |
CN107341072A (zh) | 一种数据备份方法及装置 | |
CN113448946A (zh) | 数据迁移方法及装置、电子设备 | |
US20030074376A1 (en) | File manager for storing several versions of a file | |
CN108898030B (zh) | 文件隐藏方法和装置 | |
CN111741106A (zh) | 基于文件存储系统的文件归档方法及装置、电子设备 | |
WO2009110665A1 (en) | Information storage medium for recording data according to journaling file system, and method of and apparatus for writing/recovering data using journaling file system | |
KR101826176B1 (ko) | 스냅샷 방식의 이미지 테이블을 이용한 백업데이터 제어방법 | |
US20040172426A1 (en) | Method of and apparatus for taking back-up and checking alteration of data, and computer product | |
CN111913915B (zh) | 文件隐藏方法和装置 | |
CN113885948A (zh) | windows镜像分层的管理方法及装置 | |
CN103425464A (zh) | 母盘制作方法及装置 |
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 |