KR101688629B1 - 메타데이터 및 데이터 클러스터를 이용하는 파일 시스템 복구 방법 및 장치 - Google Patents

메타데이터 및 데이터 클러스터를 이용하는 파일 시스템 복구 방법 및 장치 Download PDF

Info

Publication number
KR101688629B1
KR101688629B1 KR1020150160868A KR20150160868A KR101688629B1 KR 101688629 B1 KR101688629 B1 KR 101688629B1 KR 1020150160868 A KR1020150160868 A KR 1020150160868A KR 20150160868 A KR20150160868 A KR 20150160868A KR 101688629 B1 KR101688629 B1 KR 101688629B1
Authority
KR
South Korea
Prior art keywords
mft entry
candidate
mft
entry
data cluster
Prior art date
Application number
KR1020150160868A
Other languages
English (en)
Inventor
황현욱
김기범
이승용
지성택
Original Assignee
한국전자통신연구원
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 한국전자통신연구원 filed Critical 한국전자통신연구원
Priority to KR1020150160868A priority Critical patent/KR101688629B1/ko
Priority to US15/224,853 priority patent/US10884873B2/en
Application granted granted Critical
Publication of KR101688629B1 publication Critical patent/KR101688629B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1458Management of the backup or restore process
    • G06F11/1469Backup restoration techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1448Management of the data involved in backup or backup restore
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1435Saving, restoring, recovering or retrying at system level using file system or storage system metadata
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1471Saving, restoring, recovering or retrying involving logging of persistent data for recovery
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/1727Details of free space management performed by the file system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0643Management of files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0662Virtualisation aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/80Database-specific techniques

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Library & Information Science (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Human Computer Interaction (AREA)

Abstract

메타데이터 및 데이터 클러스터를 이용하는 파일 시스템 복구 방법 및 장치가 제공된다. 파일 시스템 복구 장치는, 디스크 또는 증거 이미지에서 MFT 엔트리 리스트를 생성하고, 적어도 하나의 데이터 클러스터 후보를 수집하고, MFT 엔트리 리스트 내의 적어도 하나의 MFT 엔트리 및 상기 적어도 하나의 데이터 클러스터 후보를 사용하여 적어도 하나의 MFT 엔트리-데이터 클러스터 쌍 후보를 생성한다. 파일 시스템 복구 장치는 적어도 하나의 MFT 엔트리-데이터 클러스터 쌍 후보에 대한 분석을 수행함으로써 가상 파티션의 속성 값을 결정하고, 속성 값에 기반하여 가상 파티션을 생성한다.

Description

메타데이터 및 데이터 클러스터를 이용하는 파일 시스템 복구 방법 및 장치{METHOD AND APPARATUS FOR RECOVERY OF FILE SYSTEM USING METADATA AND DATA CLUSTER}
아래의 실시예들은 파일 시스템에 관한 것으로, 보다 상세히는 메타데이터 및 데이터 클러스터를 이용하는 파일 시스템의 복구를 위한 방법 및 장치가 개시된다.
하드디스크(harddisk)와 같은 저장소(storage)의 용량이 커짐에 따라, 컴퓨터 시스템의 운영 체제(operating system)는 대용량의 저장소에 적합한 파일 시스템을 사용한다. 예를 들면, 윈도우(windows) 운영 체제는 대용량의 저장소를 지원하는 엔티에프에스(NTFS) 파일 시스템을 제공한다.
이러한 흐름에 따라, 사이버테러에서 발생하는 파괴 행위에 있어서도 대용량의 파일 시스템이 주요한 대상(target)이 되었다.
사이버테러 또는 기타의 다른 원인으로 인해 파일 시스템이 파괴되었을 경우, 파괴된 파일 시스템의 복구를 위한 작업이 진행되어야 한다.
파일 시스템의 복구를 위해서는 기정의된(predefined) 정보가 요구된다.
파일 시스템의 복구를 위한 핵심적인 정보 중 하나는 마스터 파일 테이블(Master File Table; MFT)이다. MFT는 NTFS 및 NTFS 호환 파일 시스템 등에서 사용된다. MFT는 파일 시스템의 볼륨(volume)의 모든 파일 및 디렉토리(directory)에 대한 정보를 포함한다. 예를 들면, MFT는 파일의 이름, 디렉토리의 이름, 파일에 관련된 시간, 디렉토리에 관련된 시간 및 파일 크기 등을 포함한다.
MFT 엔트리는 "$MFT" 메타데이터 파일의 내용에서, 파일 또는 디렉토리의 정보를 유지하는 엔트리이다. 가령, MFT 엔트리는 1024 바이트와 같은 고정된 크기를 가질 수 있다. MFT 엔트리가 파일 또는 디렉토리 중 어떤 것을 나타내는가는 MFT 엔트리의 속성 레코드 타입에 의해 지정될 수 있다. 말하자면, MFT 엔트리의 속성 레코드 타입이 파일이면, MFT 엔트리는 파일을 나타낸다. MFT 엔트리의 속성 레코드 타입이 디렉토리이면, MFT 엔트리는 디렉토리를 나타낸다.
이하에서, 파일을 나타내는 MFT 엔트리를 파일의 MFT 엔트리로 명명하고, 디렉토리를 나타내는 MFT 엔트리를 디렉토리의 MFT 엔트리로 명명한다.
데이터 클러스터는 MFT 엔트리가 나타내는 파일 또는 디렉토리의 데이터 내용일 수 있다. 말하자면, 서로 대응하는 MFT 엔트리 및 데이터 클러스터는 각각 파일 또는 디렉토리의 정보 및 상기의 파일 또는 디렉토리의 데이터일 수 있다. 또는, 파일 또는 디렉토리에 대하여, MFT 엔트리는 파일 또는 디렉토리로의 접근(access)을 위한 정보를 나타낼 수 있고, 데이터 클러스터는 파일 또는 디렉토리의 내용을 나타낼 수 있다.
MFT 엔트리 0 번인 파일은 "$MFT" 메타데이터 파일이다. "$MFT" 메타데이터 파일은 MFT의 전체에 대한 정보를 포함한다. 따라서, 일반적인 포렌식(forensics) 도구(tool)는 MFT의 전체의 레이아웃(layout)에 대한 정보를 포함하는 "$MFT" 메타데이터 파일에 대한 분석을 통해 복구를 위해 사용될 정보를 획득한다.
예를 들면, NTFS에서, $MFT 시작 클러스터 주소는 $MFT 메타데이터의 시작 위치를 나타낼 수 있다. $MFT 시작 클러스터 주소는 NTFS의 부트 레코드(Boot Record; BR)에서 오프셋(offset)이 48 내지 55인 영역에 저장된다. 여기에서, 오프셋의 단위는 바이트일 수 있다. 볼륨의 정보를 관리하는 부트 레코드(Boot Record; BR)의 위치는, 마스터 부트 레코드(Master Boot Record; MBR) 또는 지유아이디 파티션 테이블(GUID Partition Table; GPT)와 같이, 파티션 관리 정보로서 관리된다. 즉, 파일 시스템 분석의 일반적인 상황에서, 포렌식 도구는 MBR 또는 GPT를 분석함으로써 BR의 위치를 획득할 수 있다. 또한, 포렌식 도구는 BR의 정보를 통해 파티션에 대한 기본적인 정보를 획득할 수 있고, 파일의 메타데이터 정보가 시작하는 위치를 획득할 수 있다. 파티션에 대한 기본적인 정보는 섹터의 크기, 클러스터의 크기 및 MFT 엔트리의 크기 등을 포함할 수 있다.
파일 시스템의 복구와 관련된 종래의 기술로서, 한국등록특허 제1078289호인 "파티션 복구 방법 및 장치가 있다. 한국등록특허 제1078289호에서는, 기존의 삭제되지 않은 부트 레코드에서 정보를 검색하고, 검색된 정보를 통해 삭제된 파티션을 복구하는 방법이 개시되었다. 또한, 한국등록특허 제1403305호인 "백업부트레코드 정보를 이용한 파티션 복구 장치 및 방법"에서는, 파일 시스템에서 백업되는 백업 부트 레코드(Backup Boot Record; BBR)를 검색하고, BBR을 통해 삭제된 파티션 정보를 복구하는 방법이 개시되었다.
디스크의 파티션 정보를 유지하는 데이터, 볼륨의 정보를 유지하는 데이터 및 파일 시스템의 MFT 정보를 유지하는 데이터가 손상된 경우에도, 파일 또는 디렉토리의 정보를 유지하는 데이터를 사용하여 파티션을 복원하는 방법 및 장치를 제공할 수 있다.
기정의된 MFT 엔트리 및 기정의된 MFT 엔트리의 기정의된 데이터 클러스터의 쌍을 이용하여 파티션의 복원에 요구되는 속성 값을 계산하는 방법 및 장치를 제공할 수 있다.
복원된 파티션에서, 파괴되지 않은 MFT 엔트리가 나타내는 파일 및 디렉토리를 복구하는 방법 및 장치를 제공할 수 있다.
기정의된 MFT 엔트리 및 기정의된 데이터 클러스터를 사용하여 멀티 파티션들의 각각의 부트 레코드의 위치 및 볼륨 크기를 계산하는 방법 및 장치를 제공할 수 있고, 계산된 부트 레코드의 위치 및 볼륨 크기를 사용하여 멀티 파티션들을 복원하는 방법 및 장치를 제공할 수 있다.
사이버 테러 등에 의해 디스크가 파괴된 경우에도, 파일 또는 디렉토리의 정보를 유지하는 데이터를 사용하여 파티션의 레이아웃을 복원함으로써 악성 코드의 흔적을 검출하고, 침해 사고에 대한 대응을 가능하게 하는 방법 및 장치를 제공할 수 있다.
대용량의 디스크 또는 증거 이미지에 대해서도 검색 시간을 단축시킬 수 있도록, 멀티 프로세서를 이용하여 파티션을 복원하는 방법 및 장치를 제공할 수 있다.
실시예들의 목적은 이상에서 언급한 목적으로 제한되지 않으며, 언급되지 않은 또 다른 목적들은 아래의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.
일 측에 있어서, 디스크 또는 증거 이미지에서 적어도 하나의 마스터 파일 테이블(Master File Table; MFT) 엔트리 리스트를 생성하고 적어도 하나의 데이터 클러스터 후보를 수집하는 단계; 상기 MFT 엔트리 리스트 및 상기 적어도 하나의 데이터 클러스터 후보를 사용하여 적어도 하나의 MFT 엔트리-데이터 클러스터 쌍 후보를 생성하는 단계; 상기 적어도 하나의 MFT 엔트리-데이터 클러스터 쌍 후보에 대한 분석을 수행함으로써 가상 파티션의 속성 값을 결정하는 단계; 및 상기 속성 값에 기반하여 상기 가상 파티션을 생성하는 단계를 포함하는 파일 시스템 복구 방법이 제공된다.
상기 수집하는 단계는 상기 디스크 또는 상기 증거 이미지의 복수의 분할된 영역들에 대해 복수의 실행 유닛들에 의해 병렬로 각각 수행될 수 있다.
상기 복수의 실행 유닛들의 개수는 상기 디스크 또는 상기 증거 이미지의 크기 및 상기 파일 시스템 복구 방법을 수행하는 파일 시스템 복구 장치의 프로세서의 개수에 기반하여 결정될 수 있다.
상기 적어도 하나의 MFT 엔트리-데이터 클러스터 쌍 후보의 각 MFT 엔트리-데이터 클러스터 쌍 후보는 MFT 엔트리 후보 및 상기 적어도 하나의 데이터 클러스터 후보 중 기정의된 조건을 충족시키는 데이터 클러스터 후보의 쌍일 수 있다.
상기 MFT 엔트리 후보는 상기 MFT 엔트리 리스트의 적어도 하나의 MFT 엔트리 중 기정의된 조건을 충족시키는 MFT 엔트리일 수 있다.
상기 적어도 하나의 MFT 엔트리-데이터 클러스터 쌍 후보를 이루는 상기 MFT 엔트리 후보는 기정의된 타입의 MFT 엔트리일 수 있다.
상기 기정의된 타입의 MFT 엔트리는 MFT 엔트리 내에 기록된 논리적 클러스터 번호(Logical Cluster Number; LCN) 주소로부터의 물리적 주소로의 매핑을 가능하게 하는 MFT 엔트리일 수 있다.
상기 기정의된 MFT 엔트리의 MFT 엔트리 헤더는 기정의된 MFT 엔트리 헤더 시그니처를 포함할 수 있다.
상기 수집하는 단계는, MFT 최소 생성 단위를 이용하여 상기 디스크 또는 상기 증거 이미지에서 데이터가 독출될 위치를 결정하는 단계; 상기 위치에서 MFT 엔트리가 검출되면, 상기 검출된 MFT 엔트리를 상기 MFT 엔트리 리스트에 추가하는 단계; 및 상기 추가된 MFT 엔트리의 이전에, 적어도 하나의 역방향으로 연속된 MFT 엔트리가 검출되면 상기 적어도 하나의 역방향으로 연속된 MFT 엔트리를 상기 MFT 엔트리 리스트에 추가하는 단계를 포함할 수 있다.
상기 검출된 MFT 엔트리를 상기 MFT 엔트리 리스트에 추가하는 단계는, 상기 결정된 위치에서 데이터를 독출하는 단계; 상기 독출된 데이터 중 기정의된 영역이 기정의된 MFT 엔트리 헤더 시그니처의 값을 가지면 독출된 데이터가 MFT 엔트리인 것으로 판단하는 단계; 및 상기 독출된 데이터가 상기 MFT 엔트리인 것으로 판단되면, 상기 독출된 데이터를 상기 MFT 엔트리로서 상기 MFT 엔트리 리스트에 추가하는 단계를 포함할 수 있다.
상기 추가하는 단계는, 상기 MFT 최소 생성 단위만큼 상기 위치를 이동시키는 단계를 더 포함할 수 있다.
상기 기정의된 조건은 상기 MFT 엔트리 후보 및 상기 데이터 클러스터 후보가 동일한 파티션 내의 데이터인 것일 수 있다.
상기 적어도 하나의 MFT 엔트리-데이터 클러스터 쌍 후보를 생성하는 단계는, 상기 MFT 엔트리 리스트의 적어도 하나의 MFT 엔트리 후보 중 대상 MFT 엔트리 후보 및 상기 적어도 하나의 데이터 클러스터 후보 중 대상 데이터 클러스터 후보를 사용하여 부트 레코드의 위치를 계산하는 단계; 상기 부트 레코드의 위치에 기반하여 상기 대상 MFT 엔트리 후보 및 상기 대상 데이터 클러스터 후보가 동일한 파티션 내의 데이터인지 여부를 판단하는 단계; 및 상기 대상 MFT 엔트리 후보 및 상기 대상 데이터 클러스터 후보가 동일한 파티션 내의 데이터이면 상기 대상 MFT 엔트리 후보 및 상기 대상 데이터 클러스터 후보의 쌍을 상기 적어도 하나의 MFT 엔트리-데이터 클러스터 쌍 후보에 추가하는 단계를 포함할 수 있다.
상기 부트 레코드의 위치는 상기 대상 MFT 엔트리 후보 및 상기 대상 데이터 클러스터 후보 간의 상대적인 위치에 기반하여 계산될 수 있다.
상기 부트 레코드의 위치를 계산하는 단계는, 상기 대상 MFT 엔트리 후보의 속성 값을 획득하는 단계; 상기 대상 데이터 클러스터 후보의 속성 값을 획득하는 단계; 및 상기 대상 MFT 엔트리 후보의 속성 값 및 상기 대상 데이터 클러스터 후보의 속성 값을 사용하여 상기 부트 레코드의 위치를 계산하는 단계를 포함할 수 있다.
상기 대상 MFT 엔트리 후보의 속성 값은 MFT 엔트리 파일 크기, MFT 엔트리 파일 시작 위치 클러스터 오프셋 및 MFT 엔트리 파일 클러스터 개수를 포함할 수 있다.
상기 대상 데이터 클러스터 후보의 속성 값은 현재 물리적 섹터 오프셋을 포함할 수 있다.
상기 부트 레코드의 물리적 섹터 오프셋은 상기 현재 물리적 섹터 오프셋, 상기 MFT 엔트리 파일 시작 위치 클러스터 오프셋 및 상기 가상 파티션의 클러스터 당 바이트 개수에 기반하여 계산될 수 있다.
상기 클러스터 당 바이트 개수는 상기 MFT 엔트리 파일 크기 및 상기 MFT 엔트리 파일 클러스터 개수에 기반하여 결정될 수 있다.
상기 적어도 하나의 MFT 엔트리 후보의 속성 값은 디렉토리 인덱스 크기, 디렉토리 인덱스 시작 위치 클러스터 오프셋 및 MFT 엔트리의 디렉토리 인덱스 클러스터 개수를 포함할 수 있다.
상기 적어도 하나의 대상 데이터 클러스터 후보 속성 값은 상기 데이터 클러스터 후보의 물리적 섹터 오프셋을 포함할 수 있다.
상기 가상 파티션의 속성 값은 상기 가상 파티션의 볼륨 크기를 포함할 수 있다.
상기 볼륨 크기는 상기 가상 파티션의 클러스터 오프셋 최대 값 및 상기 가상 파티션의 부트 레코드의 위치를 사용하여 계산될 수 있다.
다른 일 측에 있어서, 디스크 또는 증거 이미지에서 적어도 하나의 마스터 파일 테이블(Master File Table; MFT) 엔트리 리스트를 생성하고 적어도 하나의 데이터 클러스터 후보를 수집하는 수집부; 상기 MFT 엔트리 리스트 및 상기 적어도 하나의 데이터 클러스터 후보를 사용하여 적어도 하나의 MFT 엔트리-데이터 클러스터 쌍 후보를 생성하는 분석부; 상기 적어도 하나의 MFT 엔트리-데이터 클러스터 쌍 후보에 대한 분석을 수행함으로써 가상 파티션의 속성 값을 결정하고, 상기 속성 값에 기반하여 상기 가상 파티션을 생성하는 생성부를 포함하는 파일 시스템 복구 장치가 제공된다.
이 외에도, 본 발명을 구현하기 위한 다른 방법, 장치, 시스템 및 상기 방법을 실행하기 위한 컴퓨터 프로그램을 기록하기 위한 컴퓨터 판독 가능한 기록 매체가 더 제공된다.
디스크의 파티션 정보를 유지하는 데이터, 볼륨의 정보를 유지하는 데이터 및 파일 시스템의 MFT 정보를 유지하는 데이터가 손상된 경우에도, 파일 또는 디렉토리의 정보를 유지하는 데이터를 사용하여 파티션을 복원하는 방법 및 장치가 제공된다.
사이버 테러 등에 의해 디스크가 파괴된 경우에도, 파일 또는 디렉토리의 정보를 유지하는 데이터를 사용하여 파티션의 레이아웃을 복원함으로써 악성 코드의 흔적을 검출하고, 침해 사고에 대한 대응을 가능하게 하는 방법 및 장치가 제공된다.
대용량의 디스크 또는 증거 이미지에 대해서도 검색 시간을 단축시킬 수 있도록, 멀티 프로세서를 이용하여 파티션을 복원하는 방법 및 장치가 제공된다.
도 1은 일 예에 따른 디스크의 복구가 어려운 상황을 도시한다.
도 2는 일 실시예에 따른 파티션의 복구를 위해 사용되는 데이터를 나타낸다.
도 3은 일 실시예에 따른 가상 파티션의 복구의 원리 및 복구의 결과를 도시한다.
도 4는 일 실시예에 따른 파일 시스템 복구 장치의 구조도이다.
도 5는 일 실시예에 따른 파일 시스템 복구 장치를 구현하는 전자 장치를 도시한다.
도 6은 일 실시예에 따른 파일 시스템 복구를 위한 적어도 하나의 모듈을 설명한다.
도 7은 일 실시예에 다른 파일 시스템 복구 방법의 흐름도이다.
도 8은 일 예에 따른 MFT 엔트리 리스트를 생성하고 적어도 하나의 데이터 클러스터 후보를 수집하는 방법의 흐름도이다.
도 9a 내지 도 9d는 일 예에 따른 MFT 엔트리 리스트를 검색하는 방법의 흐름도이다.
도 9a는 일 예에 따른 MFT 엔트리를 검색하는 방법의 흐름도이다.
도 9b는 일 예에 따른 MFT 최소 생성 단위에 의해 결정된 위치에서 MFT 엔트리를 검색하는 방법의 흐름도이다.
도 9c는 일 예에 따른 적어도 하나의 역방향으로 연속된 MFT 엔트리를 검색하는 방법의 흐름도이다.
도 9d는 일 예에 따른 적어도 하나의 순방향으로 연속된 MFT 엔트리를 검색하는 방법의 흐름도이다.
도 10a 및 도 10b는 일 예에 따른 데이터 클러스터 후보를 검색하는 방법의 흐름도이다.
도 10a는 일 예에 따른 데이터 클러스터 후보의 검색을 위해 데이터를 독출하는 방법의 흐름도이다.
도 10b는 일 예에 따른 데이터가 데이터 클러스터인지 여부를 판단하는 방법의 흐름도이다.
도 11a 및 도 11b는 일 예에 따른 MFT 엔트리-데이터 클러스터 쌍 후보를 생성하는 방법의 흐름도이다.
도 11a는 일 예에 따른 대상 MFT 엔트리 후보를 선택하는 방법의 흐름도이다.
도 11b는 일 예에 따른 선택된 대상 MFT 엔트리 후보에 대하여 MFT 엔트리-데이터 클러스터 쌍 후보를 생성하는 방법의 흐름도이다.
도 12는 일 예에 따른 파일의 MFT 엔트리에 대하여 부트 레코드의 위치를 계산하는 방법의 흐름도이다.
도 13은 일 예에 따른 디렉토리의 MFT 엔트리에 대하여 부트 레코드의 위치를 계산하는 방법의 흐름도이다.
도 14는 일 예에 따른 가상 파티션 후보 정보를 생성하는 방법의 흐름도이다.
도 15는 일 예에 따른 가상 파티션의 볼륨 크기를 계산하는 방법을 설명한다.
도 16은 일 예에 따른 가상 파티션을 생성하는 방법의 흐름도이다.
도 17a 및 도 17b는 일 예에 따른 기정의된 MFT 엔트리 및 기정의된 MFT 엔트리의 데이터를 도시한다.
도 17a는 일 예에 따른 기정의된 MFT 엔트리를 도시한다.
도 17b는 일 예에 따른 기정의된 MFT 엔트리의 데이터를 도시한다.
도 18은 일 예에 따른 NTFS 부트 레코드를 나타낸다.
도 19는 일 예에 따른 MFT 엔트리 헤더 구조를 나타낸다.
도 20a 내지 도 20c는 일 예에 따른 MFT 엔트리 속성 헤더 구조를 도시한다.
도 20a는 일 예에 따른 MFT 엔트리 속성 헤더 구조 중 일부를 도시한다.
도 20b는 일 예에 따른 MFT 엔트리 속성 헤더 구조 중 상주 속성을 도시한다.
도 20c는 일 예에 따른 MFT 엔트리 속성 헤더 구조 중 비-상주 속성을 도시한다.
도 21은 일 예에 따른 MFT 엔트리 리스트의 구조를 도시한다.
도 22는 일 예에 따른 적어도 하나의 MFT 엔트리 후보의 구조를 도시한다.
도 23은 일 예에 따른 적어도 하나의 데이터 클러스터 후보의 구조를 도시한다.
후술하는 본 발명에 대한 상세한 설명은, 본 발명이 실시될 수 있는 특정 실시예를 예시로서 도시하는 첨부 도면을 참조한다. 이들 실시예는 당업자가 본 발명을 실시할 수 있기에 충분하도록 상세히 설명된다. 본 발명의 다양한 실시예는 서로 다르지만 상호 배타적일 필요는 없음이 이해되어야 한다. 예를 들어, 여기에 기재되어 있는 특정 형상, 구조 및 특성은 일 실시예에 관련하여 본 발명의 정신 및 범위를 벗어나지 않으면서 다른 실시예로 구현될 수 있다. 또한, 각각의 개시된 실시예 내의 개별 구성요소(component)의 위치 또는 배치는 본 발명의 정신 및 범위를 벗어나지 않으면서 변경될 수 있음이 이해되어야 한다. 따라서, 후술하는 상세한 설명은 한정적인 의미로서 취하려는 것이 아니며, 본 발명의 범위는, 적절하게 설명된다면, 그 청구항들이 주장하는 것과 균등한 모든 범위와 더불어 첨부된 청구항에 의해서만 한정된다. 도면에서 유사한 참조부호는 여러 측면에 걸쳐서 동일하거나 유사한 기능을 지칭한다.
이하에서는, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명을 용이하게 실시할 수 있도록 하기 위하여, 본 발명의 바람직한 실시예들에 관하여 첨부된 도면을 참조하여 상세히 설명하기로 한다.
이하에서, 용어 "볼륨" 및 "파티션"은 동일한 의미 또는 유사한 의미로 사용될 수 있고, 서로 간에 대체될 수 있다.
도 1은 일 예에 따른 디스크의 복구가 어려운 상황을 도시한다.
도 1에서 도시된 것과 같이, 디스크에서는 디스크의 복구를 위한 핵심 정보인 MBR, BR, BBR 및 MFT가 손상되었다.
디스크의 파티션으로서, 제1 파티션 및 제2 파티션이 도시되었다. 2개의 파티션들은 각각 NTFS 파티션일 수 있다.
도 1에서, 디스크의 영역들 중 기호 "X"가 표시된 영역은 파괴된 영역을 나타낼 수 있다.
도 1의 제1 레이아웃(layout)에서 도시된 것과 같이, MBR, GPT, BR 및 BBR과 같은 디스크의 파티션의 구성(configuration)에 대한 핵심적인 정보가 파괴되었다. 또한, 파일에 대한 정보를 유지하는 $MFT 메타데이터 파일(MFT 엔트리 0 번) 및 $MFTMirr 메타데이터 파일(MFT 엔트리 1 번)이 파괴되었다. 이러한 핵심적인 정보 및/또는 메타데이터가 파괴된 경우 파티션의 복구가 어려울 수 있다.
앞서 설명된 것과 같이, 디스크가 파괴되기 전에 2개의 NTFS 파티션들이 존재하였다. 제1 파티션에서는 분할된 MFT들이 2개의 영역들에 각각 존재하였다. 제1 파티션에서, MFT 1-1 및 MFT 1-2는 분할된 MFT들을 나타낸다. 반면, 제2 파티션에서는 1개의 영역에 MFT가 존재하였다. 제2 파티션에서, MFT 2는 저장된 MFT를 나타낸다.
디스크가 파괴로 인해, 제1 레이아웃(layout)에서와 같이, MBR, BR, BBR, $MFT 메타데이터 파일(MFT 엔트리 0 번) 및 $MFTMirr 메타데이터 파일(MFT 엔트리 1 번)의 모두가 파괴되었다.
제2 레이아웃에서 도시된 것과 같이, MFT 엔트리의 일부만이 존재하는 경우에는, 기존의 포렌식 도구를 이용하는 것만으로는 디스크의 파티션의 복구가 불가능할 수 있다.
제2 레이아웃에서 도시된 것과 같은 상황에서도, 디스크의 파티션 및 남아있는 파일이 복구되어야만 악성 코드로 인한 손상으로부터의 복구가 이루어질 수 있고, 침입(intrusion)에 대한 대응이 가능해질 수 있다.
아래에서는, 일 실시예에 따른, MBR 및 GPT가 삭제되었을 뿐만 아니라, BR, BBR, $MFT 메타데이터 파일 및 $MFT 메타데이터 파일이 삭제된 상황에서도, 남아있는 MFT 엔트리 및 상기의 MFT 엔트리의 데이터 클러스터의 쌍(pair)을 이용하여 파티션 및 파일을 복구하는 방법이 설명된다.
도 2는 일 실시예에 따른 파티션의 복구를 위해 사용되는 데이터를 나타낸다.
후술될 실시예에서는, MBR, GPT, BR 및 BBR뿐만 아니라, $MFT 메타데이터 파일 및 $MFTMirr 메타데이터 파일 또한 파괴 또는 삭제된 상황에서도, MFT 엔트리 및 상기의 MFT 엔트리의 데이터 클러스터에 기반하여 파티션 및 파일을 복구하는 방법 및 장치가 개시된다. 여기에서, $MFT 메타데이터 파일 및 $MFTMirr 메타데이터 파일은 MFT 엔트리의 레이아웃 정보를 유지하는 데이터의 일 예일 수 있다.
말하자면, 후술될 실시예에서는, 파티션의 구성에 관련된 정보가 파괴되어, 파티션의 파일으로의 접근(access)이 불가능하고, MFT의 핵심적인 정보인 $MFT 메타데이터 파일 및 $MFTMirr 메타데이터 파일이 파괴된 상황이 전제되었을 때, 이러한 상황 하에서 NTFS 파일 시스템의 개별적인 파일의 정보를 유지하는 MFT 엔트리 및 상기의 MFT 엔트리의 데이터 클러스터를 이용하여 가상 파티션을 재구성하는 방법 및 장치가 개시된다. 가상 파티션의 재구성을 통해 가상 파티션의 파일이 복구될 수 있다.
복구의 대상인 가상 파티션은 복수일 수 있다. 말하자면 후술될 실시예에서 재구성의 대상은 멀티 가상 파티션들일 수 있다.
제3 레이아웃에서 도시된 것과 같이, 가상 파티션의 재구성을 위해 디스크 또는 증거 이미지에서 기정의된 MFT 엔트리 및 상기의 기정의된 MFT 엔트리의 기정의된 데이터 클러스터가 검색될 수 있다.
기정의된 MFT 엔트리는 가상 파티션의 재구성을 위해 분석자 등에 의해 정의된 MFT 엔트리일 수 있다. 기정의된 MFT 엔트리는 기정의된 시그니처(signature)가 확보된 MFT 엔트리일 수 있다. 시그니처는 디스크 또는 증거 이미지에서 가상 파티션을 재구성을 위해 사용될 MFT 엔트리를 식별하기 위해 사용될 수 있다. 시그니처는 MFT 엔트리 별로 상이할 수 있다.
기정의된 MFT 엔트리는 파일의 MFT 엔트리 및 디렉토리의 MFT 엔트리의 각각에 대해서 정의될 수 있다. 파일을 나타내는 기정의된 MFT 엔트리의 시그니처 및 디렉토리를 나타내는 기정의된 MFT 엔트리의 시그니처는 각각 상이하게 정의될 수 있다.
기정의된 데이터 클러스터는 기정의된 MFT 엔트리가 나타내는 파일 또는 디렉토리의 실제의 데이터 또는 인덱스 레코드일 수 있다. 기정의된 데이터 클러스터는 시그니처가 확보된 데이터 클러스터일 수 있다. 시그니처는 디스크 또는 증거 이미지에서 가상 파티션을 재구성을 위해 사용될 데이터 클러스터를 식별하기 위해 사용될 수 있다. 시그니처는 데이터 클러스터 별로 서로 상이할 수 있다.
제3 레이아웃에서는, 기정의된 MFT Entry 및 상기의 기정의된 MFT 엔트리의 데이터 클러스터가 MFT 엔트리-데이터 클러스터 쌍(MFT entry-data cluster pair)으로 도시되었다.
도 3은 일 실시예에 따른 가상 파티션의 복구의 원리 및 복구의 결과를 도시한다.
MFT 엔트리 및 데이터 클러스터에 대한 검증을 통해 재구성의 대상인 가상 파티션의 파일이 확인될 수 있다. 또한, MFT 엔트리 및 데이터 클러스터를 사용함으로써 재구성의 대상인 가상 파티션의 속성 값이 계산될 수 있다.
예를 들면, 가상 파티션의 속성 값은 가상 파티션의 부트 레코드의 위치, 가상 파티션의 클러스터의 크기 및 가상 파티션의 볼륨의 크기 등을 포함할 수 있다. 가상 파티션의 볼륨의 크기는 가상 파티션의 섹터의 총 개수를 나타낼 수 있다.
가상 파티션의 속성 값을 통해 파괴된 파티션의 레이아웃이 복원(restore)될 수 있다. 또한, 레이아웃의 복원을 통해 가상 파티션이 생성될 수 있다.
이하의 실시예에서, 전술된 방식에 의해 생성된 가상 파티션은 MFT 엔트리 가상 파티션(MFT entry Virtual Partition; MVP)으로 약술될 수 있다.
일반적으로, 파일 시스템에서 파일 또는 디렉토리는 메타데이터 영역 및 클러스터 영역으로 구성될 수 있다. 메타데이터 영역은 파일 및 디렉토리의 속성 값이 존재하는 영역일 수 있다. 이하에서, 용어 "속성 값" 및 "속성 정보"는 서로 동일한 의미로 사용될 수 있다. 클러스터 영역은 파일 및 디렉토리의 실제의 데이터가 존재하는 영역일 수 있다.
NTFS 파일 시스템의 경우, 메타데이터 영역은 MFT 엔트리 내의 속성 값으로 구성될 수 있다. 또한, 데이터 영역은 "$데이터($Data)" 속성 값의 클러스터 데이터 런 리스트(Cluster Data Run List)를 통해 관리될 수 있다.
후술될 실시예에서는, 메타데이터 및 클러스터 데이터 런 리스트가 가리키는 실제의 데이터 클러스터에 기반하여 NTFS 파일 시스템의 파티션이 가상 파티션으로서 복원될 수 있다. 말하자면, MFT 엔트리에 기반하여 파티션의 속성 값들이 결정될 수 있으며, 속성 값들에 기반하여 가상 파티션이 생성될 수 있다.
제4 레이아웃에서 도시된 것과 같이, 제1 파티션에 대하여 가상 파티션의 크기가 계산되었고, 제2 파티션에 대하여 가상 파티션의 크기가 계산되었다. 또한, 제1 파티션의 BR 위치 및 제2 파티션의 BR 위치가 가상으로 복원되었다. 제1 파티션의 복원된 BR 위치는 제1 파티션이 시작하는 위치에 있을 수 있다. 제2 파티션의 복원된 BR 위치는 제2 파티션이 시작하는 위치에 있을 수 있다. 또한, 제1 파티션 내에서 검색된 2개의 MFT 엔트리 그룹이 식별될 수 있으며, 제2 파티션 내에서 검색된 1개의 MFT 엔트리 그룹이 식별될 수 있다.
도 4는 일 실시예에 따른 파일 시스템 복구 장치의 구조도이다.
파일 시스템 복구 장치(400)는 접근(access)부(410), 수집부(420), 분석부(430), 생성부(440) 및 사용자 인터페이스(User Interface; UI)부(450)를 포함할 수 있다.
접근부(410)는 디지털 포렌식(digital forensic)의 데이터 소스(data source)에 대한 접근을 수행할 수 있다. 접근부(410)의 입력은 디스크 또는 증거 이미지일 수 있다. 접근부(410)는 디스크 또는 증거 이미지로의 접근을 수행할 수 있다.
파일 시스템 복구 장치(400)는 디스크가 파괴된 상황에서 동작할 수 있기 때문에, 접근부(410)는 증거 이미지의 전체에 대한 독출(read)을 수행할 수 있다. 접근부(410)는 디스크 또는 증거 이미지의 전체의 데이터 중 일부의 데이터를 독출할 수 있다. 일부의 데이터는 전체의 데이터 중 독출가능한 데이터일 수 있다.
후술될 디스크 또는 증거 이미지로부터의 데이터의 독출은 접근부(410)를 통해 이루어질 수 있다.
수집부(420)는 디스크 또는 증거 이미지에서 적어도 하나의 MFT 엔트리 및 적어도 하나의 데이터 클러스터 후보를 수집할 수 있다.
수집부(420)는 적어도 하나의 MFT 엔트리를 수집함으로써 MFT 엔트리 리스트를 생성할 수 있다.
수집부(420)는 접근부(410)에 의해 독출된 데이터로부터 적어도 하나의 MFT 엔트리 및 적어도 하나의 데이터 클러스터 후보를 수집할 수 있다.
예를 들면, MFT 엔트리 리스트는 1024 바이트 단위의 MFT 엔트리를 표현하는 연속된 리스트의 형태로 저장될 수 있다. MFT 엔트리 리스트 내에 적어도 MFT 엔트리가 포함될 수 있다.
수집부(420)는 디스크 또는 증거 이미지로부터 적어도 하나의 MFT 엔트리-데이터 클러스터 쌍 후보(MFT entry-data cluster pair candidate)를 수집할 수 있다.
MFT 엔트리 리스트는 디스크 또는 증거 이미지에서 검색된 적어도 하나의 MFT 엔트리이거나, 검색된 적어도 하나의 MFT 엔트리를 나타내는 정보일 수 있다. 적어도 하나의 데이터 클러스터 후보는 디스크 또는 증거 이미지에서 검색된 적어도 하나의 데이터 클러스터이거나, 검색된 적어도 하나의 데이터 클러스터를 나타내는 정보일 수 있다.
MFT 엔트리 리스트는 MFT 엔트리에 대한 검색을 통해 생성될 수 있다. MFT 엔트리 리스트 내에 적어도 하나의 MFT 엔트리가 포함될 수 있다. 또한, 데이터 클러스터 후보는 데이터 클러스터에 대한 검색을 통해 생성될 수 있다. 검색의 대상인 데이터 클러스터 후보는 기정의된 MFT 엔트리에 대응하는 데이터 클러스터일 수 있다. 기정의된 MFT 엔트리는 기정의된 MFT 엔트리 시그니처를 포함할 수 있다. 데이터 클러스터 후보는 기정의된 데이터 클러스터 시그니처를 포함할 수 있다.
분석부(430)는 MFT 엔트리 리스트 내에 존재하는 적어도 하나의 MFT 엔트리 및 적어도 하나의 데이터 클러스터 후보를 사용하여 적어도 하나의 MFT 엔트리-데이터 클러스터 쌍 후보를 생성할 수 있다.
적어도 하나의 MFT 엔트리-데이터 클러스터 쌍 후보의 각 MFT 엔트리-데이터 클러스터 쌍 후보는 MFT 엔트리 및 상기의 MFT 엔트리의 데이터 클러스터의 쌍일 수 있다. 또는, 각 MFT 엔트리-데이터 클러스터 쌍 후보는 MFT 엔트리 및 상기의 MFT 엔트리의 데이터 클러스터의 쌍을 나타내는 정보일 수 있다.
예를 들면, MFT 엔트리-데이터 클러스터 쌍 후보는 MFT 엔트리 리스트 내에 존재하는 수집된 적어도 하나의 MFT 엔트리 및 적어도 하나의 데이터 클러스터 후보 중 파티션의 복구를 위해 사용될 수 있는 유효한 정보일 수 있다.
MFT 엔트리-데이터 클러스터 쌍 후보는 MVP 후보 정보로도 명명될 수 있다.
MFT 엔트리-데이터 클러스터 쌍 후보를 이루는 MFT 엔트리 후보는 기정의된 타입의 MFT 엔트리일 수 있다. 분석부(430)는 적어도 하나의 MFT 엔트리 리스티에서 기정의된 타입의 MFT 엔트리를 검색할 수 있다. MFT 분석부(430)는 적어도 하나의 MFT 엔트리 중 기정의된 타입의 MFT 엔트리에 대해 데이터 클러스터 후보와의 매칭을 수행할 수 있다.
기정의된 타입의 MFT 엔트리 MFT 엔트리 내에 기록된 논리적 클러스터 번호(Logical Cluster Number; LCN) 주소로부터의 물리적 주소로의 매핑을 가능하게 하는 MFT 엔트리일 수 있다. 상기의 매핑에 의해 파티션의 레이아웃의 복원이 이루어질 수 있다.
적어도 하나의 MFT 엔트리-데이터 클러스터 쌍 후보의 각 MFT 엔트리-데이터 클러스터 쌍 후보는 MFT 엔트리 리스트 내에 존재하는 적어도 하나의 MFT 엔트리 및 적어도 하나의 데이터 클러스터 후보 중 기정의된 조건을 충족시키는 MFT 엔트리 후보 및 데이터 클러스터 후보의 쌍일 수 있다.
예를 들면, 기정의된 조건은 MFT 엔트리 후보 및 데이터 클러스터 후보가 동일한 파티션 내의 데이터인 것일 수 있다. 디스크가 파괴되기 전, 디스크에서 멀티 파티션이 구성되었을 수도 있다. 디스크에서 멀티 파티션이 구성된 경우, 디스크 또는 증거 이미지에는 시그니처가 동일한 MFT 엔트리들 및 시그니처가 동일한 데이터 클러스터들이 존재할 수 있다. 따라서, 생성될 파티션에 대한 정보가 추출될 수 있는 MFT 엔트리 및 데이터 클러스터의 쌍이 식별될 필요가 있다.
말하자면, 어떤 MFT 엔트리 및 어떤 데이터 클러스터 후보가 서로 상이한 파티션 내의 데이터인 것으로 판단된 경우, 상기의 MFT 엔트리 및 상기의 데이터 클러스터 후보는 MFT 엔트리-데이터 클러스터 쌍을 이루지 못할 수 있다.
분석부(430)는 MFT 엔트리 리스트 내에 존재하는 적어도 하나의 MFT 엔트리 및 적어도 하나의 데이터 클러스터 후보의 매칭을 수행할 수 있다. 예를 들면, 특정한 MFT 엔트리 및 특정한 데이터 클러스터 후보가 동일한 파티션 내의 데이터인가를 판단하기 위해, 분석부(430)는 상기의 MFT 엔트리 및 상기의 데이터 클러스터 후보를 사용하여 가상 파티션의 부트 레코드의 위치를 계산할 수 있다. 분석부(430)는 계산된 부트 레코드의 위치에 기반하여 상기의 MFT 엔트리 및 상기의 데이터 클러스터 후보가 동일한 파티션 내의 데이터인지 여부를 판단할 수 있다. 상기의 MFT 엔트리 및 상기의 데이터 클러스터 후보가 동일한 파티션 내의 데이터인 것으로 판단된 경우, 분석부(430)는 상기의 MFT 엔트리 및 상기의 데이터 클러스터 후보의 MFT 엔트리-데이터 클러스터 쌍 후보를 생성할 수 있다.
또한, 분석부(430)는 부트 레코드의 위치를 계산하기 위해 MFT 엔트리 및 데이터 클러스터 후보에 대한 분석을 수행할 수 있다. 분석에 의해 획득된 값들은 디스크 또는 증거 이미지의 분석에 있어서 기본적인 정보로 사용될 수 있으며, 생성될 가상 파티션의 속성 값으로 사용될 수 있다.
생성부(440)는 적어도 하나의 MFT 엔트리-데이터 클러스터 쌍 후보에 대한 분석을 통해 가상 파티션의 속성 값을 결정할 수 있다. 가상 파티션은 MVP일 수 있다.
가상 파티션의 속성 값은 복구될 파티션의 레이아웃의 재구성을 위해 요구되는 값 또는 정보일 수 있다. 말하자면, 가상 파티션의 속성 값은 손상된 파티션에 대응하는 가상 파티션의 레이아웃을 재구성할 수 있는 핵심적인 정보일 수 있다.
예를 들면, 속성 값은 디스크 또는 증거 이미지에서의 가상 파티션의 BR의 위치를 포함할 수 있다. 또한, 예를 들면, 속성 값은 가상 파티션의 볼륨 크기를 포함할 수 있다. 속성 값은 가상 파티션의 클러스터 크기 및 가상 파티션의 MFT 엔트리 크기를 포함할 수 있다.
생성부(440)는 가상 파티션의 속성 값을 사용하여 가상의 부트 레코드를 구성할 수 있고, 가상 파티션의 볼륨 정보를 생성할 수 있다.
생성되는 가상 파티션은 하나 이상일 수 있다. 적어도 하나의 가상 파티션의 각 가상 파티션에 대해서, 가상 파티션의 생성을 위해 가상 파티션의 속성 값이 사용될 수 있다.
적어도 하나의 가상 파티션을 생성하기 위해 적어도 하나의 가상 파티션 후보 정보가 사용될 수 있다. 가상 파티션 후보 정보는 가상 파티션을 생성하기 위해 요구되는 정보를 포함할 수 있다. 예를 들면, 가상 파티션 후보 정보는 가상 파티션의 속성 값을 포함할 수 있다.
생성부(440)는 가상 파티션의 속성 값에 기반하여 가상 파티션을 생성할 수 있다. 또한, 생성부(440)는 수집부(420)에 의해 생성된 MFT 엔트리 리스트를 사용하여 가상 파티션의 파일 시스템의 트리 구조를 생성할 수 있다. 생성부(440)는 MFT 엔트리 리스트의 적어도 하나의 MFT 리스트를 파일 단위로 파싱함으로써 파일 시스템의 트리 구조를 생성할 수 있다.
또는, 생성부(440)는 가상 파티션 후보 정보 또는 가상 파티션 후보 정보가 포함하는 가상 파티션의 속성 값에 기반하여 가상 파티션을 생성할 수 있다.
생성부(440)는 파일 시스템 복구 장치(400) 또는 컴퓨터에 가상 파티션을 추가할 수 있다.
UI부(450)는 파일 시스템 복구 장치(400)의 동작에 있어서 요구되는 UI를 제공할 수 있다.
파일 시스템 복구 장치(400) 또는 컴퓨터의 사용자는 UI를 통해 가상 파티션을 조사할 수 있으며, 가상 파티션의 파일을 조사할 수 있다.
접근부(410), 수집부(420), 분석부(430), 생성부(440) 및 UI부(450)의 예시적인 기능 및 동작에 관련하여 아래에서 더 상세하게 설명된다.
파일 시스템 복구 장치(400)는 디스크 또는 증거 이미지 내의 기정의된 MFT 엔트리 및 기정의된 데이터 클러스터를 사용하여 가상 파티션을 복원할 수 있으며, MFT 엔트리에 대한 파싱을 통해 파일을 복원할 수 있다. 또한, 파일 시스템 복구 장치(400)는 디스크 또는 증거 이미지의 MBR, GPT, BR 및 BBR 등이 손상되었고, 파일의 기본적인 정보를 유지하는 $MFT 메타데이터 파일 및 $MFTMirr 메타데이터 파일이 부재한 상황에서도 디스크 또는 증거 이미지에 대한 복구를 수행할 수 있다. 여기에서, MBR 및 GPT는 디스크의 파티션 정보를 유지하는 데이터의 일 예일 수 있다. BR 및 BBR은 볼륨의 정보를 유지하는 데이터의 일 예일 수 있다. $MFT 메타데이터 파일 및 $MFTMirr 메타데이터 파일은 NTFS 파일 시스템의 MFT 정보를 유지하는 메타데이터의 일 예일 수 있다. MFT 엔트리는 개별 파일 또는 개별 디렉토리의 정보를 유지하는 데이터의 일 예일 수 있다.
도 5는 일 실시예에 따른 파일 시스템 복구 장치를 구현하는 전자 장치를 도시한다.
파일 시스템 복구 장치(400)는 도 5에서 도시된 전자 장치(500)로서 구현될 수 있다. 전자 장치(500)는 파일 시스템 복구 장치(400)의 기능 또는 동작을 제공하는 범용의 컴퓨터 시스템일 수 있다.
도 5에서 도시된 바와 같이, 전자 장치(500)는 버스(522)를 통하여 서로 통신하는 프로세서(processor)(521), 메모리(523), 사용자 인터페이스(User Interface; UI) 입력 디바이스(526), UI 출력 디바이스(527) 및 저장소(storage)(528)를 포함할 수 있다. 또한, 전자 장치(500)는 네트워크(530)에 연결되는 네트워크 인터페이스(529)를 더 포함할 수 있다. 프로세서(521)는 중앙 처리 장치(Central Processing Unit; CPU), 메모리(523) 또는 저장소(528)에 저장된 프로세싱(processing) 명령어(instruction)들을 실행하는 반도체 장치일 수 있다. 메모리(523) 및 저장소(528)는 다양한 형태의 휘발성 또는 비휘발성 저장 매체일 수 있다. 예를 들어, 메모리는 롬(ROM)(524) 및 램(RAM)(525) 중 적어도 하나를 포함할 수 있다.
파일 시스템 복구 장치(400)를 구현하는 전자 장치(500)는 컴퓨터에 의해 독출(read)될 수 있는 기록 매체를 포함할 수 있다. 기록 매체는 메모리(523) 또는 저장소(528)에 적어도 하나의 모듈로서 저장될 수 있다. 저장소(528)에 저장된 적어도 하나의 모듈은 프로세서(521)에 의해 실행되기 위해 메모리(523)로 이동할 수 있다. 파일 시스템 복구 장치(400)의 적어도 하나의 모듈은 메모리(523)에 저장될 수 있고, 프로세서(521)에 의하여 실행되도록 구성될 수 있다.
메모리(523) 또는 저장소(528)는 복구가 시도될 증거 이미지를 저장할 수 있다. 또한, 저장소(528)는 복구가 시도될 디스크를 포함할 수 있다. 말하자면, 저장소(528)의 적어도 일부는 복구의 대상일 수 있다.
UI 입력 디바이스(526)는 UI를 통해 요구되는 입력을 수신할 수 있다. UI 출력 디바이스(527)는 UI부(450)에 제공되는 UI를 출력할 수 있다.
메모리(523) 또는 저장소(528)는 파일 시스템 복구에 대한 로그(log) 및 파일 시스템 복구의 결과물을 저장할 수 있다. 저장소(528)는 파일 시스템 복구에 대한 로그(log) 및 파일 시스템 복구의 결과물을 파일의 형태로 저장할 수 있다.
파일 시스템 복구 장치(400)의 데이터 또는 정보의 통신과 관련된 기능은 네트워크 인터페이스(529)를 통해 수행될 수 있다.
도 6은 일 실시예에 따른 파일 시스템 복구를 위한 적어도 하나의 모듈을 설명한다.
전자 장치(500)의 프로세서(521)는 멀티-프로세서(multi-processor)일 수 있다. 예를 들면, 프로세서(521)는 복수일 수 있다. 또는, 프로세서(521)는 복수의 코어(core)들을 포함할 수 있다. 도 6에서는, 제1 프로세서 내지 제n 프로세서의 n개의 프로세서들이 도시되었다. n은 1이상의 정수일 수 있다.
도 6에서 도시된 것과 같이, 적어도 하나의 모듈은 메모리(523)에 로딩될 수 있다.
적어도 하나의 모듈은 접근 모듈, 수집 모듈, 분석 모듈, 생성 모듈 및 UI 모듈을 포함할 수 있다.
접근 모듈은 도 4를 참조하여 전술된 접근부(410)에 대응할 수 있다. 말하자면, 접근부(410)에 의해 수행되는 것으로 설명된 기능 또는 동작은 접근 모듈에 의해 수행될 수 있다.
수집 모듈은 도 4를 참조하여 전술된 수집부(420)에 대응할 수 있다. 말하자면, 수집부(420)에 의해 수행되는 것으로 설명된 기능 또는 동작은 수집 모듈에 의해 수행될 수 있다.
수집 모듈은 복수일 수 있다. 복수의 수집 모듈들은 복수의 프로세서들에 의해 각각 수행될 수 있다. 예를 들면, 복수의 수집 모듈들은 복수의 쓰레드(thread)들일 수 있다. 도 6에서는 제1 수집 모듈 내지 제n 수집 모듈의 n개의 수집 모듈들이 도시되었다.
복수의 수집 모듈들의 개수는 복수의 프로세서들의 개수에 맞춰서 정해질 수 있다. 예를 들면, 복수의 수집 모듈들의 개수는 복수의 프로세서들의 개수와 동일할 수 있다. 복수의 수집 모듈들은 복수의 프로세서들에게 각각 할당될 수 있다. 복수의 수집 모듈들이 복수의 프로세서들에게 각각 할당됨에 따라, 복수의 수집 모듈들이 복수의 프로세서들에 의해 동시에 병렬적으로 수행될 수 있다. 복수의 프로세서들은 복수의 수집 모듈들을 의해 멀티-쓰레드(multi-thread)의 형태로 실행할 수 있다.
분석 모듈은 도 4를 참조하여 전술된 분석부(430)에 대응할 수 있다. 말하자면, 분석부(430)에 의해 수행되는 것으로 설명된 기능 또는 동작은 분석 모듈에 의해 수행될 수 있다.
생성 모듈은 도 4를 참조하여 전술된 생성부(440)에 대응할 수 있다. 말하자면, 생성부(440)에 의해 수행되는 것으로 설명된 기능 또는 동작은 생성 모듈에 의해 수행될 수 있다.
UI 모듈은 도 4를 참조하여 전술된 UI부(450)에 대응할 수 있다. 말하자면, UI(450)에 의해 수행되는 것으로 설명된 기능 또는 동작은 접근 모듈에 의해 수행될 수 있다.
적어도 하나의 모듈의 적어도 일부는 외부의 장치 또는 시스템과 통신할 수 있다. 이러한 모듈은 운영 체제, 어플리케이션 모듈, 라이브러리(library) 및 기타 프로그램 모듈의 형태로 프로세서(521)에 의해 수행될 수 있다. 또한, 적어도 하나의 모듈의 적어도 일부는 물리적으로는 메모리(523) 및 저장소(528)를 비롯한 여러 가지 공지의 기억 장치들 내에 저장될 수 있고, 전자 장치(500)와 통신 가능한 원격 기억 장치에 저장될 수도 있다.
적어도 하나의 모듈은 후술될 기능 또는 동작을 수행하거나 후술될 추상 데이터 유형을 구현(implement)하는 루틴(routine), 서브루틴(subroutine), 프로그램, 오브젝트(object), 컴포넌트(component) 및 데이터 구조(data structure) 등을 포괄할 수 있지만, 이에 제한되지는 않는다. 적어도 하나의 모듈은 프로세서(521)에 의해 수행되는 명령어(instruction) 또는 코드(code)로 구성될 수 있다.
도 7은 일 실시예에 다른 파일 시스템 복구 방법의 흐름도이다.
후술될 단계들(710, 720, 730, 740 및 750)을 통해 파티션에 대한 복구가 수행될 있다.
단계(710)에서, 접근부(410)는 디지털 포렌식의 데이터 소스에 대한 접근을 수행할 수 있다.
데이터 소스는 조사 또는 수사의 대상인 디스크 또는 증거 이미지일 수 있다. 증거 이미지는 기정의된 포맷(format)의 이미지일 수 있다. 예를 들면, 기정의된 포맷은 디디(DD) 포맷 또는 전문 증거 압축 포맷(Expert Witness compression Format; EWF)일 수 있다.
접근부(410)는 접근을 통해 디스크 또는 증거 이미지로부터 데이터를 독출할 수 있다.
파일 시스템 복구 장치(400)는 디스크가 파괴된 상황에서 동작할 수 있기 때문에, 접근부(410)는 증거 이미지의 전체에 대한 독출을 수행할 수 있다. 접근부(410)는 디스크 또는 증거 이미지의 전체의 데이터 중 일부의 데이터를 독출할 수 있다. 일부의 데이터는 전체의 데이터 중 독출가능한 데이터일 수 있다.
단계(720)에서, 수집부(420)는 디스크 또는 증거 이미지에서 MFT 엔트리 리스트를 생성하고 적어도 하나의 데이터 클러스터 후보를 수집할 수 있다.
수집부(420)는 적어도 하나의 MFT 엔트리를 수집함으로써 MFT 엔트리 리스트를 생성할 수 있다. 말하자면, MFT 엔트리 리스트는 수집된 적어도 하나의 MFT 엔트리를 포함할 수 있다.
수집부(420)는 접근부(410)에 의해 독출된 데이터로부터 적어도 하나의 MFT 엔트리 및 적어도 하나의 데이터 클러스터 후보를 수집할 수 있다.
예를 들면, MFT 엔트리 리스트는, 1024 바이트 단위의 MFT 엔트리가 연속으로 존재하는 경우, 하나의 구조체에 의해 표현될 수 있다. 또한 MFT 엔트리 리스트 내에 후술될 MFT 엔트리 후보가 포함될 수 있다.
수집부(420)는 디스크 또는 증거 이미지의 전체를 대상으로, 시그니처에 기반하여 적어도 하나의 MFT 엔트리 및 적어도 하나의 데이터 클러스터 후보를 수집할 수 있다.
MFT 엔트리 리스트는 디스크 또는 증거 이미지에서 검색된 적어도 하나의 MFT 엔트리이거나, 검색된 적어도 하나의 MFT 엔트리를 나타내는 정보일 수 있다. 적어도 하나의 데이터 클러스터 후보는 디스크 또는 증거 이미지에서 검색된 적어도 하나의 데이터 클러스터이거나, 검색된 적어도 하나의 데이터 클러스터를 나타내는 정보일 수 있다.
MFT 엔트리 리스트는 MFT 엔트리에 대한 검색을 통해 생성될 수 있다. 또한, 데이터 클러스터 후보는 데이터 클러스터에 대한 검색을 통해 생성될 수 있다. 검색의 대상인 데이터 클러스터 후보는 기정의된 MFT 엔트리에 대응하는 데이터 클러스터일 수 있다.
수집부(420)는 MFT 엔트리의 데이터 클러스터 후보의 수집에 대하여 기정의된 데이터 클러스터 시그니처를 사용할 수 있다. 기정의된 MFT 엔트리는 기정의된 MFT 엔트리 시그니처를 포함할 수 있다. 데이터 클러스터 후보는 기정의된 데이터 클러스터 시그니처를 포함할 수 있다. 또는, 기정의된 MFT 엔트리는 기정의된 MFT 엔트리 시그니처를 포함하는 데이터일 수 있다. 데이터 클러스터 후보는 기정의된 데이터 클러스터 시그니처를 포함하는 데이터일 수 있다.
전술된 것과 같이, 전자 장치(500)의 프로세서(521)은 복수일 수 있고, 수집 모듈은 복수일 수 있다. 수집부(420)는 디스크 또는 증거 이미지로부터 MFT 엔트리 리스트를 생성하고 적어도 하나의 데이터 클러스터 후보를 수집함에 있어서 복수의 실행 유닛(execution unit)들을 운용할 수 있다. 예를 들면, 실행 유닛은 쓰레드(thread) 및 프로세스(process) 등 중 적어도 하나일 수 있다.
수집부(420)는 멀티 프로세서에 기반하여 대용량의 디스크 또는 증거 이미지의 영역을 분할할 수 있다. 수집부(420)는 디스크 또는 증거 이미지의 복수의 분할된 영역들에 대해 복수의 실행 유닛들을 사용하여 MFT 엔트리 리스트를 생성하고 적어도 하나의 데이터 클러스터 후보를 수집할 수 있다. 또한, 단계(720)의 적어도 일부는 디스크 또는 증거 이미지의 복수의 분할된 영역들에 대해 복수의 실행 유닛들에 의해 병렬로 각각 수행될 수 있다.
일 예에 따른 MFT 엔트리 리스트를 생성하고, 적어도 하나의 데이터 클러스터 후보를 수집하는 방법이 아래에서 도 8을 참조하여 설명된다.
단계(730)에서, 분석부(430)는 MFT 엔트리 리스트 내에 존재하는 적어도 하나의 MFT 엔트리 및 적어도 하나의 데이터 클러스터 후보를 사용하여 적어도 하나의 MFT 엔트리-데이터 클러스터 쌍 후보를 생성할 수 있다.
적어도 하나의 MFT 엔트리-데이터 클러스터 쌍 후보의 각 MFT 엔트리-데이터 클러스터 쌍 후보는 MFT 엔트리 및 상기의 MFT 엔트리의 데이터 클러스터의 쌍일 수 있다 또는, 각 MFT 엔트리-데이터 클러스터 쌍 후보는 MFT 엔트리 및 상기의 MFT 엔트리의 데이터 클러스터의 쌍을 나타내는 정보일 수 있다.
예를 들면, MFT 엔트리-데이터 클러스터 쌍 후보는 수집된 적어도 하나의 MFT 엔트리 및 적어도 하나의 데이터 클러스터 후보 중 파티션의 복구를 위해 사용될 수 있는 유효한 정보일 수 있다. MFT 엔트리-데이터 클러스터 쌍 후보는 MVP 후보 정보로도 명명될 수 있다.
MFT 엔트리-데이터 클러스터 쌍 후보를 이루는 MFT 엔트리 후보는 기정의된 타입의 MFT 엔트리일 수 있다. 분석부(430)는 MFT 엔트리 리스트에서 기정의된 타입의 MFT 엔트리인 적어도 하나의 MFT 엔트리 후보를 검색할 수 있다. MFT 분석부(430)는 적어도 하나의 MFT 엔트리 중 기정의된 타입의 MFT 엔트리에 대해 데이터 클러스터 후보와의 매칭을 수행할 수 있다.
기정의된 타입의 MFT 엔트리는 MFT 엔트리 내에 기록된 논리적 클러스터 번호(Logical Cluster Number; LCN) 주소로부터의 물리적 주소로의 매핑을 가능하게 하는 MFT 엔트리일 수 있다. 상기의 매핑에 의해 파티션의 레이아웃의 복원이 이루어질 수 있다.
적어도 하나의 MFT 엔트리-데이터 클러스터 쌍 후보의 각 MFT 엔트리-데이터 클러스터 쌍 후보는 적어도 하나의 MFT 엔트리 및 적어도 하나의 데이터 클러스터 후보 중 기정의된 조건을 충족시키는 MFT 엔트리 후보 및 데이터 클러스터 후보의 쌍일 수 있다.
예를 들면, 기정의된 조건은 MFT 엔트리 후보 및 데이터 클러스터 후보가 동일한 파티션 내의 데이터인 것일 수 있다. 말하자면, MFT 엔트리 및 데이터 클러스터 후보가 서로 상이한 파티션 내의 데이터인 것으로 판단된 경우, MFT 엔트리 및 데이터 클러스터 후보는 MFT 엔트리-데이터 클러스터 쌍을 이루지 못할 수 있다.
분석부(430)는 적어도 하나의 MFT 엔트리 및 적어도 하나의 데이터 클러스터 후보의 매칭을 수행할 수 있다. 예를 들면, 특정한 MFT 엔트리 및 특정한 데이터 클러스터 후보가 동일한 파티션 내의 데이터인가를 판단하기 위해, 분석부(430)는 상기의 MFT 엔트리 및 상기의 데이터 클러스터 후보를 사용하여 가상 파티션의 부트 레코드의 위치를 계산할 수 있다. 분석부(430)는 계산된 부트 레코드의 위치에 기반하여 상기의 MFT 엔트리 및 상기의 데이터 클러스터 후보가 동일한 파티션 내의 데이터인지 여부를 판단할 수 있다. 상기의 MFT 엔트리 및 상기의 데이터 클러스터 후보가 동일한 파티션 내의 데이터인 것으로 판단된 경우, 분석부(430)는 상기의 MFT 엔트리 및 상기의 데이터 클러스터 후보의 MFT 엔트리-데이터 클러스터 쌍 후보를 생성할 수 있다.
또한, 분석부(430)는 부트 레코드의 위치를 계산하기 위해 MFT 엔트리 및 데이터 클러스터 후보에 대한 분석을 수행할 수 있다. 분석에 의해 획득된 값들은 디스크 또는 증거 이미지의 분석에 있어서 기본적인 정보로 사용될 수 있으며, 생성될 가상 파티션의 속성 값으로 사용될 수 있다.
일 예에 따른 MFT 엔트리-데이터 클러스터 쌍 후보를 생성하는 방법이 아래에서 도 11a 내지 도 11d을 참조하여 설명된다.
단계(740)에서, 생성부(440)는 적어도 하나의 MFT 엔트리-데이터 클러스터 쌍 후보에 대한 분석을 통해 가상 파티션의 속성 값을 결정할 수 있다. 가상 파티션은 MVP일 수 있다.
가상 파티션의 속성 값은 복구될 파티션의 레이아웃의 재구성을 위해 요구되는 값 또는 정보일 수 있다. 말하자면, 가상 파티션의 속성 값은 손상된 파티션에 대응하는 가상 파티션의 레이아웃을 재구성할 수 있는 핵심적인 정보일 수 있다.
예를 들면, 속성 값은 디스크 또는 증거 이미지에서의 가상 파티션의 BR의 위치를 포함할 수 있다. 또한, 예를 들면, 속성 값은 가상 파티션의 볼륨 크기를 포함할 수 있다. 속성 값은 가상 파티션의 클러스터 크기 및 가상 파티션의 MFT 엔트리 크기를 포함할 수 있다.
생성부(440)는 가상 파티션의 속성 값을 사용하여 가상의 부트 레코드를 구성할 수 있고, 가상 파티션의 볼륨 정보를 생성할 수 있다.
생성되는 가상 파티션은 하나 이상일 수 있다. 적어도 하나의 가상 파티션의 각 가상 파티션에 대해서, 가상 파티션의 생성을 위해 가상 파티션의 속성 값이 사용될 수 있다.
적어도 하나의 가상 파티션을 생성하기 위해 적어도 하나의 가상 파티션 후보 정보가 사용될 수 있다. 가상 파티션 후보 정보는 가상 파티션을 생성하기 위해 요구되는 정보를 포함할 수 있다. 예를 들면, 가상 파티션 후보 정보는 가상 파티션의 속성 값을 포함할 수 있다.
또는, 생성부(440)는 가상 파티션 후보 정보 또는 가상 파티션 후보 정보가 포함하는 가상 파티션의 속성 값에 기반하여 가상 파티션을 생성할 수 있다.
일 예에 따른 가상 파티션 후보 정보를 생성하는 방법이 아래에서 도 14를 참조하여 설명된다.
단계(750)에서, 생성부(440)는 가상 파티션의 속성 값에 기반하여 가상 파티션을 생성할 수 있다. 또한, 생성부(440)는 수집부(420)에 의해 생성된 MFT 엔트리 리스트를 사용하여 가상 파티션의 파일 시스템의 트리 구조를 생성할 수 있다. 생성부(440)는 MFT 엔트리 리스트의 적어도 하나의 MFT 엔트리를 파일 단위로 파싱함으로써 파일 시스템의 트리 구조를 생성할 수 있다.
생성부(440)는 파일 시스템 복구 장치(400) 또는 컴퓨터에 가상 파티션을 추가할 수 있다.
일 예에 따른 가상 파티션 생성 방법이 아래에서 도 16을 참조하여 설명된다.
단계(760)에서, UI부(450)는 가상 파티션에 대한 UI를 제공할 수 있다.
파일 시스템 복구 장치(400) 또는 컴퓨터의 사용자는 UI를 통해 가상 파티션을 조사할 수 있으며, 가상 파티션의 파일을 조사할 수 있다.
전술된 단계들(710, 720, 730, 740, 750 및 760)을 통해, 파일 시스템 복구 장치(400)는 디스크 또는 증거 이미지의 MBR, GPT, BR 및 BBR 등이 손상되었고, 파일의 기본적인 정보를 유지하는 $MFT 메타데이터 파일 및 $MFTMirr 메타데이터 파일이 부재한 상황에서도 디스크 또는 증거 이미지에 대한 복구를 수행할 수 있다. 파일 시스템 복구 장치(400)는 디스크 또는 증거 이미지 내의 기정의된 MFT 엔트리 및 기정의된 데이터 클러스터를 사용하여 가상 파티션을 복원할 수 있으며, MFT 엔트리 리스트의 적어도 하나의 MFT 엔트리에 대한 파싱을 통해 파일을 복원할 수 있다.
도 8은 일 예에 따른 MFT 엔트리 리스트를 생성하고 적어도 하나의 데이터 클러스터 후보를 수집하는 방법의 흐름도이다.
도 7을 참조하여 전술된 단계(720)는 후술될 단계들(810, 820, 830 및 840)의 적어도 일부를 포함할 수 있다.
단계(810)에서, 파일 시스템 복구 장치(400) 또는 수집부(420)는 적어도 하나의 MFT 엔트리-데이터 클러스터 쌍 후보에 대한 검색 범위를 계산할 수 있다.
검색 범위는 디스크의 크기 또는 증거 이미지의 크기를 나타낼 수 있다.
단계(820)에서, 파일 시스템 복구 장치(400) 또는 수집부(420)는 생성될 실행 유닛의 개수를 결정할 수 있다.
파일 시스템 복구 장치(400) 또는 수집부(420)는 디스크 또는 증거 이미지의 크기 및 파일 시스템 복구 장치(400)의 프로세서의 개수에 기반하여 복수의 실행 유닛들의 개수를 결정할 수 있다. 예를 들면, 복수의 실행 유닛들의 개수는 프로세서의 개수의 이하일 수 있다. 또는, 복수의 실행 유닛의 개수는 프로세서의 개수의 배수일 수 있다.
파일 시스템 복구 장치(400) 또는 수집부(420)는, 적어도 하나의 MFT 엔트리에 대한 검색 및 적어도 하나의 데이터 클러스터 후보에 대한 검색의 각각에 대해 별도의 실행 유닛이 할당되도록 복수의 실행 유닛들의 개수를 결정할 수 있다. 말하자면, 실행 유닛은 MFT 엔트리 리스트의 검색 용 실행 유닛 및 데이터 클러스터 후보의 검색 용 실행 유닛으로 분류될 수 있다.
예를 들면, 1 테라바이트(Terabyte; TB) 디스크 및 2개의 프로세서 갖는 컴퓨터 시스템에 대하여, 500 기가바이트(Gigabyte; GB)의 디스크 또는 증거 이미지가 검색된다면, 총 4개의 쓰레드들에 의해 검색이 수행될 수 있다. 파일 시스템 복구 장치(400) 또는 수집부(420)가 4개의 쓰레드들을 생성한 경우, 4개의 쓰레드의 각각은 MFT 엔트리 및 데이터 클러스터 후보 중 하나를 검색할 수 있다.
단계(830)에서, 파일 시스템 복구 장치(400) 또는 수집부(420)는 결정된 개수만큼의 복수의 실행 유닛들을 생성할 수 있다.
단계(840)에서, 수집부(420)는 디스크 또는 증거 이미지에서 적어도 하나의 MFT 엔트리 및 적어도 하나의 데이터 클러스터 후보를 검색할 수 있다.
단계(840)는 단계(841) 및 단계(842)를 포함할 수 있다.
단계(841)에서, 수집부(420)는 디스크 또는 증거 이미지에서 적어도 하나의 MFT 엔트리를 검색할 수 있다.
일 예에 따른 적어도 하나의 MFT 엔트리를 검색하는 방법이 아래에서 도 9a 내지 도 9d를 참조하여 설명된다.
단계(842)에서, 수집부(420)는 디스크 또는 증거 이미지에서 적어도 하나의 데이터 클러스터 후보를 검색할 수 있다.
일 예에 따른 데이터 클러스터 후보를 검색하는 방법이 아래에서 도 10a 및 도 10b을 참조하여 설명된다.
단계들(841 및 842)은 단계(830)에서 생성된 복수의 실행 유닛들에 의해 병렬로 수행될 수 있다. 예를 들면, 단계(841) 및 단계(842)는 별개의 실행 유닛에 의해 각각 수행될 수 있다. 디스크 또는 증거 이미지의 복수의 서로 상이한 영역들에 대해서, 복수의 실행 유닛들에 의해 단계(841)의 적어도 하나의 MFT 엔트리에 대한 검색이 각각 수행될 수 있다. 또한, 디스크 또는 증거 이미지의 복수의 서로 상이한 영역들에 대해서, 복수의 실행 유닛들에 의해 단계(842)의 데이터 클러스터 후보에 대한 검색이 각각 수행될 수 있다.
도 9a 내지 도 9d는 일 예에 따른 MFT 엔트리 리스트를 검색하는 방법의 흐름도이다.
도 9a는 일 예에 따른 MFT 엔트리를 검색하는 방법의 흐름도이다.
도 9b는 일 예에 따른 MFT 최소 생성 단위에 의해 결정된 위치에서 MFT 엔트리를 검색하는 방법의 흐름도이다.
도 9c는 일 예에 따른 적어도 하나의 역방향으로 연속된 MFT 엔트리를 검색하는 방법의 흐름도이다.
도 9d는 일 예에 따른 적어도 하나의 순방향으로 연속된 MFT 엔트리를 검색하는 방법의 흐름도이다.
우선, 도 9a를 참조하면, 도 8을 참조하여 전술된 단계(841)는 후술될 단계들(910, 920, 930, 940, 950, 960 및 970)의 적어도 일부를 포함할 수 있다.
수집부(420)는 검색의 효율성을 위해, MFT 엔트리의 검색에 있어서 MFT 최소 생성 단위를 사용할 수 있다.
MFT 최소 생성 단위는 파티션의 포맷 시 생성되는 MFT 최소 크기를 기준으로 결정되는 단위일 수 있다. 예를 들면, 파티션은 NTFS일 수 있다.
NTFS 파티션의 포맷에 있어서, 클러스터 값은 최소 512 바이트로부터 최대 64 킬로바이트(Kilobyte; KB)의 사이의 값으로 설정(set)될 수 있다. 여기에서, 512 바이트는 1 개의 섹터(sector)일 수 있고, 64 킬로바이트는 128 개의 섹터들일 수 있다. 설정된 클러스터 값에 따라 파티션이 포맷되면서, 파티션의 MFT 최소 크기가 결정될 수 있다. 예를 들면, MFT 최소 생성 단위는 64개의 MFT 엔트리들일 수 있다. MFT 엔트리의 크기는 1024 바이트일 수 있기 때문에, MFT 최소 생성 단위는 65536 바이트일 수 있다. 이러한 경우, MFT 최소 생성 단위는 128개의 섹터들에 대응할 수 있다.
단계(910)에서, 수집부(420)는 MFT 최소 생성 단위를 이용하여 디스크 또는 증거 이미지에서 데이터가 독출될 위치를 결정할 수 있다.
예를 들면, 디스크 또는 증거 이미지에서 데이터가 독출될 위치는 MFT 최소 생성 단위만큼 점프할 수 있다. 여기에서, 점프는 디스크 또는 증거 이미지에서의 독출 위치를 현재의 위치에서 다음의 위치로 이동시키는 것을 의미할 수 있다.
수집부(420)는 MFT 최소 생성 단위만큼의 점프를 통해 MFT 엔트리를 고속으로 검색할 수 있다.
단계(920)에서, 수집부(420)는 결정된 위치에서 MFT 엔트리가 검출되면, 검출된 MFT 엔트리를 MFT 엔트리 리스트에 추가할 수 있다.
도 9b를 참조하면, 단계(920)는 단계들(921, 922, 923, 924 및 925)의 적어도 일부를 포함할 수 있다.
단계(921)에서, 수집부(420)는 결정된 위치에서 데이터를 독출할 수 있다.
단계(922)에서, 수집부(420)는 독출된 데이터 중 MFT 엔트리 헤더에 해당하는 영역에 대한 분석을 수행할 수 있다.
단계(923)에서, 분석을 통해, 수집부(420)는 독출된 데이터가 MFT 엔트리인지 여부를 검사할 수 있다.
수집부(420)는 독출된 데이터가 MFT 엔트리인지 여부를 검사하기 위해 기정의된 MFT 엔트리 헤더 시그니처를 사용할 수 있다.
MFT 엔트리는 기정의된 MFT 엔트리 헤더 시그니처를 포함할 수 있다. 예를 들면, 기정의된 MFT 엔트리 헤더 시그니처는 기정의된 "FILE" 문자열(string)일 수 있다.
기정의된 MFT 엔트리 헤더 시그니처는 MFT 엔트리 헤더 중 기정의된 영역에 있을 수 있다. 예를 들면, 기정의된 MFT 엔트리 헤더 시그니처는 MFT 엔트리 헤더에서 0 내지 3의 오프셋들의 바이트들일 수 있다.
수집부(420)는 독출된 데이터 중 기정의된 영역이 기정의된 MFT 엔트리 헤더 시그니처의 값을 가지면 독출된 데이터가 MFT 엔트리인 것으로 판단할 수 있다. 여기에서, 기정의된 영역은 독출된 데이터가 MFT 엔트리에 해당할 경우, 독출된 데이터에서 기정의된 MFT 엔트리 헤더 시그니처가 위치하는 영역일 수 있다.
독출된 데이터가 MFT 엔트리이면, 단계(924)가 수행될 수 있다. 독출된 데이터가 MFT 엔트리가 아니면, 도 9a의 단계(960)가 수행될 수 있다.
단계(924)에서, 독출된 데이터가 MFT 엔트리인 것으로 판단되면, 수집부(420)는 독출된 데이터를 MFT 엔트리로서 MFT 엔트리 리스트에 추가할 수 있다.
수집부(420)는 MFT 엔트리의 MFT 엔트리 섹터 위치 및 MFT 식별자를 MFT 엔트리 리스트에 저장할 수 있다.
단계(925)에서, 수집부(420)는 MFT 엔트리가 독출된 위치를 기준 섹터 위치로서 저장할 수 있다.
기준 섹터 위치는 이후에 설명될 MFT 엔트리에 대한 역방향 탐색 및 순방향 탐색에 있어서 기준이 되는 섹터 위치로 사용될 수 있다.
단계(924) 및 단계(925)에 관련하여 전술된 순서는 단지 예시적인 것으로, 단계(923)의 이후에 단계(925)가 수행되는 것이 가능하고, 단계(925)의 이후에 단계(924)가 수행되는 것도 가능하다.
다시 도 9a를 참조하면, 단계(930)에서, 단계(924)에서 추가된 MFT 엔트리의 이전에, 적어도 하나의 역방향으로 연속된 MFT 엔트리가 검출되면, 수집부(420)는 적어도 하나의 역방향으로 연속된 MFT 엔트리를 MFT 엔트리 리스트에 추가할 수 있다.
여기에서, 적어도 하나의 역방향으로 연속된 MFT 엔트리는, 기준 섹터 위치를 기준으로 단계(924)에서 이미 추가된 MFT 엔트리 이전의, 역방향으로 연속된 MFT 엔트리(들)일 수 있다.
도 9c를 참조하면, 단계(930)는 단계들(931, 932, 933, 934 및 935)의 적어도 일부를 포함할 수 있다.
단계(931)에서, 수집부(420)는 디스크 또는 증거 이미지에서 데이터가 독출될 위치를 현재의 위치로부터 MFT 엔트리의 크기만큼 뒤로 이동시킬 수 있다. 예를 들면, 디스크 또는 증거 이미지에서 MFT 엔트리가 독출될 위치는 MFT 엔트리의 크기만큼 뒤로 점프할 수 있다.
단계(932)에서, 수집부(420)는 결정된 위치에서 데이터를 독출할 수 있다.
단계(933)에서, 수집부(420)는 독출된 데이터 중 MFT 엔트리 헤더에 해당하는 영역에 대한 분석을 수행할 수 있다.
단계(934)에서, 분석을 통해, 수집부(420)는 독출된 데이터가 MFT 엔트리인지 여부를 검사할 수 있다. 상기의 검사에 있어서, 단계(923)에서와 동일한 방식이 사용될 수 있다. 중복되는 설명은 생략한다.
독출된 데이터가 MFT 엔트리이면, 단계(935)가 수행될 수 있다. 독출된 데이터가 MFT 엔트리가 아니면, 단계(940)가 수행될 수 있다.
단계(935)에서, 수집부(420)는 독출된 MFT 엔트리를 MFT 엔트리 리스트에 추가할 수 있다.
단계(935)가 수행된 후 다시 단계(931)가 반복될 수 있다. 말하자면, 단계들(931, 932, 933, 934 및 935)을 통해 수집부(420)는 기준 섹터 위치로부터 역방향으로 MFT 엔트리를 탐색할 수 있다. 단계들(931, 932, 933, 934 및 935)은 MFT 엔트리가 발견되지 않을 때까지 반복될 수 있다.
다시 도 9a를 참조하면, 단계(940)에서, 수집부(420)는 디스크 또는 증거 이미지에서 데이터가 독출될 위치를 기준 섹터 위치로 이동시킬 수 있다. 말하자면, 역방향으로의 탐색이 완료된 후, 순방향으로의 탐색을 수행하기 위해 MFT 엔트리가 독출될 위치가 단계(910)에서 결정되었던 위치로 다시 이동할 수 있다.
단계(950)에서, 단계(924)에서 추가된 MFT 엔트리의 다음에, 적어도 하나의 순방향으로 연속된 MFT 엔트리가 검출되면, 수집부(420)는 적어도 하나의 순방향으로 연속된 MFT 엔트리를 MFT 엔트리 리스트에 추가할 수 있다.
여기에서, 적어도 하나의 순방향으로 연속된 MFT 엔트리는, 기준 섹터 위치를 기준으로 단계(924)에서 이미 추가된 MFT 엔트리 이후의, 순방향으로 연속된 MFT 엔트리(들)일 수 있다.
도 9d를 참조하면, 단계(950)는 단계들(951, 952, 953, 954 및 955)의 적어도 일부를 포함할 수 있다.
단계(951)에서, 수집부(420)는 디스크 또는 증거 이미지에서 데이터가 독출될 위치를 현재의 위치로부터 MFT 엔트리의 크기만큼 앞으로 이동시킬 수 있다. 예를 들면, 디스크 또는 증거 이미지에서 MFT 엔트리가 독출될 위치는 MFT 엔트리의 크기만큼 점프할 수 있다.
단계(952)에서, 수집부(420)는 결정된 위치에서 데이터를 독출할 수 있다.
단계(953)에서, 수집부(420)는 독출된 데이터 중 MFT 엔트리 헤더에 해당하는 영역에 대한 분석을 수행할 수 있다.
단계(954)에서, 분석을 통해, 수집부(420)는 독출된 데이터가 MFT 엔트리인지 여부를 검사할 수 있다.
독출된 데이터가 MFT 엔트리이면, 단계(955)가 수행될 수 있다. 독출된 데이터가 MFT 엔트리가 아니면, 단계(960)가 수행될 수 있다.
단계(955)에서, 수집부(420)는 독출된 MFT 엔트리를 MFT 엔트리 리스트에 추가할 수 있다.
단계(955)가 수행된 후 다시 단계(951)가 반복될 수 있다. 말하자면, 단계들(951, 952, 953, 954 및 955)을 통해 수집부(420)는 기준 섹터 위치로부터 순방향으로 MFT 엔트리를 탐색할 수 있다. 단계들(951, 952, 953, 954 및 955)은 MFT 엔트리가 발견되지 않을 때까지 반복될 수 있다.
다시 도 9a를 참조하면, 단계(930) 및 단계(950)에 대하여 전술된 순서는 단지 예시적인 것으로, 단계(940) 및 단계(950)의 위치는 서로 바뀔 수 있다.
단계(960)에서, 수집부(420)는 단계(910) 또는 단계(970)에서 결정된 위치가 디스크 또는 증거 이미지의 마지막 위치에 해당하는지 여부를 검사할 수 있다. 결정된 위치가 마지막 위치에 해당하지 않으면 단계(970)가 수행될 수 있다. 결정된 위치가 마지막 위치에 해당하면 절차가 종료할 수 있다.
단계(970)에서, 수집부(420)는 디스크 또는 증거 이미지에서 데이터가 독출될 위치를 MFT 최소 생성 단위만큼 이동시킬 수 있다.
단계(970)가 수행되면, 단계(920)가 다시 반복될 수 있다.
MFT 엔트리 리스트는 리스트 형태의 자료 구조(data structure)로서 저장될 수 있다. 일 예에 따른 MFT 엔트리 리스트가 아래에서 도 21을 참조하여 설명된다.
도 10a 및 도 10b는 일 예에 따른 데이터 클러스터 후보를 검색하는 방법의 흐름도이다.
도 10a는 일 예에 따른 데이터 클러스터 후보의 검색을 위해 데이터를 독출하는 방법의 흐름도이다.
도 10b는 일 예에 따른 데이터가 데이터 클러스터인지 여부를 판단하는 방법의 흐름도이다.
우선, 도 10a을 참조하면, 도 8을 참조하여 전술된 단계(842)는 후술될 단계들(1010, 1020, 1030, 1040, 1050, 1060 및 1070)의 적어도 일부를 포함할 수 있다.
도 10a의 단계들(1010, 1020, 1030, 1040, 1050, 1060 및 1070)에서, 수집부(420)는 적어도 하나의 데이터 클러스터 후보를 검색할 수 있다. 적어도 하나의 데이터 클러스터 후보의 각 데이터 클러스터 후보는 단계(841)에서 검색된 MFT 엔트리 리스트의 MFT 엔트리와 쌍을 이루는 것이 가능한 데이터 클러스터일 수 있다. 또는, 각 데이터 클러스터 후보는 단계(841)에서 검색된 적어도 하나의 MFT 엔트리 리스트의 MFT 엔트리와 쌍을 이루는 것이 가능한 데이터 클러스터의 정보일 수 있다.
예를 들면, MFT 엔트리가 파일에 해당하는 경우, MFT 엔트리의 "$데이터($Data)" 속성의 "비-상주(non-resident)" 속성의 "데이터 클러스터 런 리스트(Data Cluster Run List)"가 가리키는 주소의 데이터 클러스터가 MFT 엔트리와 쌍을 이룰 수 있다. 파일에 해당하는 MFT 엔트리와 쌍을 이루는 데이터 클러스터는 데이터 내용(content)를 나타낼 수 있다.
또한, 예를 들면, MFT 엔트리가 디렉토리(또는, 폴더)에 해당할 경우, MFT 엔트리의 "$인덱스_할당(Index_Allocation)" 속성의 "비-상주(non-resident)" 속성의 "데이터 클러스터 런 리스트(Data Cluster Run List)"가 가리키는 주소의 데이터 클러스터가 MFT 엔트리와 쌍을 이룰 수 있다. 디렉토리(또는, 폴더)에 해당하는 MFT 엔트리와 쌍을 이루는 데이터 클러스터는 인덱스 레코드(Index Record)를 나타낼 수 있다.
단계(1010)에서, 수집부(420)는 디스크 또는 증거 이미지에서 데이터가 독출될 위치를 결정할 수 있다. 예를 들면, 수집부(420)는 디스크 또는 증거 이미지의 시작을 데이터가 독출될 위치로서 결정할 수 있다. 독출된 위치는 디스크 또는 증거 이미지의 섹터를 가리킬 수 있다. 디스크 또는 증거 이미지의 시작은 디스크 또는 증거 이미지의 최초의 섹터일 수 있다.
단계(1020)에서, 수집부(420)는 결정된 위치에서 데이터를 독출할 수 있다. 독출된 데이터는 적어도 하나의 섹터일 수 있다. 말하자면, 수집부(420)는 섹터 단위로 데이터를 독출할 수 있다.
단계(1030)에서, 수집부(420)는 독출된 데이터에 대한 분석을 수행할 수 있다.
단계(1040)에서, 분석을 통해, 수집부(420)는 독출된 데이터가 데이터 클러스터인지 여부를 판단할 수 있다.
독출된 데이터가 데이터 클러스터인 것으로 판단된 경우, 단계(1050)가 수행될 수 있다. 독출된 데이터가 데이터 클러스터가 아닌 것으로 판단된 경우, 단계(1060)가 수행될 수 있다.
도 10b를 참조하면, 단계(1040)는 단계들(1041 및 1042)를 포함할 수 있다.
단계(1041)에서, 수집부(420)는 독출된 데이터가 기정의된 데이터 클러스터 시그니처에 대응하는지 여부를 판단할 수 있다.
독출된 데이터가 기정의된 데이터 클러스터 시그니처에 대응할 경우 단계(1042)가 수행될 수 있다. 독출된 데이터가 기정의된 데이터 클러스터 시그니처에 대응하지 않는 경우 도 10a의 단계(1060)가 수행될 수 있다.
수집부(420)는 독출된 데이터가 데이터 클러스터인지 여부를 판단하기 위해 기정의된 데이터 클러스터 시그니처를 사용할 수 있다.
데이터 클러스터는 기정의된 데이터 클러스터 시그니처를 포함할 수 있다. 예를 들면, 기정의된 데이터 클러스터 시그니처는 기정의된 문자열일 수 있다.
기정의된 데이터 클러스터 시그니처는 섹터 중 기정의된 영역에 있을 수 있다. 예를 들면, 기정의된 데이터 클러스터 시그니처는 섹터 중 기정의된 범위 내의 오프셋들의 바이트들일 수 있다.
수집부(420)는 독출된 데이터가 기정의된 데이터 클러스터 시그니처를 포함하면 독출된 데이터가 기정의된 데이터 클러스터 시그니처에 대응하는 것으로 판단할 수 있다. 수집부(420)는 독출된 데이터가 기정의된 데이터 클러스터 시그니처를 포함하지 않으면 독출된 데이터가 기정의된 데이터 클러스터 시그니처에 대응하지 않는 것으로 판단할 수 있다.
또는, 수집부(420)는 독출된 데이터 중 기정의된 영역이 기정의된 데이터 클러스터 시그니처의 값을 가지면 독출된 데이터가 기정의된 데이터 클러스터 시그니처에 대응하는 것으로 판단할 수 있다. 수집부(420)는 독출된 데이터 중 기정의된 영역이 기정의된 데이터 클러스터 시그니처의 값을 가지지 않으면 독출된 데이터가 기정의된 데이터 클러스터 시그니처에 대응하지 않는 것으로 판단할 수 있다. 여기에서, 소정의 영역은 독출된 데이터가 데이터 클러스터에 해당할 경우, 독출된 데이터에서 기정의된 데이터 클러스터 시그니처가 위치하는 영역일 수 있다.
단계(1042)에서, 수집부(420)는 독출된 데이터가 실제로 데이터 클러스터로서 정확한지 여부를 판단할 수 있다. 수집부(420)는 독출된 데이터가 기정의된 조건을 충족시키는지 여부를 검사할 수 있다. 수집부(420)는 독출된 데이터가 기정의된 조건을 충족시키면 독출된 데이터가 데이터 클러스터인 것으로 판단할 수 있다. 수집부(420)는 독출된 데이터가 기정의된 조건을 충족시키지 않으면 독출된 데이터가 데이터 클러스터가 아닌 것으로 판단할 수 있다.
데이터 클러스터는 복수의 섹터들에 저장될 수 있다. 예를 들면, 수집부(420)는 복수의 섹터들의 전체의 데이터의 내용이 일치하는지 여부를 검증할 수 있다. 수집부(420)는 복수의 섹터들의 데이터를 서로 간에 비교함으로써 상기의 검증을 수행할 수 있다. 수집부(420)는 전체의 데이터의 내용이 일치하는 것으로 검증된 경우 독출된 데이터가 실제로 데이터 클러스터인 것으로 판단할 수 있다. 수집부(420)는 전체의 데이터의 내용이 일치하지 않는 것으로 검증된 경우 독출된 데이터가 실제로는 데이터 클러스터가 아닌 것으로 판단할 수 있다.
독출된 데이터가 실제로 데이터 클러스터인 것으로 판단된 경우 단계(1050)가 수행될 수 있다. 독출된 데이터가 실제로는 데이터 클러스터가 아닌 것으로 판단된 경우 단계(1060)가 수행될 수 있다.
다시 도 10a를 참조하면, 단계(1050)에서, 독출된 데이터가 데이터 클러스터인 것으로 판단된 경우 수집부(420)는 독출된 데이터를 데이터 클러스터로서 적어도 하나의 데이터 클러스터 후보에 추가할 수 있다. 예를 들면, 독출된 데이터가 데이터 클러스터인 것으로 판단된 경우 수집부(420)는 데이터 클러스터로 판단된 데이터를 데이터 클러스터 후보로 저장할 수 있다.
단계(1060)에서, 수집부(420)는 디스크 또는 증거 이미지에서 모든 데이터가 독출되었는지 여부를 판단할 수 있다.
디스크 또는 증거 이미지에서 모든 데이터가 독출된 것으로 판단된 경우 절차가 종료할 수 있다. 디스크 또는 증거 이미지에서 모든 데이터가 독출되지 않은 것으로 판단된 단계(1070)가 수행될 수 있다.
예를 들면, 수집부(420)는 단계(1020)에서 독출된 섹터가 디스크 또는 증거 이미지의 마지막의 섹터인지 여부를 판단할 수 있다. 독출된 섹터가 디스크 또는 증거 이미지의 마지막의 섹터인 것으로 판단된 경우 절차가 종료할 수 있다. 독출된 섹터가 디스크 또는 증거 이미지의 마지막의 섹터가 아닌 것으로 판단된 경우 단계(1070)가 수행될 수 있다.
단계(1070)에서, 수집부(420)는 디스크 또는 증거 이미지에서 데이터가 독출될 위치를 현재의 위치로부터 다음의 위치로 이동시킬 수 있다. 예를 들면, 수집부(420)는 디스크 또는 증거 이미지에서 데이터가 독출될 위치를 다음의 섹터로 이동시킬 수 있다.
수집된 적어도 하나의 데이터 클러스터 후보는 리스트 형태의 자료 구조(data structure)로서 저장될 수 있다. 일 예에 따른 적어도 하나의 데이터 클러스터 후보의 리스트가 아래에서 도 23을 참조하여 설명된다.
도 11a 및 도 11b는 일 예에 따른 MFT 엔트리-데이터 클러스터 쌍 후보를 생성하는 방법의 흐름도이다.
도 11a는 일 예에 따른 대상 MFT 엔트리 후보를 선택하는 방법의 흐름도이다.
도 11b는 일 예에 따른 선택된 대상 MFT 엔트리 후보에 대하여 MFT 엔트리-데이터 클러스터 쌍 후보를 생성하는 방법의 흐름도이다.
후술될 단계들(1110, 1112, 1114, 1116)에서, 분석부(430)는 MFT 엔트리 리스트에서 하나의 MFT 엔트리를 선택할 수 있고, 적어도 하나의 데이터 클러스터 후보에서 하나의 데이터 클러스터 후보를 선택할 수 있다. 분석부(430)는 선택된 MFT 엔트리 및 선택된 데이터 클러스터 후보가 MFT 엔트리-데이터 클러스터 쌍을 이루는 지의 여부를 검사할 수 있다. 이하에서, 검사의 대상인 선택된 MFT 엔트리를 대상 MFT 엔트리 후보로 명명하고, 검사의 대상인 선택된 데이터 클러스터 후보를 대상 데이터 클러스터 후보로 명명한다.
MFT 엔트리-데이터 클러스터 쌍 후보를 이루는 MFT 엔트리 후보는 기정의된 타입의 MFT 엔트리일 수 있다. 분석부(430)는 MFT 엔트리 리스트에서 기정의된 타입의 MFT 엔트리를 검색할 수 있다. MFT 분석부(430)는 적어도 하나의 MFT 엔트리 중 기정의된 타입의 MFT 엔트리에 해당하는 MFT 엔트리 후보에 대해 데이터 클러스터 후보와의 매칭을 수행할 수 있다.
일 예에 따른 기정의된 MFT 엔트리 및 기정의된 MFT 엔트리의 데이터가 도 17a 및 도 17b를 참조하여 각각 설명된다.
기정의된 타입의 MFT 엔트리는 MFT 엔트리 내에 기록된 논리적 클러스터 번호(Logical Cluster Number; LCN) 주소로부터의 물리적 주소로의 매핑을 가능하게 하는 MFT 엔트리일 수 있다. 상기의 매핑에 의해 파티션의 레이아웃의 복원이 이루어질 수 있다.
기정의된 타입의 MFT 엔트리는 파일의 MFT 엔트리 및 디렉토리의 MFT 엔트리를 포함할 수 있다.
파일의 MFT 엔트리는 "$데이터(Data)" 속성이 "비-상주(non-resident)"인 MFT 엔트리일 수 있다. 디렉토리의 MFT 엔트리는 "$인덱스_할당(Index_Allocation)" 속성이 "비-상주(non-resident)"인 MFT 엔트리일 수 있다.
우선, 도 11a를 살펴보면, 후술될 단계들(1110, 1112, 1114, 1116 및 1118)을 통해 기정의된 타입의 MFT 엔트리가 대상 MFT 엔트리 후보로서 선택될 수 있다.
단계(1110)에서, 분석부(430)는 단계(841)에서 MFT 엔트리 리스트에서 대상 MFT 엔트리를 선택할 수 있다. 분석부(430)는 MFT 엔트리 리스트의 첫 번째의 MFT 엔트리를 대상 MFT 엔트리로서 선택할 수 있다.
예를 들면, 분석부(430)는 MFT 엔트리 리스트의 첫 번째의 MFT 엔트리를 대상 MFT 엔트리로서 선택할 수 있다.
단계(1112)에서, 분석부(430)는 접근부(410)를 통해 선택된 대상 MFT 엔트리의 데이터를 독출할 수 있다.
단계(1114)에서, 분석부(430)는 대상 MFT 엔트리가 기정의된 타입의 MFT 엔트리인지 여부를 검사할 수 있다.
대상 MFT 엔트리가 기정의된 타입의 MFT 엔트리인 경우 도 11b를 참조하여 설명될 단계(1120)가 수행될 수 있다. 대상 MFT 엔트리가 기정의된 타입의 MFT 엔트리인 경우(즉, MFT 엔트리 리스트 내의 기정의된 MFT 엔트리가 확인된 경우), 대상 MFT 엔트리는 MFT 엔트리 후보로서 관리될 수 있다. 또한, 대상 MFT 엔트리는 MFT 엔트리 후보로 간주될 수 있다.
수집된 적어도 하나의 MFT 엔트리 후보는 리스트 형태의 자료 구조(data structure)로서 저장될 수 있다. 일 예에 따른 적어도 하나의 MFT 엔트리 후보의 리스트가 아래에서 도 22를 참조하여 설명된다.
대상 MFT 엔트리가 기정의된 타입의 MFT 엔트리가 아닌 경우 단계(1116)가 수행될 수 있다.
단계(1116)는 도 11b를 참조하여 후술될 단계(1180)의 다음에도 수행될 수 있다.
단계(1116)에서, 분석부(430)는 현재의 대상 MFT 엔트리가 MFT 엔트리 리스트의 적어도 하나의 MFT 엔트리 중 마지막의 MFT 엔트리인지 여부를 검사할 수 있다.
현재의 대상 MFT 엔트리가 마지막의 MFT 엔트리인 경우 절차가 종료할 수 있다.
현재의 대상 MFT 엔트리가 마지막의 MFT 엔트리가 아닌 경우 단계(1118)가 수행될 수 있다.
단계(1118)에서, 분석부(430)는 현재의 대상 MFT 엔트리의 다음 MFT 엔트리를 새로운 대상 MFT 엔트리로서 선택할 수 있다. 새로운 대상 MFT 엔트리가 선택된 후 단계(1112)가 수행될 수 있다.
다음으로, 도 11b를 참조하면, 기정의된 타입의 MFT 엔트리로 판단된 대상 MFT 엔트리 후보에 대하여 후술될 단계들(1120, 1130, 1140, 1145, 1150, 1150, 1160, 1170, 1175, 1180 및 1190)이 수행될 수 있다.
단계(1120)에서, 분석부(430)는 디스크 또는 증거 이미지로부터 대상 MFT 엔트리의 데이터를 독출할 수 있다.
분석부(430)는 디스크 또는 증거 이미지로부터 대상 MFT 엔트리의 데이터가 저장된 섹터를 독출함으로써 대상 MFT 엔트리의 데이터를 독출할 수 있다.
단계(1130)에서, 분석부(430)는 대상 MFT 엔트리를 디렉토리의 MFT 엔트리 및 파일의 MFT 엔트리 중 하나로 분류할 수 있다.
예를 들면, 분석부(430)는 대상 MFT 엔트리의 MFT 엔트리 헤더의 기정의된 오프셋의 정보를 사용하여 대상 MFT 엔트리를 대상 MFT 엔트리 후보로 분류할 수 있다. 기정의된 오프셋은 "플레그들(Flags)" 오프셋일 수 있다. "플레그들" 오프셋들은 22 내지 23의의 오프셋들일 수 있다. 여기에서, 오프셋의 단위는 바이트일 수 있다.
예를 들면, "플레그들" 오프셋들의 값이 "00 00" 또는 "01 00"이면, 대상 MFT 엔트리는 파일로 분류될 수 있다. "플레그들" 오프셋들의 값이 "02 00" 또는 "03 00"이면, 대상 MFT 엔트리는 디렉토리로 분류될 수 있다.
대상 MFT 엔트리가 디렉토리의 MFT 엔트리 후보인 경우 단계(1140)가 수행될 수 있다. 대상 MFT 엔트리가 파일의 MFT 엔트리 후보인 경우 단계(1145)가 수행될 수 있다.
단계(1140)에서, 분석부(430)는 디렉토리의 MFT 엔트리인 대상 MFT 엔트리 후보에 대한 분석을 수행할 수 있다. 분석에 의해 획득된 결과는 복원의 대상인 파티션의 클러스터 크기를 계산하기 위해 사용될 수 있다.
분석을 통해, 분석부(430)는 MFT 엔트리의 디렉토리 인덱스 시작 위치 클러스터 오프셋 "MEStartClusterOffset" 및 MFT 엔트리의 디렉토리 인덱스 클러스터 개수 "DefinedMETotalCluster"를 획득할 수 있다. 분석부(430)는 MFT 엔트리의 "$인덱스_할당(Index_Allocation)" 속성의 "비-상주(non-resident)" 속성의 "데이터 클러스터 런 리스트(Data Cluster Run List)"에 대한 분석을 통해 MFT 엔트리의 디렉토리 인덱스 시작 위치 클러스터 오프셋 "MEStartClusterOffset" 및 MFT 엔트리의 디렉토리 인덱스 클러스터 개수 "DefinedMETotalCluster"를 획득할 수 있다.
단계(1145)에서, 분석부(430)는 파일의 MFT 엔트리인 대상 MFT 엔트리에 대한 분석을 수행할 수 있다. 분석에 의해 획득된 결과는 복원의 대상인 파티션의 클러스터 크기를 계산하기 위해 사용될 수 있다.
분석을 통해, 분석부(430)는 MFT 엔트리의 MFT 엔트리 파일 시작 위치 클러스터 오프셋 "MEStartClusterOffset" 및 MFT 엔트리의 클러스터 개수 "DefinedMETotalCluster"를 획득할 수 있다. 분석부(430)는 MFT 엔트리의 "$데이터($Data)" 속성의 "비-상주(non-resident)" 속성의 "데이터 클러스터 런 리스트(Data Cluster Run List)"에 대한 분석을 통해 MFT 엔트리의 MFT 엔트리 파일 시작 위치 클러스터 오프셋 "MEStartClusterOffset" 및 MFT 엔트리의 클러스터 개수 "DefinedMETotalCluster"를 획득할 수 있다.
단계(1150)에서, 분석부(430)는 단계(842)에서 수집된 적어도 하나의 데이터 클러스터 후보에서 대상 데이터 클러스터 후보를 선택할 수 있다. 분석부(430)는 적어도 하나의 데이터 클러스터 후보의 첫 번째의 데이터 클러스터를 대상 데이터 클러스터 후보로서 선택할 수 있다.
단계(1155)에서, 분석부(430)는 선택된 대상 데이터 클러스터 후보의 물리적 섹터 오프셋을 획득할 수 있다.
단계(1160)에서, 분석부(430)는 대상 MFT 엔트리 후보 및 대상 데이터 클러스터 후보를 사용하여 부트 레코드의 위치를 계산할 수 있다. 말하자면, 분석부(430)는 MFT 엔트리 리스트 내에 존재하는 적어도 하나의 MFT 엔트리 후보 및 적어도 하나의 데이터 클러스터 후보 중 대상 데이터 클러스터 후보를 사용하여 부트 레코드의 위치를 계산할 수 있다.
이하에서, 부트 레코드의 위치는 부트 레코드의 섹터 오프셋을 의미할 수 있다.
분석부(430)는 대상 MFT 엔트리 후보 및 대상 데이터 클러스터 후보 간의 상대적인 위치에 기반하여 부트 레코드의 위치를 계산할 수 있다.
일 예에 따른 부트 레코드의 위치를 계산하는 방법이 아래에서 도 12 및 도 13을 각각 참조하여 설명된다.
단계(1170)에서, 분석부(430)는 대상 MFT 엔트리 후보 및 대상 데이터 클러스터 후보가 MFT 엔트리-데이터 클러스터 쌍이 되기 위한 기정의된 조건을 충족시키는지 여부를 판단할 수 있다.
대상 MFT 엔트리 후보 및 대상 데이터 클러스터 후보가 MFT 엔트리-데이터 클러스터 쌍이 되기 위한 기정의된 조건을 충족시키는 경우 단계(1175)가 수행될 수 있다. 대상 MFT 엔트리 후보 및 대상 데이터 클러스터 후보가 MFT 엔트리-데이터 클러스터 쌍이 되기 위한 기정의된 조건을 충족시키지 않는 경우 단계(1180)가 수행될 수 있다.
예를 들면, 기정의된 조건은 대상 MFT 엔트리 후보 및 대상 데이터 클러스터 후보가 동일한 파티션 내의 데이터인 것일 수 있다. 말하자면, 대상 MFT 엔트리 후보 및 대상 데이터 클러스터 후보가 동일한 파티션 내의 데이터이면, 대상 MFT 엔트리 후보 및 대상 데이터 클러스터 후보는 MFT 엔트리-데이터 클러스터 쌍을 이룰 수 있다. 반면, 대상 MFT 엔트리 후보 및 대상 데이터 클러스터 후보가 서로 상이한 파티션 내의 데이터이면, 대상 MFT 엔트리 후보 및 대상 데이터 클러스터 후보는 MFT 엔트리-데이터 클러스터 쌍을 이룰 수 없다.
분석부(430)는 대상 MFT 엔트리 후보 및 대상 데이터 클러스터 후보가 동일한 파티션 내의 데이터인지 여부를 판단할 수 있다. 분석부(430)는 부트 레코드의 위치에 기반하여 대상 MFT 엔트리 후보 및 대상 데이터 클러스터 후보가 동일한 파티션 내의 데이터인지 여부를 판단할 수 있다.
대상 MFT 엔트리 후보 및 대상 데이터 클러스터 후보가 동일한 파티션 내의 데이터인 경우 단계(1175)가 수행될 수 있다. 대상 MFT 엔트리 후보 및 대상 데이터 클러스터 후보가 동일한 파티션 내의 데이터가 아닌 경우 단계(1180)가 수행될 수 있다.
단계(1175)에서, 분석부(430)는 대상 MFT 엔트리 후보 및 대상 데이터 클러스터 후보의 쌍을 적어도 하나의 MFT 엔트리-데이터 클러스터 쌍 후보에 추가할 수 있다.
말하자면, 분석부(430)는 대상 MFT 엔트리 후보 및 대상 데이터 클러스터 후보가 기정의된 조건을 충족시키면 대상 MFT 엔트리 후보 및 대상 데이터 클러스터 후보의 쌍을 적어도 하나의 MFT 엔트리-데이터 클러스터 쌍 후보에 추가할 수 있다. 예를 들면, 분석부(430)는 대상 MFT 엔트리 후보 및 대상 데이터 클러스터 후보가 동일한 파티션 내의 데이터이면 대상 MFT 엔트리 후보 및 대상 데이터 클러스터 후보의 쌍을 적어도 하나의 MFT 엔트리-데이터 클러스터 쌍 후보에 추가할 수 있다.
단계(1180)에서, 분석부(430)는 현재의 대상 데이터 클러스터 후보가 적어도 하나의 데이터 클러스터 후보 중 마지막의 데이터 클러스터 후보인지 여부를 검사할 수 있다.
현재의 대상 데이터 클러스터 후보가 마지막의 데이터 클러스터 후보인 경우 현재의 대상 MFT 엔트리 후보에 대한 절차가 종료할 수 있고, 다음으로 도 11a를 참조하여 전술된 단계(1116)가 수행될 수 있다.
현재의 대상 데이터 클러스터 후보가 마지막의 데이터 클러스터 후보가 아닌 경우 단계(1190)가 수행될 수 있다.
단계(1190)에서, 분석부(430)는 현재의 대상 데이터 클러스터 후보의 다음 데이터 클러스터 후보를 새로운 대상 데이터 클러스터 후보로서 선택할 수 있다. 새로운 대상 데이터 클러스터 후보가 선택된 후 단계(1155)가 수행될 수 있다.
전술된 과정을 통해, 대상 MFT 엔트리 후보 및 대상 데이터 클러스터 후보에 대해서 부트 레코드의 위치가 계산될 수 있고, 대상 MFT 엔트리 후보 및 대상 데이터 클러스터 후보가 동일한 파티션에 속하는지 여부가 판단될 수 있다.
예를 들면, MFT 엔트리 리스트가 기정의된 3개의 MFT 엔트리들을 포함하고, 기정의된 3개의 데이터 클러스터 후보 정보가 존재하는 경우, 총 9가지의 경우들의 각 경우에 대해서 부트 레코드의 위치가 계산될 수 있고, 각 경우에 대해서 대상 MFT 엔트리 및 대상 데이터 클러스터 후보가 동일한 파티션에 속하는지 여부가 판단될 수 있다.
도 12는 일 예에 따른 파일의 MFT 엔트리에 대하여 부트 레코드의 위치를 계산하는 방법의 흐름도이다.
도 11b를 참조하여 전술된 단계(1160)은 후술될 단계(1210, 1211, 1212, 1213, 1220, 1221, 1230 및 1240)들의 적어도 일부를 포함할 수 있다.
단계(1210)에서, 분석부(430)는 대상 MFT 엔트리 후보에 대한 분석을 수행함으로써 대상 MFT 엔트리 후보의 속성 값을 획득할 수 있다.
대상 MFT 엔트리 후보의 속성 값은 대상 MFT 엔트리 후보의 MFT 엔트리 파일 크기 "DefinedMETotalBytes", 대상 MFT 엔트리 후보의 MFT 엔트리 파일 시작 위치 클러스터 오프셋 "MEStartClusterOffset" 및 대상 MFT 엔트리 후보의 MFT 엔트리 파일 클러스터 개수 "DefinedMETotalCluster"를 포함할 수 있다.
단계(1210)는 단계들(1211, 1212 및 1213)을 포함할 수 있다.
단계(1211)에서, 분석부(430)는 대상 MFT 엔트리 후보의 "$데이터($Data)" 속성에 대한 파싱을 수행할 수 있다.
파싱이 수행된 후, 단계들(1212 및 1213)에서, 분석부(430)는 대상 MFT 엔트리 후보의 "$데이터($Data)" 속성의 "비-상주(non-resident)" 속성의 헤더에 대한 분석을 수행할 수 있다.
단계(1212)에서, 분석부(430)는 "비-상주(non-resident)" 속성의 헤더에 대한 분석을 통해 대상 MFT 엔트리 후보의 MFT 엔트리 파일 크기 "DefinedMETotalBytes"를 획득할 수 있다. 분석부는 "비-상주(non-resident)" 속성의 헤더 중 기정의된 오프셋으로부터 MFT 엔트리 파일 크기 "DefinedMETotalBytes"를 획득할 수 있다. 기정의된 오프셋은 "속성 내용의 할당된 크기(Allocated Size of Attribute Content)" 오프셋들일 수 있다. "속성 내용의 실제 크기" 오프셋들은 40 내지 47의 오프셋들일 수 있다.
단계(1213)에서, 분석부(430)는 "비-상주(non-resident)" 속성의 헤더에 대한 분석을 통해 대상 MFT 엔트리 후보의 MFT 엔트리 파일 시작 위치 클러스터 오프셋 "MEStartClusterOffset" 및 대상 MFT 엔트리 후보의 MFT 엔트리 파일 클러스터 개수 "DefinedMETotalCluster"를 획득할 수 있다. 분석부는 "비-상주(non-resident)" 속성의 헤더 중 기정의된 오프셋으로부터 MFT 엔트리 파일 시작 위치 클러스터 오프셋 "MEStartClusterOffset" 및 MFT 엔트리 파일 클러스터 개수 "DefinedMETotalCluster"를 획득할 수 있다. 기정의된 오프셋은 "데이터 클러스터 런 리스트(Data Cluster Run List)" 오프셋들일 수 있다. "데이터 클러스터 런 리스트(Data Cluster Run List)" 오프셋들은 64의 이상의 오프셋들일 수 있다.
단계(1220)에서, 분석부(440)는 대상 데이터 클러스터 후보에 대한 분석을 수행함으로써 대상 데이터 클러스터 후보의 속성 값을 획득할 수 있다.
대상 데이터 클러스터 후보의 속성 값은 대상 데이터 클러스터 후보의 현재 물리적 섹터 오프셋 "DefinedDCCurrentPhysicalSectorOffset"을 포함할 수 있다.
단계(1220)는 단계(1221)를 포함할 수 있다.
단계(1221)에서, 분석부(440)는 대상 데이터 클러스터 후보의 현재 물리적 섹터 오프셋 "DefinedDCCurrentPhysicalSectorOffset"을 획득할 수 있다.
단계(1230)에서, 분석부(430)는 대상 MFT 엔트리 후보의 속성 값 및 대상 데이터 클러스터 후보의 속성 값을 사용하여 부트 레코드의 위치를 계산할 수 있다.
우선, 분석부(430)는 대상 MFT 엔트리 후보의 MFT 엔트리 파일 크기 "DefinedMETotalBytes" 및 대상 MFT 엔트리 후보의 클러스터 개수 "DefinedMeTotalCluster"를 사용하여 가상 파티션의 클러스터 당 바이트 개수 "MEBytesPerCluster"를 계산할 수 있다.
분석부(430)는 아래의 수식 1에 기반하여 가상 파티션의 클러스터 당 바이트 개수 "MEBytesPerCluster"를 계산할 수 있다.
[수식 1]
MEBytesPerCluster = DefinedMETotalBytes / DefinedMETotalCluster
다음으로, 분석부(430)는 대상 데이터 클러스터 후보의 현재 물리적 섹터 오프셋 "DefinedDCCurrentPhysicalSectorOffset", 대상 MFT 엔트리 후보의 MFT 엔트리 파일 시작 위치 클러스터 오프셋 "MEStartClusterOffset" 및 가상 파티션의 클러스터 당 바이트 크기 "MEBytesPerCluster"에 기반하여 가상 파티션의 부트 레코드의 물리적 섹터 오프셋 "MEBROffset"을 계산할 수 있다.
분석부(430)는 아래의 수식 2에 기반하여 가상 파티션의 부트 레코드의 물리적 섹터 오프셋 "MEBROffset"을 계산할 수 있다.
[수식 2]
MEBROffset = DefinedDCCurrentPhysicalSectorOffset - (MEStartClusterOffset * MEBytesPerCluster / 512 bytes)
분석부(430)는 계산의 결과가 물리적 섹터를 나타내게 하기 위해 대상 데이터 클러스터 후보의 현재 물리적 섹터 오프셋 "DefinedDCCurrentPhysicalSectorOffset"을 512 바이트로 나눌 수 있다. 또한, 디스크가 확장된(expanded) 디스크를 지원할 경우, 섹터의 기본 섹터 단위가 512 바이트의 배수가 될 수 있다. 기본 섹터 단위가 512 바이트가 아닌 경우, 분석부(430)는 수식 1 및 수식 2의 계산을 수행함에 있어서 기본 섹터 단위를 고려할 수 있다.
단계(1240)에서, 분석부(430)는 계산된 부트 레코드의 위치를 출력할 수 있다.
도 13은 일 예에 따른 디렉토리의 MFT 엔트리에 대하여 부트 레코드의 위치를 계산하는 방법의 흐름도이다.
도 11b를 참조하여 전술된 단계(1160)은 후술될 단계(1310, 1311, 1312, 1313, 1320, 1321, 1330 및 1340)들의 적어도 일부를 포함할 수 있다.
단계(1310)에서, 분석부(430)는 대상 MFT 엔트리 후보에 대한 분석을 수행함으로써 대상 MFT 엔트리 후보의 속성 값을 획득할 수 있다.
대상 MFT 엔트리 후보의 속성 값은 대상 MFT 엔트리 후보의 디렉토리 인덱스 크기 "DefinedMETotalBytes", 대상 MFT 엔트리 후보의 디렉토리 인덱스 시작 위치 클러스터 오프셋 "MEStartClusterOffset" 및 대상 MFT 엔트리 후보의 MFT 엔트리의 디렉토리 인덱스 클러스터 개수 "DefinedMETotalCluster"를 포함할 수 있다.
단계(1310)는 단계들(1311, 1312 및 1313)을 포함할 수 있다.
단계(1311)에서, 분석부(430)는 대상 MFT 엔트리 후보의 "$인덱스_할당(Index_Allocation)" 속성에 대한 파싱을 수행할 수 있다.
파싱이 수행된 후, 단계들(1312 및 1313)에서, 분석부(430)는 대상 MFT 엔트리 후보의 "$인덱스_할당(Index_Allocation)" 속성의 "비-상주(non-resident)" 속성의 헤더에 대한 분석을 수행할 수 있다.
단계(1312)에서, 분석부(430)는 "$인덱스_할당(Index_Allocation)" 속성의 헤더에 대한 분석을 통해 대상 MFT 엔트리 후보의 디렉토리 인덱스 크기 "DefinedMETotalBytes"를 획득할 수 있다. 분석부는 "비-상주(non-resident)" 속성의 헤더 중 기정의된 오프셋으로부터 디렉토리 인덱스 크기 "DefinedMETotalBytes"를 획득할 수 있다. 기정의된 오프셋은 "속성 내용의 실제 크기(Real Size of Attribute Content)" 오프셋들일 수 있다. "속성 내용의 실제 크기" 오프셋들은 48 내지 55의 오프셋들일 수 있다.
단계(1313)에서, 분석부(430)는 "비-상주(non-resident)" 속성의 헤더에 대한 분석을 통해 대상 MFT 엔트리 후보의 디렉토리 인덱스 시작 위치 클러스터 오프셋 "MEStartClusterOffset" 및 대상 MFT 엔트리 후보의 클러스터 개수 "DefinedMETotalCluster"를 획득할 수 있다. 분석부는 "비-상주(non-resident)" 속성의 헤더 중 기정의된 오프셋으로부터 디렉토리 인덱스 시작 위치 클러스터 오프셋 "MEStartClusterOffset" 및 MFT 엔트리의 디렉토리 인덱스 클러스터 개수 "DefinedMETotalCluster"를 획득할 수 있다. 기정의된 오프셋은 "데이터 클러스터 런 리스트(Data Cluster Run List)" 오프셋들일 수 있다. "데이터 클러스터 런 리스트(Data Cluster Run List)" 오프셋들은 64의 이상의 오프셋들일 수 있다.
단계(1320)에서, 분석부(440)는 대상 데이터 클러스터 후보에 대한 분석을 수행함으로써 대상 데이터 클러스터 후보의 속성 값을 획득할 수 있다.
대상 데이터 클러스터 후보의 속성 값은 대상 데이터 클러스터 후보의 현재 물리적 섹터 오프셋 "DefinedDCCurrentPhysicalSectorOffset"을 포함할 수 있다.
단계(1320)는 단계(1321)를 포함할 수 있다.
단계(1321)에서, 분석부(440)는 대상 데이터 클러스터 후보의 현재 물리적 섹터 오프셋 "DefinedDCCurrentPhysicalSectorOffset"을 획득할 수 있다. 전술된 획득은 디렉토리의 MFT 엔트리에 "$인덱스_할당(Index_Allocation)"이 존재하는 경우에 적용될 수 있다.
단계(1330)에서, 분석부(430)는 대상 MFT 엔트리 후보의 속성 값 및 대상 데이터 클러스터 후보의 속성 값을 사용하여 부트 레코드의 위치를 계산할 수 있다.
우선, 분석부(430)는 대상 MFT 엔트리 후보의 디렉토리 인덱스 크기 "DefinedMETotalBytes" 및 대상 MFT 엔트리 후보의 클러스터 개수 "DefinedMeTotalCluster"를 사용하여 가상 파티션의 클러스터 당 바이트 크기 "MEBytesPerCluster"를 계산할 수 있다.
분석부(430)는 아래의 수식 3에 기반하여 가상 파티션의 클러스터 당 바이트 개수 "MEBytesPerCluster"를 계산할 수 있다.
[수식 3]
MEBytesPerCluster = DefinedMETotalBytes / DefinedMETotalCluster
다음으로, 분석부(430)는 대상 데이터 클러스터 후보의 현재 물리적 섹터 오프셋 "DefinedDCCurrentPhysicalSectorOffset", 대상 MFT 엔트리 후보의 디렉토리 인덱스 시작 위치 클러스터 오프셋 "MEStartClusterOffset" 및 가상 파티션의 클러스터 당 바이트 크기 "MEBytesPerCluster"에 기반하여 가상 파티션의 부트 레코드의 물리적 섹터 오프셋 "MEBROffset"을 계산할 수 있다.
분석부(430)는 아래의 수식 4에 기반하여 가상 파티션의 부트 레코드의 물리적 섹터 오프셋 "MEBROffset"을 계산할 수 있다.
[수식 4]
MEBROffset = DefinedDCCurrentPhysicalSectorOffset - (MEStartClusterOffset * MEBytesPerCluster / 512 bytes)
분석부(430)는 계산의 결과가 물리적 섹터를 나타내게 하기 위해 대상 데이터 클러스터 후보의 현재 물리적 섹터 오프셋 "DefinedDCCurrentPhysicalSectorOffset"을 512 바이트로 나눌 수 있다. 또한, 디스크가 확장된 디스크를 지원할 경우, 섹터의 기본 섹터 단위가 512 바이트의 배수가 될 수 있다. 기본 섹터 단위가 512 바이트가 아닌 경우, 분석부(430)는 수식 3 및 수식 4의 계산을 수행함에 있어서 기본 섹터 단위를 고려할 수 있다.
단계(1340)에서, 분석부(430)는 계산된 부트 레코드의 위치를 출력할 수 있다.
도 12 및 도 13을 참조하여 설명된 부트 레코드의 위치를 계산하기 위해 사용된 값들은, 아래에서 설명될 가상 파티션의 속성 값을 결정하거나 가상 파티션의 생성하기 위해 사용될 수 있다.
도 14는 일 예에 따른 가상 파티션 후보 정보를 생성하는 방법의 흐름도이다.
도 7을 참조하여 전술된 단계(750)에서 생성되는 가상 파티션은 하나 이상일 수 있다. 적어도 하나의 가상 파티션의 각 가상 파티션에 대해서, 가상 파티션의 생성을 위해 가상 파티션의 속성 값이 사용될 수 있다.
가상 파티션의 속성 값은 가상 파티션의 부트 레코드의 위치, 가상 파티션의 볼륨 크기, 가상 파티션의 클러스터 크기 및 가상 파티션의 MFT 엔트리 크기를 포함할 수 있다.
적어도 하나의 가상 파티션을 생성하기 위해 적어도 하나의 가상 파티션 후보 정보가 사용될 수 있다. 가상 파티션 후보 정보는 가상 파티션을 생성하기 위해 요구되는 정보를 포함할 수 있다. 예를 들면, 가상 파티션 후보 정보는 가상 파티션의 속성 값을 포함할 수 있다. 계산된 속성 값을 보관하기 위해 가상 파티션 후보 정보가 저장될 수 있다.
단계(1410)에서, 적어도 하나의 가상 파티션의 각 가상 파티션에 대해, 생성부(440)는 각 가상 파티션에 대한 MFT 엔트리 리스트를 생성할 수 있다.
가상 파티션에 대한 MFT 엔트리 리스트는 적어도 하나의 MFT 엔트리-데이터 클러스터 쌍 후보의 적어도 하나의 MFT 엔트리 중 가상 파티션에 속하는 MFT 엔트리의 리스트일 수 있다. 말하자면, 단계(1410)에서, 생성부(440)는 적어도 하나의 MFT 엔트리-데이터 클러스터 쌍 후보의 각 MFT 엔트리에 대해, 각 MFT 엔트리가 적어도 하나의 가상 파티션 중 어떤 가상 파티션에 속하는가를 결정할 수 있다.
단계(1420)에서, 생성부(440)는 적어도 하나의 가상 파티션의 각 가상 파티션에 대하여, 각 가상 파티션에 대한 MFT 엔트리 리스트를 사용하여 각 가상 파티션의 속성 값을 계산할 수 있다.
가상 파티션의 속성 값은 도 11a 내지 도 13을 참조하여 전술된 방법에 의해 계산될 수 있다. 또한, 생성부(440)는 도 11a 내지 도 13을 참조하여 전술된 단계(들)에서 생성된 가상 파티션의 속성 값을 사용할 수 있다. 중복되는 설명은 생략한다.
단계(1420)은 단계(1425)를 포함할 수 있다.
단계(1425)에서, 생성부(440)는 적어도 하나의 가상 파티션의 각 가상 파티션에 대하여, 각 가상 파티션에 대한 MFT 엔트리 리스트를 사용하여 각 가상 파티션의 볼륨 크기를 계산할 수 있다.
생성부(440)는 가상 파티션에 대한 MFT 엔트리 리스트의 적어도 하나의 MFT 엔트리에 대하여 계산된 적어도 하나의 LCN 주소 중 가장 큰 값의 LCN 주소를 사용하여 가상 파티션의 볼륨 크기를 계산할 수 있다.
일 예에 따른 가상 파티션의 볼륨 크기를 계산하는 방법이 아래에서 도 15를 참조하여 설명된다.
단계(1430)에서, 생성부(440)는 적어도 하나의 가상 파티션에 대한 적어도 하나의 가상 파티션 후보 정보를 저장할 수 있다. 또는, 생성부(440)는 적어도 하나의 가상 파티션의 속성 값을 저장할 수 있다.
도 15는 일 예에 따른 가상 파티션의 볼륨 크기를 계산하는 방법을 설명한다.
도 14를 참조하여 전술된 단계(1425)는 아래의 단계들(1510, 1520, 1530, 1540, 1550, 1560, 1570, 1580 및 1590) 중 적어도 하나를 포함할 수 있다.
단계(1510)에서, 생성부(440)는 가상 파티션에 대한 MFT 엔트리 리스트를 정렬할 수 있다. 생성부(440)는 MFT 엔트리 리스트의 적어도 하나의 MFT 엔트리에 대한 정렬을 수행할 수 있다. 생성부(440)는 적어도 하나의 MFT 엔트리의 MFT 식별자(Identifier)를 기준으로 MFT 엔트리 리스트를 정렬할 수 있다.
단계(1520)에서, 생성부(440)는 정렬된 리스트에서 첫 번째의 MFT 엔트리를 대상 MFT 엔트리로 선택할 수 있다.
단계(1530)에서, 생성부(440)는 대상 MFT 엔트리의 "$데이터($Data)" 속성에 대한 파싱을 수행할 수 있다.
파싱이 수행된 후, 단계(1540)에서, 생성부(440)는 대상 MFT 엔트리의 "$데이터($Data)" 속성의 "비-상주(non-resident)" 속성의 헤더에 대한 분석을 수행할 수 있다.
생성부(440)는 대상 MFT 엔트리의 "$데이터($Data)" 속성의 "비-상주(non-resident)" 속성의 헤더의 기정의된 오프셋에 대한 분석을 통해 대상 MFT 엔트리의 시작 위치 클러스터 오프셋 "MEStartClusterOffset" 및 대상 MFT 엔트리의 클러스터 개수 "DefinedMETotalCluster"를 획득할 수 있다. 기정의된 오프셋은 "데이터 클러스터 런 리스트(Data Cluster Run List)" 오프셋들일 수 있다. "데이터 클러스터 런 리스트(Data Cluster Run List)" 오프셋들은 64의 이상의 오프셋들일 수 있다.
분석을 통해, 생성부(440)는 서로 대응하는 시작 위치 클러스터 오프셋 "MEStartClusterOffset" 및 클러스터 개수 "DefinedMETotalCluster"를 적어도 하나 획득할 수 있다.
단계(1540)에서, 생성부(440)는 대상 MFT 엔트리의 클러스터 오프셋 최대 값을 계산할 수 있다.
생성부(440)는 서로 대응하는 시작 위치 클러스터 오프셋 "MEStartClusterOffset" 및 클러스터 개수 "DefinedMETotalCluster"의 합을 계산할 수 있다. 생성부(440)는 서로 대응하는 시작 위치 클러스터 오프셋 "MEStartClusterOffset" 및 클러스터 개수 "DefinedMETotalCluster"의 합들 중 최대 값을 대상 MFT 엔트리의 클러스터 오프셋 최대 값으로 설정할 수 있다.
또는, 생성부(440)는 "데이터 클러스터 런 리스트(Data Cluster Run List)"가 나타내는 적어도 하나의 시작 위치 클러스터 오프셋 "MEStartClusterOffset" 중 최대의 시작 위치 클러스터 오프셋을 선택할 수 있고, 최대의 시작 위치 클러스터 오프셋 및 상기의 최대의 시작 위치 클러스터 오프셋에 대응하는 클러스터 개수 "DefinedMETotalCluster"의 합을 대상 MFT 엔트리의 클러스터 오프셋 최대 값으로 설정할 수 있다.
단계(1550)에서, 생성부(440)는 대상 MFT 엔트리의 클러스터 오프셋 최대 값 및 현재 기록된 가상 파티션의 클러스터 오프셋 최대 값을 비교할 수 있다.
대상 MFT 엔트리의 클러스터 오프셋 최대 값이 현재 기록된 가상 파티션의 클러스터 오프셋 최대 값보다 더 큰 경우, 단계(1560)가 수행될 수 있다. 대상 MFT 엔트리의 클러스터 오프셋 최대 값이 현재 기록된 가상 파티션의 클러스터 오프셋 최대 값의 이하인 경우, 단계(1570)가 수행될 수 있다.
단계(1560)에서, 생성부(440)는 대상 MFT 엔트리의 클러스터 오프셋 최대 값을 가상 파티션의 클러스터 오프셋 최대 값으로 설정할 수 있다. 말하자면, 생성부(440)는 대상 MFT 엔트리의 클러스터 오프셋 최대 값을 가상 파티션의 클러스터 오프셋 최대 값으로 설정으로 기록할 수 있다.
단계들(1550) 및 단계(1560)을 통해, 생성부(440)는 대상 MFT 엔트리의 클러스터 오프셋 최대 값 및 가상 파티션의 기존의 클러스터 오프셋 최대 값 중 더 큰 값을 가상 파티션의 새로운 클러스터 오프셋 최대 값으로 저장할 수 있다.
단계(1570)에서, 생성부(440)는 정렬된 적어도 하나의 MFT 엔트리에 아직 선택되지 않은 MFT 엔트리가 남아 있는지 여부를 판단할 수 있다. 정렬된 적어도 하나의 MFT 엔트리에 아직 선택되지 않은 MFT 엔트리가 남아 있지 않은 경우 단계(1590)가 수행될 수 있다. 정렬된 적어도 하나의 MFT 엔트리에 아직 선택되지 않은 MFT 엔트리가 남아 있는 경우 단계(1580)가 수행될 수 있다.
단계(1580)에서, 생성부(440)는 정렬된 적어도 하나의 MFT 엔트리 중 대상 MFT 엔트리의 다음의 MFT 엔트리를 새로운 대상 MFT 엔트리로서 선택할 수 있다.
단계(1580)의 이후, 단계(1530)가 반복될 수 있다.
단계(1590)에서, 생성부(440)는 가상 파티션의 클러스터 오프셋 최대 값 및 가상 파티션의 부트 레코드의 위치를 사용하여 가상 파티션의 볼륨 크기를 계산할 수 있다.
예를 들면, 가상 파티션의 볼륨 크기는 가상 파티션의 클러스터 오프셋 최대 값 및 가상 파티션의 부트 레코드의 위치가 나타내는 가상 파티션의 마지막 위치 또는 마지막의 섹터에 대응할 수 있다.
예를 들면, 볼륨 크기가 파티션의 최소 크기보다 더 작은 경우 부트 레코드로부터 디스크의 마지막 섹터까지의 크기가 볼륨 크기로서 계산될 수 있다.
도 16은 일 예에 따른 가상 파티션을 생성하는 방법의 흐름도이다.
도 7을 참조하여 전술된 단계(750)는 아래의 단계들(1610, 1620, 1630, 1640 및 1650)을 포함할 수 있다.
단계(1610)에서, 생성부(440)는 적어도 하나의 가상 파티션 후보 정보 중 첫 번째의 가상 파티션 후보 정보를 대상 가상 파티션 후보 정보로서 선택할 수 있다.
단계(1620)에서, 생성부(440)는 대상 가상 파티션 후보 정보를 사용하여 대상 가상 파티션 후보 정보에 대응하는 가상 파티션의 볼륨 구조를 생성할 수 있다.
단계(1630)에서, 생성부(440)는 가상 파티션에 대한 MFT 엔트리 리스트를 사용하여 가상 파티션의 트리 구조를 생성할 수 있다. 생성부(440)는 적어도 하나의 MFT 엔트리 후보 중 가상 파티션에 속하는 MFT 엔트리 후보를 사용하여 가상 파티션의 파일을 복원할 수 있다.
단계(1640)에서, 생성부(440)는 적어도 하나의 가상 파티션 후보 정보 중 아직 선택되지 가상 파티션 후보 정보가 남아 있는지 여부를 판단할 수 있다. 아직 선택되지 가상 파티션 후보 정보가 남아 있지 않은 경우 절차가 종료할 수 있다. 아직 선택되지 가상 파티션 후보 정보가 남아 있는 경우 단계(1650)가 수행될 수 있다.
단계(1650)에서, 생성부(440)는 적어도 하나의 가상 파티션 후보 정보 중 대상 가상 파티션 후보 정보의 다음의 가상 파티션 후보 정보를 새로운 대상 가상 파티션 후보 정보로서 선택할 수 있다. 이후, 단계(1620)가 반복될 수 있다.
도 17a 및 도 17b는 일 예에 따른 기정의된 MFT 엔트리 및 기정의된 MFT 엔트리의 데이터를 도시한다.
기정의된 MFT 엔트리는 MFT 엔트리 후보를 나타낼 수 있고, 기정의된 MFT 엔트리의 데이터는 데이터 클러스터 후보를 나타낼 수 있다.
도 17a는 일 예에 따른 기정의된 MFT 엔트리를 도시한다.
일 예에 따르면, 기정의된 MFT 엔트리는 도시된 $UpCase 메타데이터 파일일 수 있다.
도 17a에서는, $UpCase 메타데이터 파일의 MFT 엔트리 중 1 섹터가 도시되었다.
$UpCase 메타데이터 파일의 NTFS의 MFT 식별자는 10 번일 수 있다. 도 17a에서, 44 내지 47의 오프셋들이 NTFS의 MFT 식별자를 나타내며, 44 내지 47의 오프셋들의 값인 "0A 00 00 00"은 값 10을 나타낸다.
도시된 $UpCase 메타데이터 파일의 실제 크기(real size)는 131,072 바이트일 수 있다. 여기에서, 실제 크기는 논리적 크기일 수 있다.
도 17b는 일 예에 따른 기정의된 MFT 엔트리의 데이터를 도시한다.
도 17b에서는, $UpCase 메타데이터 파일의 데이터 클러스터 중 1 섹터가 도시되었다.
도 17a 및 도 17b에서의 $UpCase 메타데이터 파일은 단지 기정의된 MFT 엔트리의 일 예일 뿐이다. 수집부(420)가 기정의된 시그니처 등을 통해, 동일한 파티션 내의 대응하는 MFT 엔트리 및 데이터 클러스터를 식별한다면, 수집부(420)는 대응하는 MFT 엔트리 및 데이터 클러스터를 기정의된 MFT 엔트리 및 기정의된 데이터 클러스터로 사용할 수 있다. 말하자면, 대응하는 MFT 엔트리 및 데이터 클러스터는 MFT 엔트리 후보 및 데이터 클러스터 후보로서 사용될 수 있다.
도 18은 일 예에 따른 NTFS 부트 레코드를 나타낸다.
도 18에서는, 부트 레코드의 오프셋에 대한 이름 및 설명이 도시되었다.
도 19는 일 예에 따른 MFT 엔트리 헤더 구조를 나타낸다.
도 19에서는, MFT 엔트리 헤더의 오프셋에 대한 이름 및 설명이 도시되었다.
도 20a 내지 도 20c는 일 예에 따른 MFT 엔트리 속성 헤더 구조를 도시한다.
도 20a는 일 예에 따른 MFT 엔트리 속성 헤더 구조 중 일부를 도시한다.
도 20a에서는, MFT 엔트리 속성 헤더의 오프셋에 대한 이름 및 설명이 도시되었다.
도 20b는 일 예에 따른 MFT 엔트리 속성 헤더 구조 중 상주 속성을 도시한다.
상주 속성은 비-상주 플래그의 값이 "00"일 때 사용될 수 있다.
도 20c는 일 예에 따른 MFT 엔트리 속성 헤더 구조 중 비-상주 속성을 도시한다.
비-상주 속성은 비-상주 플래그의 값이 "01"일 때 사용될 수 있다.
도 21은 일 예에 따른 MFT 엔트리 리스트의 구조를 도시한다.
도시된 것과 같이, MFT 엔트리 리스트는 시작 MFT 엔트리의 식별자, 시작 MFT 엔트리의 물리 섹터 오프셋 및 MFT 엔트리의 개수를 포함할 수 있다. 연속된 MFT 엔트리는 상기의 구조체 한개로 관리될 수 있다. 분산되어(split) 저장된 MFT에 대해서는 다수의 구조체들이 생성될 수 있고, 다수의 구조체들의 자료 구조로 관리될 수 있다.
상기의 구조체를 통해 MFT 엔트리 리스트가 효율적으로 관리될 수 있다.
도 22는 일 예에 따른 적어도 하나의 MFT 엔트리 후보의 구조를 도시한다.
도시된 것과 같이 MFT 엔트리 후보는 시작 MFT 엔트리의 식별자, MFT 엔트리 후보의 물리 섹터 오프셋 및 MFT 엔트리 후보의 크기를 포함할 수 있다. 각 MFT Entry 후보의 개수만큼 상기 구조체가 생성될 수 있다. 생성된 구조체는 자료 구조로서 관리될 수 있다.
상기의 구조체를 통해 적어도 하나의 MFT 엔트리 후보가 효율적으로 관리될 수 있다.
도 23은 일 예에 따른 적어도 하나의 데이터 클러스터 후보의 구조를 도시한다.
도시된 것과 같이 데이터 클러스터 후보는 시작 데이터 클러스터 후보 식별자, 데이터 클러스터 후보의 물리 섹터 오프셋 및 데이터 클러스터 후보의 크기를 포함할 수 있다. 각 데이터 클러스터 후보의 개수만큼 상기 구조체가 생성될 수 있다. 생성된 구조체는 자료 구조로 관리될 수 있다.
상기의 구조체를 통해 적어도 하나의 데이터 클러스터 후보가 효율적으로 관리될 수 있다.
실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 실시예의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상과 같이 실시예들이 비록 한정된 실시예와 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 상기의 기재로부터 다양한 수정 및 변형이 가능하다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.
그러므로, 다른 구현들, 다른 실시예들 및 특허청구범위와 균등한 것들도 후술하는 특허청구범위의 범위에 속한다.
400: 파일 시스템 복구 장치
410: 접근부
420: 수집부
430: 분석부
440: 생성부
450: UI부

Claims (20)

  1. 디스크 또는 증거 이미지에서 적어도 하나의 마스터 파일 테이블(Master File Table; MFT) 엔트리 리스트를 생성하고 적어도 하나의 데이터 클러스터 후보를 수집하는 단계;
    상기 MFT 엔트리 리스트 및 상기 적어도 하나의 데이터 클러스터 후보를 사용하여 적어도 하나의 MFT 엔트리-데이터 클러스터 쌍 후보를 생성하는 단계;
    상기 적어도 하나의 MFT 엔트리-데이터 클러스터 쌍 후보에 대한 분석을 수행함으로써 가상 파티션의 속성 값을 결정하는 단계; 및
    상기 속성 값에 기반하여 상기 가상 파티션을 생성하는 단계
    를 포함하고,
    상기 적어도 하나의 MFT 엔트리-데이터 클러스터 쌍 후보의 각 MFT 엔트리-데이터 클러스터 쌍 후보는 MFT 엔트리 후보 및 상기 적어도 하나의 데이터 클러스터 후보 중 기정의된 조건을 충족시키는 데이터 클러스터 후보의 쌍이고,
    상기 MFT 엔트리 후보는 상기 MFT 엔트리 리스트의 적어도 하나의 MFT 엔트리 중 기정의된 조건을 충족시키는 MFT 엔트리이고,
    상기 적어도 하나의 MFT 엔트리-데이터 클러스터 쌍 후보를 이루는 상기 MFT 엔트리 후보는 기정의된 타입의 MFT 엔트리이고,
    상기 기정의된 타입의 MFT 엔트리는 MFT 엔트리 내에 기록된 논리적 클러스터 번호(Logical Cluster Number; LCN) 주소로부터의 물리적 주소로의 매핑을 가능하게 하는 MFT 엔트리인 파일 시스템 복구 방법.
  2. 제1항에 있어서,
    상기 수집하는 단계는 상기 디스크 또는 상기 증거 이미지의 복수의 분할된 영역들에 대해 복수의 실행 유닛들에 의해 병렬로 각각 수행되는 파일 시스템 복구 방법.
  3. 제2항에 있어서,
    상기 복수의 실행 유닛들의 개수는 상기 디스크 또는 상기 증거 이미지의 크기 및 상기 파일 시스템 복구 방법을 수행하는 파일 시스템 복구 장치의 프로세서의 개수에 기반하여 결정되는 파일 시스템 복구 방법.
  4. 삭제
  5. 삭제
  6. 삭제
  7. 제1항에 있어서,
    상기 기정의된 MFT 엔트리의 MFT 엔트리 헤더는 기정의된 MFT 엔트리 헤더 시그니처를 포함하는 파일 시스템 복구 방법.
  8. 디스크 또는 증거 이미지에서 적어도 하나의 마스터 파일 테이블(Master File Table; MFT) 엔트리 리스트를 생성하고 적어도 하나의 데이터 클러스터 후보를 수집하는 단계;
    상기 MFT 엔트리 리스트 및 상기 적어도 하나의 데이터 클러스터 후보를 사용하여 적어도 하나의 MFT 엔트리-데이터 클러스터 쌍 후보를 생성하는 단계;
    상기 적어도 하나의 MFT 엔트리-데이터 클러스터 쌍 후보에 대한 분석을 수행함으로써 가상 파티션의 속성 값을 결정하는 단계; 및
    상기 속성 값에 기반하여 상기 가상 파티션을 생성하는 단계
    를 포함하고,
    상기 적어도 하나의 MFT 엔트리-데이터 클러스터 쌍 후보의 각 MFT 엔트리-데이터 클러스터 쌍 후보는 MFT 엔트리 후보 및 상기 적어도 하나의 데이터 클러스터 후보 중 기정의된 조건을 충족시키는 데이터 클러스터 후보의 쌍이고,
    상기 MFT 엔트리 후보는 상기 MFT 엔트리 리스트의 적어도 하나의 MFT 엔트리 중 기정의된 조건을 충족시키는 MFT 엔트리이고,
    상기 적어도 하나의 MFT 엔트리-데이터 클러스터 쌍 후보를 이루는 상기 MFT 엔트리 후보는 기정의된 타입의 MFT 엔트리이고,
    상기 수집하는 단계는,
    MFT 최소 생성 단위를 이용하여 상기 디스크 또는 상기 증거 이미지에서 데이터가 독출될 위치를 결정하는 단계;
    상기 위치에서 MFT 엔트리가 검출되면, 상기 검출된 MFT 엔트리를 상기 MFT 엔트리 리스트에 추가하는 단계; 및
    상기 추가된 MFT 엔트리의 이전에, 적어도 하나의 역방향으로 연속된 MFT 엔트리가 검출되면 상기 적어도 하나의 역방향으로 연속된 MFT 엔트리를 상기 MFT 엔트리 리스트에 추가하는 단계
    를 포함하는 파일 시스템 복구 방법.
  9. 제8항에 있어서,
    상기 검출된 MFT 엔트리를 상기 MFT 엔트리 리스트에 추가하는 단계는,
    상기 결정된 위치에서 데이터를 독출하는 단계;
    상기 독출된 데이터 중 기정의된 영역이 기정의된 MFT 엔트리 헤더 시그니처의 값을 가지면 독출된 데이터가 MFT 엔트리인 것으로 판단하는 단계; 및
    상기 독출된 데이터가 상기 MFT 엔트리인 것으로 판단되면, 상기 독출된 데이터를 상기 MFT 엔트리로서 상기 MFT 엔트리 리스트에 추가하는 단계
    를 포함하는 파일 시스템 복구 방법.
  10. 제8항에 있어서,
    상기 추가하는 단계는,
    상기 MFT 최소 생성 단위만큼 상기 위치를 이동시키는 단계
    를 더 포함하는 파일 시스템 복구 방법.
  11. 제8항에 있어서,
    상기 기정의된 조건은 상기 MFT 엔트리 후보 및 상기 데이터 클러스터 후보가 동일한 파티션 내의 데이터인 것인 파일 시스템 복구 방법.
  12. 디스크 또는 증거 이미지에서 적어도 하나의 마스터 파일 테이블(Master File Table; MFT) 엔트리 리스트를 생성하고 적어도 하나의 데이터 클러스터 후보를 수집하는 단계;
    상기 MFT 엔트리 리스트 및 상기 적어도 하나의 데이터 클러스터 후보를 사용하여 적어도 하나의 MFT 엔트리-데이터 클러스터 쌍 후보를 생성하는 단계;
    상기 적어도 하나의 MFT 엔트리-데이터 클러스터 쌍 후보에 대한 분석을 수행함으로써 가상 파티션의 속성 값을 결정하는 단계; 및
    상기 속성 값에 기반하여 상기 가상 파티션을 생성하는 단계
    를 포함하고,
    상기 적어도 하나의 MFT 엔트리-데이터 클러스터 쌍 후보의 각 MFT 엔트리-데이터 클러스터 쌍 후보는 MFT 엔트리 후보 및 상기 적어도 하나의 데이터 클러스터 후보 중 기정의된 조건을 충족시키는 데이터 클러스터 후보의 쌍이고,
    상기 MFT 엔트리 후보는 상기 MFT 엔트리 리스트의 적어도 하나의 MFT 엔트리 중 기정의된 조건을 충족시키는 MFT 엔트리이고,
    상기 적어도 하나의 MFT 엔트리-데이터 클러스터 쌍 후보를 생성하는 단계는,
    상기 MFT 엔트리 리스트의 적어도 하나의 MFT 엔트리 후보 중 대상 MFT 엔트리 후보 및 상기 적어도 하나의 데이터 클러스터 후보 중 대상 데이터 클러스터 후보를 사용하여 부트 레코드의 위치를 계산하는 단계;
    상기 부트 레코드의 위치에 기반하여 상기 대상 MFT 엔트리 후보 및 상기 대상 데이터 클러스터 후보가 동일한 파티션 내의 데이터인지 여부를 판단하는 단계; 및
    상기 대상 MFT 엔트리 후보 및 상기 대상 데이터 클러스터 후보가 동일한 파티션 내의 데이터이면 상기 대상 MFT 엔트리 후보 및 상기 대상 데이터 클러스터 후보의 쌍을 상기 적어도 하나의 MFT 엔트리-데이터 클러스터 쌍 후보에 추가하는 단계
    를 포함하는 파일 시스템 복구 방법.
  13. 제12항에 있어서,
    상기 부트 레코드의 위치는 상기 대상 MFT 엔트리 후보 및 상기 대상 데이터 클러스터 후보 간의 상대적인 위치에 기반하여 계산되는 파일 시스템 복구 방법.
  14. 제12항에 있어서,
    상기 부트 레코드의 위치를 계산하는 단계는,
    상기 대상 MFT 엔트리 후보의 속성 값을 획득하는 단계;
    상기 대상 데이터 클러스터 후보의 속성 값을 획득하는 단계; 및
    상기 대상 MFT 엔트리 후보의 속성 값 및 상기 대상 데이터 클러스터 후보의 속성 값을 사용하여 상기 부트 레코드의 위치를 계산하는 단계
    를 포함하는 파일 시스템 복구 방법.
  15. 제14항에 있어서,
    상기 대상 MFT 엔트리 후보의 속성 값은 MFT 엔트리 파일 크기, MFT 엔트리 파일 시작 위치 클러스터 오프셋 및 MFT 엔트리 파일 클러스터 개수를 포함하고,
    상기 대상 데이터 클러스터 후보의 속성 값은 현재 물리적 섹터 오프셋을 포함하는 파일 시스템 복구 방법.
  16. 제15항에 있어서,
    상기 부트 레코드의 물리적 섹터 오프셋은 상기 현재 물리적 섹터 오프셋, 상기 MFT 엔트리 파일 시작 위치 클러스터 오프셋 및 상기 가상 파티션의 클러스터 당 바이트 개수에 기반하여 계산되고,
    상기 클러스터 당 바이트 개수는 상기 MFT 엔트리 파일 크기 및 상기 MFT 엔트리 파일 클러스터 개수에 기반하여 결정되는 파일 시스템 복구 방법.
  17. 제14항에 있어서,
    상기 적어도 하나의 MFT 엔트리의 속성 값은 디렉토리 인덱스 크기, 디렉토리 인덱스 시작 위치 클러스터 오프셋 및 MFT 엔트리의 디렉토리 인덱스 클러스터 개수를 포함하고,
    상기 적어도 하나의 대상 데이터 클러스터 후보 속성 값은 상기 데이터 클러스터 후보의 물리적 섹터 오프셋을 포함하는 파일 시스템 복구 방법.
  18. 제12항에 있어서,
    상기 가상 파티션의 속성 값은 상기 가상 파티션의 볼륨 크기를 포함하는 파일 시스템 복구 방법.
  19. 제18항에 있어서,
    상기 볼륨 크기는 상기 가상 파티션의 클러스터 오프셋 최대 값 및 상기 가상 파티션의 부트 레코드의 위치를 사용하여 계산되는 파일 시스템 복구 방법.
  20. 디스크 또는 증거 이미지에서 적어도 하나의 마스터 파일 테이블(Master File Table; MFT) 엔트리 리스트를 생성하고, 적어도 하나의 데이터 클러스터 후보를 수집하는 수집부;
    상기 MFT 엔트리 리스트의 및 상기 적어도 하나의 데이터 클러스터 후보를 사용하여 적어도 하나의 MFT 엔트리-데이터 클러스터 쌍 후보를 생성하는 분석부;
    상기 적어도 하나의 MFT 엔트리-데이터 클러스터 쌍 후보에 대한 분석을 수행함으로써 가상 파티션의 속성 값을 결정하고, 상기 속성 값에 기반하여 상기 가상 파티션을 생성하는 생성부
    를 포함하고,
    상기 적어도 하나의 MFT 엔트리-데이터 클러스터 쌍 후보의 각 MFT 엔트리-데이터 클러스터 쌍 후보는 MFT 엔트리 후보 및 상기 적어도 하나의 데이터 클러스터 후보 중 기정의된 조건을 충족시키는 데이터 클러스터 후보의 쌍이고,
    상기 MFT 엔트리 후보는 상기 MFT 엔트리 리스트의 적어도 하나의 MFT 엔트리 중 기정의된 조건을 충족시키는 MFT 엔트리이고,
    상기 적어도 하나의 MFT 엔트리-데이터 클러스터 쌍 후보를 이루는 상기 MFT 엔트리 후보는 기정의된 타입의 MFT 엔트리이고,
    상기 기정의된 타입의 MFT 엔트리는 MFT 엔트리 내에 기록된 논리적 클러스터 번호(Logical Cluster Number; LCN) 주소로부터의 물리적 주소로의 매핑을 가능하게 하는 MFT 엔트리인 파일 시스템 복구 장치.
    .
KR1020150160868A 2015-11-17 2015-11-17 메타데이터 및 데이터 클러스터를 이용하는 파일 시스템 복구 방법 및 장치 KR101688629B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020150160868A KR101688629B1 (ko) 2015-11-17 2015-11-17 메타데이터 및 데이터 클러스터를 이용하는 파일 시스템 복구 방법 및 장치
US15/224,853 US10884873B2 (en) 2015-11-17 2016-08-01 Method and apparatus for recovery of file system using metadata and data cluster

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020150160868A KR101688629B1 (ko) 2015-11-17 2015-11-17 메타데이터 및 데이터 클러스터를 이용하는 파일 시스템 복구 방법 및 장치

Publications (1)

Publication Number Publication Date
KR101688629B1 true KR101688629B1 (ko) 2016-12-21

Family

ID=57734636

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150160868A KR101688629B1 (ko) 2015-11-17 2015-11-17 메타데이터 및 데이터 클러스터를 이용하는 파일 시스템 복구 방법 및 장치

Country Status (2)

Country Link
US (1) US10884873B2 (ko)
KR (1) KR101688629B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200071377A (ko) * 2018-12-11 2020-06-19 주식회사 코튼캔디 네트워크 관리 방법 및 장치

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10394874B2 (en) * 2017-07-28 2019-08-27 Microsoft Technology Licensing, Llc Syntactic profiling of alphanumeric strings
US10884644B2 (en) * 2018-06-28 2021-01-05 Amazon Technologies, Inc. Dynamic distributed data clustering

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20030075738A (ko) * 2002-03-20 2003-09-26 주식회사 라이브데이터 윈도우즈 운영체계를 적용한 컴퓨터에서의 데이터 복구방법
KR20140026821A (ko) * 2012-08-23 2014-03-06 한국전자통신연구원 백업부트레코드 정보를 이용한 파티션 복구 장치 및 방법

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6185575B1 (en) * 1996-09-19 2001-02-06 Powerquest Corporation In-place disk partition canonization and storage optimization
WO1999057641A1 (en) * 1998-05-01 1999-11-11 Powerquest Corporation Manipulation of virtual and live computer storage device partitions
US6377958B1 (en) * 1998-07-15 2002-04-23 Powerquest Corporation File system conversion
US7523343B2 (en) * 2004-04-30 2009-04-21 Microsoft Corporation Real-time file system repairs
US7873782B2 (en) * 2004-11-05 2011-01-18 Data Robotics, Inc. Filesystem-aware block storage system, apparatus, and method
KR101393034B1 (ko) 2007-06-07 2014-05-13 삼성전자주식회사 시스템 복원 장치 및 방법
US8635429B1 (en) * 2007-06-29 2014-01-21 Symantec Corporation Method and apparatus for mapping virtual drives
US9483469B1 (en) * 2008-03-31 2016-11-01 Veritas Technologies Llc Techniques for optimizing disk access
KR101078289B1 (ko) 2009-08-25 2011-10-31 한국전자통신연구원 파티션 복구 방법 및 장치
KR20110094468A (ko) 2010-02-16 2011-08-24 삼성전자주식회사 저장 매체의 마스터 부트 레코드 복구 방법, 저장 매체 구동 장치, 및 저장 매체
KR20120027880A (ko) 2010-09-13 2012-03-22 삼성전자주식회사 시스템을 복원하는 방법 및 시스템 복원 기능을 갖는 컴퓨팅 장치
US8458413B2 (en) * 2010-10-27 2013-06-04 International Business Machines Corporation Supporting virtual input/output (I/O) server (VIOS) active memory sharing in a cluster environment
US8392378B2 (en) * 2010-12-09 2013-03-05 International Business Machines Corporation Efficient backup and restore of virtual input/output server (VIOS) cluster
US8909894B1 (en) * 2011-03-16 2014-12-09 Tintri Inc. Automatically aligning virtual blocks to physical blocks
US9268590B2 (en) * 2012-02-29 2016-02-23 Vmware, Inc. Provisioning a cluster of distributed computing platform based on placement strategy
US9104339B1 (en) * 2012-04-27 2015-08-11 Symantec Corporation Support track aligned partitions inside virtual machines
US9754303B1 (en) * 2013-10-03 2017-09-05 Ca, Inc. Service offering templates for user interface customization in CITS delivery containers
KR101593184B1 (ko) 2014-09-16 2016-02-15 한국전자통신연구원 파일시스템 메타데이터 기반 파티션 복구 방법 및 장치

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20030075738A (ko) * 2002-03-20 2003-09-26 주식회사 라이브데이터 윈도우즈 운영체계를 적용한 컴퓨터에서의 데이터 복구방법
KR20140026821A (ko) * 2012-08-23 2014-03-06 한국전자통신연구원 백업부트레코드 정보를 이용한 파티션 복구 장치 및 방법

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200071377A (ko) * 2018-12-11 2020-06-19 주식회사 코튼캔디 네트워크 관리 방법 및 장치
KR102130330B1 (ko) * 2018-12-11 2020-08-05 주식회사 코튼캔디 네트워크 관리 방법 및 장치

Also Published As

Publication number Publication date
US10884873B2 (en) 2021-01-05
US20170139783A1 (en) 2017-05-18

Similar Documents

Publication Publication Date Title
KR101403305B1 (ko) 백업부트레코드 정보를 이용한 파티션 복구 장치 및 방법
US8396839B1 (en) Representing de-duplicated file data
CN109522290B (zh) 一种HBase数据块恢复及数据记录提取方法
US9594674B1 (en) Method and system for garbage collection of data storage systems using live segment records
US9223679B1 (en) Lightweight, non-intrusive, and flexible apparatus to obtain system and process state
JP6598996B2 (ja) データ準備のためのシグニチャベースのキャッシュ最適化
KR101593184B1 (ko) 파일시스템 메타데이터 기반 파티션 복구 방법 및 장치
CN111125298A (zh) 重建ntfs文件目录树的方法、设备及存储介质
CN109783457B (zh) Cgi接口管理方法、装置、计算机设备和存储介质
KR101688629B1 (ko) 메타데이터 및 데이터 클러스터를 이용하는 파일 시스템 복구 방법 및 장치
CN111104377B (zh) 文件管理的方法、电子设备和计算机可读存储介质
US20100185589A1 (en) Disaster recovery data sync
CN114625696A (zh) 文件恢复方法、装置、电子设备及存储介质
CN107590233B (zh) 一种文件管理方法及装置
US10262000B1 (en) Global distributed file append using log-structured file system
US11645161B2 (en) Catalog of files associated with snapshots
JPH0358249A (ja) フアイルのアクセス方法
Nguyen et al. An efficient similar image search framework for large-scale data on cloud
Atwal et al. Shining a light on Spotlight: Leveraging Apple's desktop search utility to recover deleted file metadata on macOS
CN113986838B (zh) 基于文件系统的海量小文件处理方法、系统及存储介质
US10235373B2 (en) Hash-based file system
KR101583283B1 (ko) Db2 데이터베이스에서 데이터를 복원하는 방법 및 장치
CN109697197B (zh) 一种雕复Access数据库文件的方法
Park et al. Data investigation based on XFS file system metadata
KR20120042020A (ko) 데이터 백업 장치 및 방법

Legal Events

Date Code Title Description
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20190925

Year of fee payment: 4