BMP Recovery | 워게임 | Dreamhack
BMP Recovery
DescriptionBMP 파일에서 이런 중요한 값들을 지워버리다니!빨리 복구해서 플래그를 읽어주세요!플래그 형식은 DH{...}로, flag.bmp를 올바르게 복구하면 찾을 수 있습니다.
dreamhack.io

문제 파일

chal.py 파일

코드가 작성되어 있음
지피티한테 이 코드를 해석해달라고 함
-> 원본 BMP 파일의 헤더 부분을 강제로 0으로 덮어써서 "깨진 BMP 파일"을 만드는 코드
flag.bmp.broken 파일은 HxD로 열어봄

0x00 ~ 0x1B 구간 = 파일 헤더 + DIB 헤더 앞부분 → 전부 00으로 날아감
앞부분이 전부 00으로 채워져 있고, 그 뒤부터는 전부 FF 값으로 채워져 있음
일단 BMP 파일에 대해 찾아봄
BMP는 용량은 크지만 단순하고 화질 손실 없는 그림 파일 형식이라 함.
BMP 구조:
+------------------------+
| BITMAP FILE HEADER | (14 bytes)
+------------------------+
| DIB HEADER | (40~124 bytes, 버전에 따라 다름)
+------------------------+
| COLOR PALETTE (옵션) | (비트 수가 8 이하일 때)
+------------------------+
| PIXEL DATA | (이미지 실제 데이터)
+------------------------+
| (옵션 확장 영역) |
+------------------------+
지피티한테 어떻게 다시 복구할 수 있는지 ( 어떤 헤더 필드를 살려야 정상적으로 열리는지 )
1. BITMAP FILE HEADER (0x00–0x0D)
0x00–0x01: "BM" = 42 4D
0x02–0x05: 파일 전체 크기
0x06–0x09: 예약 = 00 00 00 00
0x0A–0x0D: 픽셀 데이터 시작 오프셋 = 36 00 00 00 (보통 54바이트 → 0x36)
2. DIB HEADER (0x0E–0x35)
0x0E–0x11: 28 00 00 00 (BITMAPINFOHEADER 크기 = 40)
0x12–0x15: 가로 픽셀 수 (width, 추정 필요)
0x16–0x19: 세로 픽셀 수 (height, 추정 필요)
0x1A–0x1B: 평면 수 = 01 00
0x1C–0x1D: 픽셀당 비트 수 (18 00 = 24bpp)
0x1E–0x21: 압축 방식 = 00 00 00 00 (BI_RGB)
0x22–0x25: 이미지 크기 ( 안 넣어도 무방 )
0x26–0x29: X 해상도 = 13 0B 00 00 (2835, 72dpi)
0x2A–0x2D: Y 해상도 = 13 0B 00 00
0x2E–0x31: 사용 색상 수 = 00 00 00 00
0x32–0x35: 중요한 색상 수 = 00 00 00 00
3. 픽셀 데이터 (0x36 이후)
- 지금 보이는 FF FF FF ... 값이 그대로 이미지의 픽셀 값임 → 정상적으로 살아 있음.
즉.
파일 전체 크기, 그리고 width와 height를 알아내야함

파일 전체 크기는 14,309,622 바이트.
14,309,622 바이트 = 0x00 DA 58 F6 → 리틀엔디언: F6 58 DA 00
0x1C–0x21(6바이트)도 알아야 함

0x1C–0x21 는 18 00 00 00 00 00
-> 24bpp + BI_RGB(무압축)
< width와 height 구하기 >
24bpp에서는 각 행 크기 row_size = ((3·width + 3) // 4) * 4(4바이트 패딩)
height = D / row_size가 정수가 되면 OK
width = 2184, height = 2184
- 검증: 3 × 2184 × 2184 = 14,309,568 = D
0x12–15 : 88 08 00 00 (biWidth = 2184)
0x16–19 : 88 08 00 00 (biHeight = 2184)

최종

확장자 bmp로 해서 저장

아 뭔가 잘못됨
심각하게 보일듯 말듯함
아예 안 보이는 게 아니라서...
숨겨진 거 같음
'드림핵' 카테고리의 다른 글
| [워게임] session-basic (0) | 2025.09.29 |
|---|---|
| [드림핵] 워게임 WindowsPool (0) | 2025.08.25 |
| [드림핵] 워게임 Enc-JPG (3) | 2025.08.05 |
| [드림핵] 워게임 structure-based carving (4) | 2025.07.28 |
| [워게임] sleepingshark (1) | 2025.07.21 |