카테고리 없음

FAT32 직접 분석하기

코딩하는꽃개 2023. 5. 3. 22:36
반응형


FAT32 구조는 자료가 많으니 생략하고, 직접 원하는 파일을 찾아가 보는 실습을 하겠습니다.



루트 디렉토리에서 클러스터 번호를 찾습니다.
클러스터 번호는 High 클러스터 2바이트와 Low 클러스터 2바이트로 나누어져 있습니다.

21~22 바이트가 High 클러스터 2바이트고, 27~28바이트가 Low 클러스터 2바이트 입니다.
즉 00000726 클러스터 인덱스를 갖습니다.


FAT1 영역으로 가서 클러스터 번호를 찾아보겠습니다.
4바이트 단위로 나누어 클러스터 번호를 구분합니다.
단 인덱스 0~1번째 클러스터는 Media Type과 Cluster State로 예약되어 있습니다.
3번부터 Root Directory로 시작하게 됩니다. 해당 인덱스에는 다음 클러스터 인덱스 번호가 적혀 있으며, FFFFFF0F를 만나면 클러스터의 끝을 알리게 됩니다.

우리가 찾고자 하는 인덱스는 0x726(1830)입니다. Root Directory의 첫번째 섹터는 8192번입니다. 즉, 3번째 클러스터는 8192번째 섹터에 위치하는 것을 알 수 있습니다.
(Root Directory의 시작 섹터는 Boot Sector의 Reserved 영역 + FAT1 + FAT2 를 하면 구할 수 있습니다.)

현재 구하고자 하는 test1.txt의 시작 섹터 번호를 구하면 8192+1830 = 10022가 됩니다.
여기서 예약된 영역의 크기 2를 제외하면 10020이 됩니다.


Winhex로 확인해 보면 test1.txt의 첫번째 섹터가 10020인 것을 확인할 수 있습니다.


10020에 섹터 당 바이트 수 512를 곱하면 5,130240(4E48000) 되고 해당 오프셋을 찾아가면 파일의 내용을 볼 수 있습니다.

반응형