ntfswalker http://dmitrybrant.com/ntfswalker
ntfs파일생성시간 http://www.digital-detective.net/digital-forensic-software/free-tools/
NTFS참고 http://www.cse.scu.edu/~tschwarz/coen252_07Fall/Lectures/NTFS.html
MBR
운영체제에서 OS의 위치 정보 가리킴
CHS
물리적인 주소 지정방식 (실린더, 헤드, 섹터 구조에 기반)
현재는 이용되지 않는다. (용량 제한의 문제 발생)
LBA
하드디스크의 구조정보를 이용하지 않고 단순히 0부터 시작한다. 모든 섹터를 논리적인 번호로 0부터 나열한 것이다. CHS 한계점 때문에 사용되며 현재 사용되는 방식.
[LBA주소찾기] : 1C0 / 06-09
ex) 00 08 00 00
=> 0x 00 00 08 00
= 2048
[시작 MFT값 찾기] : 030 / 00-07
ex) 00 00 0C 00 00 00 00 00
=>0x 0C 00 00 = 78643
MTF 시작 주소($MFT 위치) = MTF클러스터 시작값 + 클러스터크기 + VBR |
= 786432*8+2048
= 6293504
[NTFS Walker] : 파일 정보 위치 찾기
복구 할 목록 확인
MFT #NUM 위치 = 시작 MFT값 + (#NUM * 2) |
ex) MFT #39
= 6293504 + (39*2)
= 6293582
[RunList & 파일크기]
1. 파일 이름 값 뒤 80확인
2. 80번 아래 4번째 값이 런리스트 오프셋
파일의 위치 = 리얼데이터 위치 값 * 클러스터크기 + VBR값(LBA주소) |
= 0x BFB65 * 8 + 2048
= 785253 * 8 + 2048
= 6284072
파일의 크기 = RunListOffset 왼쪽 8Byte |
= 0x 00 00 00 00 00 03 E9 08
= 0x 3E908
[MFT 속성 타입 ID]
속성식별값 |
속성이름 |
설 명 | |
1000 |
0x10 |
$Standard information |
파일의 생성/접근/수정 시간, 소유자 등의 일반적인 정보 |
2000 |
0x20 |
$Attribute List |
추가적인 속성들의 목록 |
3000 |
0x30 |
$File Name |
속성값(파일이름(유니코드), 파일의 생성/접근/수정시간) |
4000 |
0x40 |
$Volume Virsion |
볼륨 정보(Windows NT 1.2버전에만 존재) |
5000 |
0x50 |
$Security |
파일 접근/제어, 보안 속성 |
6000 |
0x60 |
$Volume Name |
볼륨 이름 |
7000 |
0x70 |
$Volume Information |
파일시스템 버전, 그 외 플래그들 저장 |
8000 |
0x80 |
$DATA |
파일의 내용(데이터위치값, 실제 사용되고 있는 데이터 크기) //복구에 가장 중요한 속성값 |
9000 |
0x90 |
$Index Root |
인덱스트리의 루트 노드값 저장 |
A000 |
0xa0 |
$Index Allocation |
인덱스트리의 루트와 연결된 노드 |
B000 |
0xb0 |
$Bitmap |
MFT와 인덱스의 할당정보( 파일 개수 알 수 있음) |
C000 |
0xc0 |
$Symbolic Link $Reparse Point |
심볼릭 링크 정보(Windows2000+) 심볼릭링크에서 사용하는 reparse point정보( " ) |
D000 |
0xd0 |
$EA Information |
OS/2 응용프로그램과 호환성읠 위해 사용(HPFS) |
[파일복구순서]
1 |
파일이름 뒤 0x0080 찾음 |
80 = 속성타입ID 데이터 구간 |
2 |
80 밑으로 4번째 줄 확인 ex) 22 or 31 or 21 |
Offset RunList (클러스트할당량|데이터위치) |
3 |
번호에 따라 ex) 3 | 1 : 오른쪽 1byte 이동 후 3byte |
데이터 위치 값 찾음 |
4 |
번호 왼쪽 8byte |
데이터 크기 |
5 |
파일 위치 이동 후 파일크기 만큼 복사 후 복구! |
생성시간 (0B0 / 08-0F)
파일이름 (0F0 / 02-0F) //80전까지(이름 길이에 따라 다름)
런리스트 : 파일이름 끝 80에서 아래로 4번째
파일크기 : 런리스트 왼쪽 8Byte
파일위치 : ex)31 -> 1byte 건너 (3byte*클러스터크기)+VBR
------------------------------
참고] ntfs.xlsx