3. Broken Format
3.3. Cross-Reference Table
Cross-Reference Table은 xref 키워드로 시작되는 아래 그림과 같은 구조로 이루어져있다.
이 샘플에서 Line 146의 오브젝트 시작 번호(0)와 개수(20)가 신뢰성 있는 것인지, Line 147부터 Line 166까지 각각의 엔트리에 있는 Offset과 사용 여부 필드들이 신뢰성 있는지를 알아볼 것이다. 다음과 같은 의문에 대해 테스트를 해 본다.
1. Cross-Reference Table이 없어도 문서 파일이 열리는가?
2. 오브젝트 시작 번호가 실제 Body의 정보와 다르더라도 문서 파일이 열리는가?
3. 오브젝트의 개수가 실제 Body의 정보와 다르더라도 문서 파일이 열리는가?
4. 오브젝트의 개수가 실제 Entry 개수와 일치하지 않더라도 문서 파일이 열리는가?
5. Entry의 오프셋 정보가 실제 오브젝트의 위치를 가리키지 않더라도 문서 파일이 열리는가?
6. Entry의 오브젝트 사용 여부 필드가 문서 파일을 읽는 데에 영향을 미치는가?
1번 의문에 대해서는 위와 같이 Cross-Reference Table을 전부 제거해버리고 문서를 열어보면 된다. Trailer와 마찬가지로 문서는 너무나 잘 열린다.
오브젝트 시작 번호를 50으로, 오브젝트 개수를 4로 변경하고 실행해본다. 이것으로 2번, 3번, 4번의 답을 얻을 수 있다.
각 Entry의 오프셋 정보를 바꾸고, 사용 안함(f)로 변경한 후 테스트한다. 이렇게 5번, 6번의 의문점을 풀 수 있다.
모든 테스트에서 문서는 너무나 잘 열렸다. 결론적으로 Cross-Reference Table은 문서가 열리는 것에 대해서 전혀 관계가 없음으로 확인되었다.
'File Format > PDF' 카테고리의 다른 글
[PDF File Format] 3. Broken Format - (4) Body (3) | 2016.06.13 |
---|---|
[PDF File Format] 3. Broken Format - (2) Trailer (0) | 2016.06.04 |
[PDF File Format] 3. Broken Format - (1) File Header (0) | 2016.06.04 |
[PDF File Format] 2. PDF Data Type (0) | 2016.06.03 |
[PDF File Format] 1. Basic Format (0) | 2016.06.03 |