1. 문제 설명
위의 pdf 파일에서 아래 3가지 정보를 찾아내면 된다.
- 고객 이름
- 거래 장소
- 거래 금액
2. 문제 풀이
2-1. 고객 이름
HEX 에디터에서 font를 검색해보면 정상적인 폰트 이름이 아닌,
고객 이름이 나타나는 것을 볼 수 있다.
'mycustomernameisNoliardaski'에서 고객 이름이 Noliardaski임을 확인할 수 있다.
2-2. 거래 장소
스크롤을 계속 내리다보면 (Line 670)
마지막 부분쯤에 자바스크립트 코드가 한 줄 등장한다.
앞에 있는 'x\x9c'는 hex로 '78 9c'인데, 이것으로 app.alert에 쓰인 데이터가 zlib 파일이라는 것을 알 수 있다.
(포렌식에서 앞 hex는 문서의 종류를 밝히는 데에 항상 중요하다고 한다.)
위의 출처에 표기된 스택 오버플로우 글을 참조해 아래의 디코딩 코드를 작성했다.
import zlib
f = b'x\x9c\x15\xcc\xcb\t\x800\x14D\xd1V\xa6\x00\r*6`\x01\xa2`\x05Q\x86$\xf0\xe2\x0b\xf9,\xec^\xdd\xdd\xb3\xb9\xbb\xd0\x16"32\x9e\xcc\xc6\xa0z"\x89\xbd\x88P0\xcdC\x87M\x9e\x98\xc2\xd5g\xedp\xe8\xed\x92\xed]\xfb\x92\xda\x04\xb6b\x1c\x97\x15\x85\xc4\xa3\xed\xf7\x7f\xf0Z)/\xba\x95\x1f\x17'
print(zlib.decompress(f))
실행 결과를 보면, 서울 송파구 올림픽로 240에서 거래가 진행된다는 걸 알 수 있다.
2-3. 거래 금액
HEX 에디터에서 page를 검색해보면 /page와 /pages의 정보가 다른 것을 확인할 수 있다.
(Line 13의 MediaBox와 147의 MediaBox 값)
Line 13의 MediaBox 값을 [0 0 595 842]로 147과 똑같이 설정한 후, PDF를 다시 열어보면
아래와 같은 PDF 내용이 보이게 된다.
여기서 가격은 13,003,230원인 것을 알 수 있다.