문서 포렌식
문서 포렌식 검사는 파일이 눈에 보이는 내용 너머에 싣고 다니는 것을 읽습니다. 메타데이터가 말하는 작성자가 누구인지, 어떤 도구가 만들었는지, 타임스탬프가 언제 바뀌었다고 주장하는지, 어떤 이전 개정본, 내장 파일, 보이지 않는 텍스트가 아직 안에 남아 있는지. 아래에 PDF, PNG 또는 JPEG를 놓으면 이 페이지는 그 사실들을 사용자의 브라우저에서 로컬로 보고하고, 각각 읽어 낸 구체적인 값을 함께 제시합니다. 먼저 두 가지 한계를 밝힙니다. 파일은 절대 업로드되지 않습니다 — 이 기기에서만 분석되고 다른 어디에서도 분석되지 않습니다. 그리고 이 도구는 판정이 아니라 사실을 보고합니다. 구조적 증거로는 파일의 작성자를 증명할 수 없으므로 여기에는 점수도 저작자 판단도 없습니다. 동반 글 PDF 메타데이터와 숨은 데이터는 각 데이터가 어디에 숨는지, 실제 유출이 어떻게 일어났는지를 설명합니다. PDF 접근성 검사기는 PDF의 읽기 구조를, 바이너리 검사기는 실행 파일을 다룹니다.
마지막 업데이트:
또는 파일을 이 상자 안 어디에든 놓으세요. 파일은 이 기기에서 읽히며 절대 업로드되지 않습니다. 제한: 20 MB.
문서 사실
발견
판정이 아니라 사실 — 이 페이지가 말할 수 없는 것
메타데이터는 증거가 아니라 증언입니다. 작성자 필드는 어떤 프로그램이 파일에 써 넣은 내용을 말할 뿐이며, 이 값들은 어느 것이든 편집될 수 있고, 다른 문서에서 복사될 수 있고, 템플릿에서 남은 것일 수 있습니다. 따라서 메타데이터에 익숙한 이름이 있다고 해서 그 사람이 이 파일을 만들었다는 증명이 되지 않고, 낯선 도구 이름이 있다고 해서 내용 제작 방식에 대해 아무것도 증명되지 않습니다. 특히 구조적 증거로는 저작자를 증명할 수 없으며, 이 페이지는 내용이 사람이 만들었는지 소프트웨어가 만들었는지에 대해 어떤 주장도 하지 않습니다. 존재하는 값, 살아남은 개정본, 서로 모순되는 타임스탬프를 보고하고 해석은 사용자에게 맡깁니다. 모든 발견을 결론이 아니라 확인할 단서로 다루세요.
이 도구가 보고하는 것
- PDF 정보 사전 필드 — 제목, 작성자, 작성 도구, 생성 도구, 두 날짜 — 를 근거로 그대로 인용합니다.
- XMP 메타데이터 패킷(있는 경우). 제목, 생성 도구, 작성/수정 날짜를 추출합니다.
- 증분 업데이트 구조: 파일이 지닌 %%EOF 마커와 startxref 섹션의 수, /Prev 트레일러 체인의 깊이.
- 내장 파일의 징후, 렌더링 모드 3으로 그려진 숨은 텍스트, 암호화 플래그.
- 디코딩된 텍스트 청크와 tIME 타임스탬프를 포함한 PNG 청크 목록. JFIF, Exif, XMP 필드와 주석 텍스트를 포함한 JPEG 세그먼트 목록 — 그리고 두 형식 모두에서 끝 마커 뒤에 남은 바이트.
문서가 내용 외에 싣고 다니는 것
여기서 다루는 모든 문서 형식은 내용의 그림이 아니라 컨테이너입니다. PDF는 정보 사전 — 제목, 작성자, 작성 도구, 생성 도구, 그리고 두 개의 날짜 — 을 싣고 다니며, 이는 내보낸 애플리케이션이 문서 작성자가 대개 본 적 없이 써 넣은 것입니다. 그 옆에 대부분의 현대 생성 도구는 XMP 패킷을 내장합니다. 이는 XML 메타데이터 블록으로, 같은 필드를 반복하거나 작성 도구를 추가하거나 정보 사전과 조용히 어긋날 수 있습니다. PNG 이미지는 이름 있는 청크를 싣고 다니며, 그중 일부는 자유 텍스트 — 소프트웨어 이름, 주석, 저작권 줄, 때로는 XML 문서 전체 — 를 담습니다. JPEG 사진은 카메라가 쓴 Exif 블록 — 제조사, 모델, 셔터가 눌린 날짜, 마지막으로 파일을 만진 소프트웨어 — 을 싣고 다닙니다. 이 중 어느 것도 문서를 정상적으로 열면 보이지 않지만, 파일이 게시되고, 메일로 보내지고, 법정에 제출될 때 모두 함께 이동합니다.
PDF에는 두 번째, 더 깊은 층이 있습니다. 증분 업데이트입니다. PDF 형식은 편집기가 파일을 다시 쓰는 대신 새 개정본을 파일 끝에 덧붙여 변경을 저장할 수 있도록 설계되었으므로, 이전 바이트 — 단락의 이전 버전 포함 — 가 물리적으로 남아 읽을 수 있습니다. %%EOF 마커가 여러 개인 파일은 그렇게 여러 번 저장된 것이며, 뒤의 개정본에서 “삭제”된 것은 이전 개정본에서 복구될 수 있습니다. 이 메커니즘은 서명과 빠른 저장에 정당하고 유용하지만, 순진한 가림이 실패하는 이유이기도 합니다. 단락을 검은 사각형으로 덮거나, 증분 저장을 하는 편집기에서 텍스트를 지워도 원래 단어가 파일 안에 남아 보는 사람이면 누구나 볼 수 있습니다. 이 페이지는 파일 끝 마커와 트레일러 체인을 세어, 눈앞의 파일에 과거가 있는지 알 수 있게 합니다.
같은 컨테이너 논리가 나머지 검사를 설명합니다. PDF는 내장 파일 — 문서 내부에 저장되고 내장 파일 이름 트리에 나열되는 완전한 첨부 파일 — 을 실을 수 있습니다. 읽는 사람은 알아채지 못할 수 있지만 받는 사람은 추출할 수 있습니다. 또한 숨은 텍스트도 실을 수 있습니다. PDF 텍스트는 렌더링 모드로 그려지며, 모드 3은 아무것도 그리지 않으면서 문자를 콘텐츠 스트림에 남겨 복사하고 검색할 수 있지만 페이지에서는 보이지 않게 합니다. 제거되어야 했던 텍스트의 전형적인 은신처이며, 때로는 보여서는 안 될 텍스트의 은신처이기도 합니다. PNG와 JPEG 파일에도 같은 이야기의 자체 버전이 있습니다. 끝 마커 뒤에 덧붙은 바이트는 모든 뷰어가 무시하지만 파일에 남아 있고, 텍스트 청크와 주석 세그먼트는 그것을 쓴 편집 세션보다 오래 살아남는 일이 흔합니다.
타임스탬프는 문서가 스스로 모순되는 지점입니다. PDF는 정보 사전에 최소 두 개의 날짜를, XMP 패킷에 종종 두 개를 더 담고 있으며, 이들은 서로 다른 도구가 서로 다른 시점에 쓴 것입니다 — 내보내기 도구, 편집기, 업로드 시 재압축한 최적화 도구. 작성 날짜가 수정 날짜보다 뒤에 있을 때, XMP 날짜가 정보 사전과 어긋날 때, 날짜가 미래에 있을 때, 그 체인의 어딘가는 일관된 이야기를 하지 않은 것입니다. 시계가 틀렸거나, 필드가 편집되었거나, 서로 다른 이력을 가진 조각들로 파일이 조립된 것입니다. 이 설명들 중 어느 것도 자동으로 수상한 것은 아니며, 이 페이지는 그중 어느 것도 선택하지 않습니다. 두 값을 나란히 보여 주어 모순이 묻히지 않고 드러나게 합니다. 카메라의 Exif 날짜와 PNG의 마지막 수정 청크도 마찬가지입니다. 타임스탬프는 파일이 하는 주장이며, 주장을 교차 확인하는 것이 이 도구의 전부입니다.
결과는 다른 누군가가 게시한 뒤가 아니라 게시하기 전에 사용하세요. 내부 보고서, 스크린샷, 사진을 이런 검사에 통과시키고, 그것들과 함께 새어 나갈 것을 읽어 보세요. 작성자 이름과 사용자 이름, 내부 도구 이름, 원래 날짜, 잊은 첨부 파일, 법무팀이 제거한 단락을 아직 담고 있는 개정본. 그런 다음 정리를 의도적인 단계로 만드세요 — 메타데이터를 제거하고 원본에서 다시 내보내기, 증분 저장이 아니라 파일을 완전히 평탄화하고 다시 쓰기 — 그리고 실제로 보내는 사본을 다시 검사하세요. 그리고 내내 정직성의 한계를 시야에 두세요. 깨끗한 결과는 이 페이지가 보는 곳에서 구조적 놀라움이 발견되지 않았다는 뜻이며, 문서의 출처를 보증하지 않습니다. 놀라운 결과는 비난이 아니라 던져야 할 질문입니다.
자주 묻는 질문
파일이 어딘가에 업로드되나요?
아니요. 파일은 이 페이지, 사용자의 기기에서 열리고 분석되며, 어떤 것도 업로드, 전송, 저장되지 않습니다. 파일 분석은 네트워크 요청을 전혀 만들지 않으므로 페이지를 불러온 뒤에는 오프라인으로 동작합니다. 이는 중요합니다. 가장 검사할 가치가 있는 문서야말로 낯선 사람의 서버로 보내서는 안 되는 문서이기 때문입니다.
이 도구로 파일을 누가 만들었는지, AI가 만들었는지 알 수 있나요?
알 수 없습니다 — 그렇다고 주장하는 도구는 경계하세요. 메타데이터 필드는 프로그램이 파일에 써 넣은 텍스트로, 편집될 수 있고, 템플릿에서 상속될 수 있고, 다른 문서에서 복사될 수 있으므로 증거가 아니라 증언입니다. 구조적 증거로는 저작자를 확정할 수 없습니다. 이 페이지는 존재하는 값과 파일이 스스로 모순되는 지점을 보고하고, 저작자 문제는 실제로 답할 수 있는 증거에 맡깁니다.
증분 업데이트란 무엇이며 왜 중요한가요?
PDF 편집기는 파일을 다시 쓰는 대신 새 개정본을 덧붙여 변경을 저장할 수 있습니다. 저장할 때마다 %%EOF 마커가 남으므로 마커가 여러 개면 개정본이 여러 개 덧붙었다는 뜻입니다. 그리고 이전 개정본은 바이트 속에 읽을 수 있게 남아 있으며, 뒤의 개정본이 지운 것처럼 보이는 내용도 포함합니다. 그래서 사각형으로 텍스트를 덮거나 증분 저장으로 지워도 텍스트는 파일에서 사라지지 않습니다. 완전히 다시 쓰거나 다시 내보내는 것이 오래된 바이트를 실제로 버리는 방법입니다.
PDF에서 숨은 텍스트를 찾았습니다. 누군가 속인 건가요?
그것만으로는 아닙니다. 렌더링 모드 3으로 그려진 텍스트는 보이지 않지만 존재하며, 정당한 이유도 있습니다. OCR 레이어는 스캔된 페이지 이미지 뒤에 자리해 페이지를 검색하고 복사할 수 있게 하며, 일부 생성 도구는 색인을 위해 보이지 않는 텍스트를 내보냅니다. 보이지 않는 텍스트가 사라졌어야 할 때 문제가 됩니다. 복사 가능한 상태로 남은 가려진 이름은 의도가 무엇이었든 유출입니다. 발견을 판정이 아니라 “여기를 보라”로 읽으세요.
게시 전에 이 메타데이터를 어떻게 제거하나요?
가능하면 원본에서 다루세요. 작성 도구에서 문서 속성을 지우고, 메타데이터 옵션을 끄고 내보내며, PDF의 경우 증분 저장보다 완전한 재작성 — PDF로 인쇄하거나 전용 정리 도구 사용 — 을 선호하세요. 이미지의 경우 제자리에서 편집하는 대신 Exif와 텍스트 청크를 제거하는 도구로 다시 내보내세요. 그런 다음 정리된 사본을 이 페이지에 다시 통과시켜, 신경 쓰던 발견이 실제로 사라졌는지 확인하세요.