본문 바로가기

파일시스템

파이썬으로 파일시스템 깊이 있게 분석하기 -2- - 파이썬으로 파일시스템 깊이 있게 분석하기 -1-(http://maj3sty.tistory.com/1115) 이전 글에서는 이미지(Raw 포맷)에 접근하여 볼륨 정보 등을 얻어내는 작업을 해보았다. 이번에는 실제 파이썬 스크립트가 실행되는 로컬 환경 볼륨에 접근하는 방법을 살펴보자. 이미지 파일은 파일이기 때문에 파일 오픈 핸들을 pytsk3 모듈에 입력해 주면 됐지만 로컬 환경은 장치 핸들을 pytsk3 모듈에 입력을 해주어야 한다. 장치와 파일의 차이는 크지만, 코드는 이전 코드와 많이 다르지 않다. 아래 코드는 글쓴이의 가상환경에서 작성한 파이썬 스크립트와 실행 결과이다. 이번에는 NTFS 파일시스템 2개 존재하는 것을 확인할 수 있다. 로컬 환경과 이미지 파일은 접근하는 대상만 다를 뿐 다루는 .. 더보기
File System - ReFS (2) 계속해서 ReFS를 알아보자. 이번 글에서는 ReFS의 주요 설계 개념과 특징에 대해서 알아 볼 것이다. [코드 재사용] ReFS는 NTFS에서 사용하던 파일시스템 API등을 그대로 다시 재사용 하여 NTFS와의 호환성을 유지하였는데, 코드 재사용에서 해당 코드들을 사용하는 엔진은 이번에 새롭게 개발 된 엔진으로 ReFS의 주요 혁신 기술들이 포함되어 있어 ReFS에서 지원하는 주요 혁신 기술과 NTFS와의 호환성 두가지 모두를 해결 하였다. [확장이 용이하고 신뢰성 있는 온디스크 엔진] ReFS는 온디스크 엔진 위에서 디렉토리나 파일등을 구현하는데 저장소 엔진은 구현에 B+tree 알고리즘을 사용한다. B+tree는 다른 tree 알고리즘에 포함될 수도 있어 확장성이 용이하고 단일 구조에서는 시스템이 .. 더보기
File System - ReFS (1) 이번 글부터는 windows 8에서 사용될 ReFS(Resilient File System)에 대해서 알아 볼 것이다.(NTFS도 그렇지만 MS의 경우 정확한 파일시스템의 명세를 내놓지 않는다. 그렇기에 정확한 오프셋 구조 분석등은 하지 않고 해당 파일시스템의 정보등을 알아 볼 것이다.) 사실 MS사에서 개발한 NTFS와 이번에 새롭게 개발 된 ReFS 사이에는 Protogon(windows 8 개발자 프리뷰 버전) 이라는 파일시스템이 있었다. 하지만 금방 ReFS로 대체되어 잘 알려지지 않았다. 사라진건 알아볼 필요가 없으니 앞으로 사용 될 ReFS에 대해서 알아 볼 것이다. ReFS는 NTFS를 기반으로 하고 있어 NTFS와의 호환성을 가지고 있다. 이런 ReFS는 현재 Windows server 8.. 더보기
File System - Ext4 (1) 이번 글 부터는 Ext4 파일시스템에 대하여 알아 볼 것이다. Ext4 파일시스템은 Ext3 파일시스템의 개선버전으로 현재 대부분 리눅스에서 사용중이며 포렌식 분석 도구들도 해당 파일시스템 분석을 지원하고 있다. 많은 부분이 앞서 설명하였던 Ext 파일시스템과 동일하여 따로 파일시스템의 참조모델별로 분류하여 설명하지 않고 달라진 부분과 특징 등에 대해서 다루어 볼 것이다. 일단 Ext4 파일시스템에 특징 부터 알아보자. [Ext4 특징] - 대용량 파일시스템 : Volume 크기는 1EiB, 파일 용량은 16TB까지 지원한다. - Extents : 이전 Ext 파일시스템은 Block mapping을 지원하였는데 Ext4 파일시스템 부터는 Extents 방식을 지원하여 블록 단편화 현상을 줄여준다. - 호.. 더보기
File System - NTFS (6) 이번 글에서는 NTFS 인덱스의 속성에 대해서 알아 볼 것이다. NTFS에서 b-tree를 사용한다고 앞 글에서 언급 했었는데 해당 트리에서는 노드에서 값을 저장하기 위해서 "인덱스 엔트리(Index Entry)" 라는 데이터 구조체를 사용한다. 인덱스 엔트리는 많은 타입들을 가질 수 있고, 모두 표준 헤더 필드를 사용한다. 인덱스 엔트리는 노드의 구성원이며, 비어 있는 인덱스 엔트리는 노드의 마지막을 뜻한다. 인덱스 엔트리의 구조는 단순하다. 헤더와 속성으로 이루어져 있는데 정확한 것은 아래 이미지에서 확인 할 수 있다. [그림 1 - 인덱스 엔트리 구조] 인덱스 엔트리를 구성원으로 가지고 있는 노드들은 MFT 엔트리 속성 두 개에 따라 저장방식이 달라진다. 만약 속성이 $INDEX_ROOT 속성이라면.. 더보기