[블록]
Ext 파일시스템의 블록은 NTFS와 FAT 파일시스템의 클러스터와 아주 유사한 개념으로, 보통 1024, 2048, 4096 byte의 크기를 가진다. 모든 블록에는 주소가 주어지며, 모든 블록들은 블록 그룹에 속해야만 한다.
* 참고 : 예약 영역(부트 섹터와 부트코드가 있는 영역)의 블록들 블록 그룹에 속하지 않는다.
어떤 그룹에 속한 블록인지를 결정 하기 위해서는 아래와 같은 계산을 수행해야 한다.
- 그룹 = (해당 블록 - 첫번째 데이터 블록) / 그룹 별 블록 수
* 참고 : 그룹 별 블록 수는 슈퍼블록에 정의되어 있다.
[할당 상태]
블록의 할당 상태는 각 블록 그룹에 존재하는 블록 비트맵에 의해서 결정 된다.
블록 비트맵의 위치는 그룹 기술자 테이블에 정의되어 있다.
블록 비트맵의 내용은 비트로 구성되어 있는데 이 비트는 각 블록과 맵핑 관계이다. 어떠한 특정 비트가 어떠한 블록과 맵핑 관계에 있는지 확인하려면
블록 비트맵이 포함되어 있는 블록 그룹의 시작에서 확인하고자 하는 블록의 상대적 주소를 계산해야 한다. 상대적 주소를 계산하려면 블록 그룹의 첫 번째 블록을 확인해야 하는데 확인하는 방법은 아래 계산을 수행하면 된다.
- 첫 번째 블록 = 블록 그룹 * 그룹 별 블록 수 + 첫 번째 데이터 블록
* 참고 : 기본적으로 그룹 별 블록 수는 32768개 이다.
Ext 파일시스템은 관리목적으로 파일시스템에 할당 된 많은 블록들이 있는데 이 블록들 때문에 NTFS 처럼 파일에 모든 블록을 할당하지 않는다. 관리목적으로 파일시스템에 할당 된 블록들은 아래와 같은 것들이 있다.
- 슈퍼 블록
- 그룹 기술자 테이블
- 블록과 inode의 비트맵 블록
- inode 테이블
[할당 알고리즘]
Ext 파일시스템의 할당 알고리즘은 OS에 따라 달라 질 수 있다. 리눅스의 경우 블록을 블록 그룹에 기초해서 할당 하며, inode를 블록에 할당하려고 할 때 '첫 번째 적용' 정책을 사용한다. 또 inode와 동일한 그룹 내의 블록을 할당한다.
이는 하드디스크의 헤드가 불필요한 동작을 하지 않게끔 하기 위해서이다. 또 리눅스는 파일의 크기가 일정 크기보다 크면 '다음 적용' 정책을 사용하여 현재 파일의 다음 블록부터 할당 할 블록을 찾는다.
* 참고 : 리눅스는 블록에 데이터를 저장 할 때 사용되지 않는 공간은 0으로 덮어 씌운다.
[분석 시 주의 사항]
Ext 파일시스템의 경우 블록 그룹의 순서에 따라 데이터가 덮어 씌어지는 시간이 다르다. NTFS와 FAT의 경우 클러스터에 데이터가 덮어 씌어지는 기회가 동일한 반면, Ext 파일시스템은 그렇지 않다. 또 Ext 파일시스템은 블록 그룹을 기초로 하기 때문에 키워드 검색 시 파일시스템 전체가 아닌 블록 그룹 단위로 키워드 검색을 할 수 있다.
'[+] Forensic' 카테고리의 다른 글
File System - Ext (5) (0) | 2012.02.22 |
---|---|
File System - Ext (4) (0) | 2012.02.21 |
File System - Ext (2) (0) | 2012.02.20 |
File System - Ext (1) (0) | 2012.02.20 |