https://yenas0.tistory.com/350
[Dreamhack(드림핵)] Write up _ Corrupted Disk Image
https://dreamhack.io/wargame/challenges/1189 Corrupted Disk ImageDescription [\[함께실습\] Corrupted Disk Image](https://learn.dreamhack.io/634)에서 실습하는 문제입니다. 디스크 이미지가 열리지 않습니다…! 주어진 디스크
yenas0.tistory.com
이 문제 풀면서 파일 시스템 정리해두면 좋을 것 같아서 정리해봄
파일시스템이란?
컴퓨터에서 파일이나 자료를 쉽게 발견 및 접근할 수 있도록 보관 또는 조직하는 체제
윈도우 운영체제에서의 파일 시스템은
FAT32, NTFS, exFAT가 있다.
Windows 컴퓨터의 내장 하드 드라이브 대부분은 NTFS 형식이고 FAT32는 리눅스, 맥, 안드로이드 같은데에서 호환이 더 잘되는 것 같다.
기존에 FAT32랑 NTFS만 공부를 했어서 exFAT까지 공부를 해보면 좋을 것 같다.
All You Want to Know about exFAT, FAT32, and NTFS
What do you know about the file system? Do you the differences between exFAT, FAT32, and NTFS? In this article, we will tell you everything you should know about these three file systems.
www.easeus.com
위에 글을 참고했다.
FAT32 (File Allocation Table 32)
일반적으로 모든 USB 플래시 드라이브는 FAT32파일 시스템이라고 한다.
장점: 호환성이좋음. 모든 운영체제에서 적용이 가능
단점: 최대 4GB의 단일 파일 크기만 전송 가능하다.
NTFS (New Technology File System)
HDD와 SDD를 위해 만든 기본 파일 시스템, 현재 가장 널리 사용되는 중
장점: 보안, 사용 편의성 및 안정성이 뛰어남, 대용량의 MBR 및 GPT 하드 드라이브를 지원해서 하드 드라이브 분할 때 좋다.
단점: USB 플래시 드라이브에 사용시 수명이 단축될 확률이 높음
exFAT(Extended File Allocation Table)
FAT32를 대체하기 위해 만든 새로운 파일 시스템
단점이었던 4GB 파일 전송 제한을 풀어 더 큰 파일 전송 지원.
장점: 윈도우랑 맥에서 전부 사용가능해서 NTFS보다 좋은 호환성
단점: 파일 로그 기능이 없어 디스크 수정 기록이 불가능하다.
추가적으로 문제에서 MBR을 조작했다는 부분이 있어 MBR까지 공부해보았다.
MBR
마스터 부트 레코드(MasterBoot Record)의 약자이고 컴퓨터의 저장 장치에 있는 파티션 섹터라고한다.
즉, 부트레코드 들의 마스터임
무슨말이나면,,, 그냥 컴퓨터가 처음 부팅이 되면 가장 먼저 참조하는 영역이라고 보면된다.
MBR은 파티션의 위치를 알려주는 역할을 하므로 이 부분이 손상되면 OS가 파티션을 찾을 수 없다..
단일 파티션이면 부트레코드가 한개고 MBR영역이 존재하지 않을 수 있다.
저장매체를 섹터단위로 열었을 때 0번 섹터에 MBR이 있고 한 섹터를 차지하고 있다.
보통 한섹터는 512byte로 이루어져 있다.
좀 더 자세히 확인해보기 위해서 실제로 확인을 해보기 위해 USB를 하나 이미지 떠봤다.
공부한 내용을 바탕으로 한다면 USB는 FAT32 파일시스템을 쓸 확률이 높다.
이미징 된 E01파일을 FTK imager로 열어보았다.
실제로 FAT32의 파일시스템을 가지는 것을 확인할 수 있다.
해당 파일을 Hxd에서 열어보았다. Hxd에서 디스크 이미지를 섹터 별로 열고 싶으면
도구에서 디스크 이미지 열기를 하면 섹터별로 나눌 수 있다. 직접 바이트는 설정하면 됨..
근데 열어보니 이건 MBR이 안뜸...!!!
아마 USB라 단일 파티션이라 MBR이 없나 싶었다.
그래서 파티션을 나눌 수 있는 하드디스크를 하면 좋겠는데 집에 하드디스크는없고,, 내 컴퓨터 1테라짜리라 이거 이미징 뜨려면 한세월 일것 같아서....^^
예전에 디포전 공부했을 때 받은 실습 문제를 열어서 파일 구조를 확인해보기로 하였다.
드래그 해둔 부분의 앞쪽은 전부 Boot Code로 446 byte이고
색칠한 부분부터 마지막에 55 AA전까지가 partition Table로 64바이트이다
뒤에 55 AA이건 시그니처로 2바이트를 차지하고 있는거다
지금 캡쳐한 이미지의 파일은 파티션이 하나였어서 내가 드래그 한 부분이 첫번째 파티션의 정보를 담고있는 테이블이다. 저기에 테이블의 위치, 크기 등등의 정보등을 담고있어서 해당 부분을 참조해서 원하는 위치로 이동하는거라고 보면된다.
한 파티션당 16바이트를 사용하고 있고 4개의 파티션 정보를 담을 수 있어 64byte로 표기한다.
Boot Code (446 bytes) |
Partition Table (64 bytes = 16*4) |
Signature (0x55AA) |
위에같은 형식으로 이해하면 됨.
그럼 파티션 테이블에서 어떻게 파티션 위치같은걸 알수 있는가? 하면
이 사진의 드래그 영역을 기준으로 보았을 때
00 | Boot Flag |
02 03 00 | Starting CHS Addr |
07 | Part Type |
FE 3F 81 | Ending CHS Addr |
80 00 00 00 | Starting LBA Addr |
00 E8 1F 00 | Size in Sector |
이렇게 된다.
각각의 내용을 한번 분석해 보면 아래와 같다.
분석 내용 | 2진값 |
Boot Flag: 00 부팅 가능 파티션 |
0000 0000 |
Starting CHS Addr: 02 30 00 Big Endian: 00 30 02 |
0000 0000 0011 0000 0000 0010 Cylinder(10bit) Header(8bit) Sector(6bit) |
Part Type: 07 | 0000 0111 0x07: NTFS Partition or Logical Drive 실제로 해당 파일은 NTFS파일 시스템의 hex값! ![]() |
Ending CHS Addr: FE 3F 81 Big Endian: 81 3F FE |
1000 0001 0011 1111 1111 1110 Cylinder(10bit) Header(8bit) Sector(6bit) |
Starting LBA Addr: 80 00 00 00 Big Endian: 80 00 00 00 |
1000 0000 0000 0000 0000 0000 0000 0000 |
Size in Sector: 00 E8 1F 00 Big Endian: 00 1F E8 00 |
0000 0000 0001 1111 1110 1000 0000 0000 |
이렇게 정리할 수 있다.
이렇게 하면 각각 원하는 파티션으로 이동하고 그 안에서는 또 부트 레코드를 찾아서 원하는 정보를 찾는 식이라고 보면된다.
각각의 파티션 시작하는 부분에서도 여러가지 정보를 찾을 수 있는데 그건 파일 시스템마다 다르게 나타나게된다.