K-Shield 주니어/스터디CTF
1. Net-Force Challenges - Steganography(6)
pkse74
2025. 4. 11. 15:40
icon에 비밀번호가 있다.
hxd로 분석하기전에 ico파일 구조를 알아본다.
1. ICO 헤더 (ICONDIR):
- Reserved (2 bytes): 예약된 필드로, 항상 0으로 설정됩니다.
- Type (2 bytes): 이미지 유형을 나타냅니다. 아이콘 파일(.ICO)의 경우 1, 커서 파일(.CUR)의 경우 2로 설정됩니다.
- Count (2 bytes): ICO 파일 내에 포함된 이미지(아이콘)의 개수를 나타냅니다.
2. 아이콘 디렉토리 (ICONDIRENTRY):
- ICO 헤더의 Count 필드 값만큼 반복되는 구조체입니다. 각 이미지를 설명하는 정보를 담고 있습니다.
- Width (1 byte): 아이콘의 너비를 픽셀 단위로 나타냅니다. 256 픽셀인 경우 0으로 설정됩니다.
- Height (1 byte): 아이콘의 높이를 픽셀 단위로 나타냅니다. 256 픽셀인 경우 0으로 설정됩니다.
- ColorCount (1 byte): 아이콘이 사용하는 색상의 수를 나타냅니다. 256색 이상인 경우 0으로 설정됩니다.
- Reserved (1 byte): 예약된 필드로, 항상 0으로 설정됩니다.
- Planes (2 bytes): 색상 평면의 수를 나타냅니다. 일반적으로 ICO 파일에서는 1로 설정됩니다. (CUR 파일에서는 X 핫스팟 좌표)
- BitCount (2 bytes): 픽셀당 비트 수를 나타냅니다. (CUR 파일에서는 Y 핫스팟 좌표)
- SizeInBytes (4 bytes): 아이콘의 비트맵 데이터 크기를 바이트 단위로 나타냅니다. InfoHeader, ANDbitmap, XORbitmap의 전체 크기입니다.
- FileOffset (4 bytes): ICO 파일의 시작 위치로부터 아이콘의 비트맵 데이터가 시작되는 오프셋을 바이트 단위로 나타냅니다.
3. 아이콘 비트맵 데이터:
- 아이콘 디렉토리에 정의된 순서대로 각 아이콘의 실제 이미지 데이터가 연속적으로 저장됩니다.
- 각 아이콘의 데이터는 다음 두 부분으로 구성될 수 있습니다.
- 정보 헤더 (BITMAPINFOHEADER): 비트맵의 크기, 색상 깊이, 압축 방식 등 이미지에 대한 상세 정보를 담고 있습니다. BMP 파일 형식의 헤더와 유사하지만, BITMAPFILEHEADER는 제외됩니다. PNG 형식으로 저장될 수도 있습니다.
- 픽셀 데이터 (Pixel Data): 실제 이미지의 픽셀 데이터를 나타냅니다. 마스크 비트맵(AND mask)과 색상 비트맵(XOR mask)으로 구성될 수 있습니다.
- AND 마스크: 1비트 흑백 비트맵으로, 이미지의 투명 영역을 정의합니다. 검은색은 불투명, 흰색은 투명을 나타냅니다.
- XOR 마스크: 실제 색상 정보를 담고 있는 비트맵입니다. AND 마스크와 결합하여 최종 아이콘 이미지를 표시합니다.
주의사항:
- ICO 파일의 모든 값은 리틀 엔디안(little-endian) 바이트 순서로 저장됩니다.
- Windows Vista 이후 버전에서는 PNG 압축 방식을 사용하여 더 높은 품질의 아이콘을 저장할 수 있습니다. 이 경우, 아이콘 디렉토리의 BitCount은 32가 되고, 비트맵 데이터는 완전한 PNG 파일 형식으로 저장됩니다.
- 하나의 ICO 파일에 여러 크기와 색상 심도의 아이콘이 포함된 경우, Windows는 표시 환경에 가장 적합한 아이콘을 자동으로 선택하여 사용합니다.
Ico 의 구조를 공부했지만 사실
50 4B 03 04 라는 zip파일의 시그니처가 들어있다.
저 부분만 따로 떼어내서 .zip파일로 저장하면 zip파일로 만들어진다 이걸 압축풀려고 해보면
비밀번호가 들어있다.
인터넷에 zip푸는 프로그램을 설치해서 풀면 답이나온다. 비번a로 나오긴하는데..