BLOG main image
분류 전체보기 (224)
Reversing (13)
Pwnable (4)
Linux Kernel (3)
Crypto (2)
Wargames (68)
Programming (18)
Write Up (32)
Project (22)
Web (2)
My Life (52)
Memo (3)
etc (2)
발표자료 (1)
39,509 Visitors up to today!
Today 11 hit, Yesterday 4 hit
daisy rss
tistory 티스토리 가입하기!
2015.11.13 12:17
[etc]


이번에 BMP파일 헤더 구조를 한 번 설명해 보려 합니다.


일단 전체 헤더를 살펴보겠습니다.





제가 임의로 작성한 헤더입니다. 밑의 0xFF로 이루어진 부분은 사진파일의 실제 리소스가 되겠네요. 자 일단 하나씩 살펴보겠습니다.





자, 일단 맨 먼저 나오는 0x42 0x4D로 이루어진 부분입니다. 이 부분은 PE의 MZ처럼 BMP파일임을 알려주는 시그니쳐 입니다. 고정값이구요. BM이라고 적혀 있네요. 총 2bytes를 차지 합니다.



 


그 다음은 BMP파일의 전체 사이즈를 적어 줍니다. 여기서의 사이즈는 헤더부분을 포함한 사이즈 입니다. 중요한 점은 전체 크기를 리틀 엔디언 방식으로 적어 주셔야 한다는 것입니다.

따라서 이 파일의 전체 크기는 0x43A2D가 되겠네요. 제가 임의로 작성한 헤더라 크기가 비정상적으로 크네요.. 총 4bytes를 차지합니다.





그 다음 부분은 총 4bytes를 모두 0으로 채워주어야 합니다. 예약된 공간이라는데 사용하면 안된다네요. 고정값입니다.





그 다음은 실제 사진 데이터가 시작되는 곳의 주소를 나타 냅니다. 역시 리틀 엔디언으로 적어 주셔야 하구요. 그냥 고정값 0x36으로 보셔도 무방합니다. 총 4bytes를 차지 합니다.





그 다음은 저 0x28부터 파일헤더(File Header)가 아닌 BMP인포헤더(Info Header) 입니다. 저 0x28이 인포헤더의 크기입니다. 거의 0x28로 고정값입니다. 역시 4bytes를 차지합니다.





이번에는 정말 중요한 가로 해상도 입니다. 0x87, 135픽셀이네요. 총 4bytes 리틀엔디언으로 작성 해 주셔야 하구요.





이거는 세로 해상도 입니다. 위 가로 해상도와 같은 방식으로 작성해 주시면 됩니다.




[출처] bmp 파일 구조|작성자 옥탑방훼인

비트맵 파일의 Plane수라는데 그냥 1로 고정값 입니다. 총 2bytes를 사용합니다.





BPP라고 한 픽셀이 가지는 색의 수를 나타 낸답니다. 이 부분은 저도 잘 모르겠는데요. 대부분 0x18로 쓰는 것 같습니다. 2bytes를 차지합니다.





압축 타입을 나타내는 데에 쓰입니다. 0은 무압축, 1은 RLE8, 2는 RLE4입니다. 더 자세한 건 직접 한 번 찾아보세요. 총 4bytes를 차지 합니다.





이번에는 사진 데이터만의 크기 입니다. 헤더파일 크기는 제외한 크기 입니다. 총 4bytes를 차지하고 리틀 엔디언으로 적어 주셔야 합니다.


그 뒤 부분은 길이당 픽셀과 색상 관련 정보들인데 모두 0으로 채워주셔도 상관 없습니다.

사실 뒷 부분은 저도 잘은 모르겠네요. 이렇게 헤더를 작성해 주시고 뒤에 데이터들을 넣어 주시면 비트맵 파일이 완성이 되게 됩니다.

'etc' 카테고리의 다른 글

리눅스 가상 시리얼 포트 열기  (0) 2018.03.08
BMP File Header  (0) 2015.11.13
Name
Password
Homepage
Secret
prev"" #1 #2 next