핵심 요약
한글과컴퓨터의 DOC 포맷 구조 분석 글은 MS-DOC 명세를 바탕으로 .doc 파일 내부의 데이터 위치를 체계적으로 해석하는 방법을 제시합니다. WordDocument 스트림의 FIB 위치와 크기(fc, lcb) 파악, CP/PLC/STTB/RG 등 핵심 데이터 구조의 역할을 설명합니다. Clx, Pcdt, PlcPcd, Pcd 계층을 통해 텍스트-속성 매핑 원리를 제시하고, MS-DOC 명세에서 필요한 데이터명을 찾아 구조를 해석하는 절차를 다룹니다. 또한 Clx 예제와 C++ 기반 파싱 흐름으로 실제 읽기 방법을 구체화합니다.
구현 방법
- 구조 구성: WordDocument 스트림, 0Table/1Table, SummaryInformation, Data Stream 등 스트림의 역할과 위치
- 위치 추출: FIB의 fc/lcb를 이용해 텍스트 데이터의 물리 위치를 파악하고, fcClx/lcbClx를 Table1/Table0에서 찾아 Clx를 읽습니다
- 매핑 규칙: CP/PLC/STTB/RG를 통해 문자 위치와 속성 데이터를 매핑
- 계층 해석: Clx의 Prc, Pcdt, PlcPcd, Pcd 데이터 구조를 통해 텍스트 정보를 해석
- 파싱 흐름: MS-DOC 명세의 2.4 Document Content를 참조하고 C++ 코드 흐름으로 바이너리 읽기/파싱 절차를 구체화
주요 결과
- FIB를 기준으로 위치/크기를 파악하고 텍스트 위치 매핑 흐름을 설정
- Clx 구조를 따라 텍스트 정보의 구성과 매핑을 이해
- MS-DOC 명세를 기반으로 필요한 데이터명 식별과 해석 절차를 제시
- C++ 기반 파싱 흐름을 통해 실제 데이터 읽기의 기초를 제공
