文件鑑識

文件鑑識檢查讀取的是檔案在可見內容之外攜帶的東西:中繼資料聲稱的作者是誰、哪個工具產生了它、時間戳聲稱它何時被修改、哪些早期修訂、嵌入檔案或不可見文字仍留在裡面。在下方放入 PDF、PNG 或 JPEG,本頁面會在你的瀏覽器中本機報告這些事實,每項都附它讀取到的具體數值。先講清兩個限制:檔案永不上傳——它只在這台裝置上解析,不到任何其他地方;而且本工具報告的是事實,不是判定:結構證據無法證明檔案由誰建立,因此這裡沒有分數,也沒有作者歸屬判斷。配套文章PDF 中繼資料與隱藏資料解釋了每類資料藏在哪裡、真實外洩是如何發生的;PDF 無障礙檢查器涵蓋 PDF 的閱讀結構,二進位檢查器涵蓋可執行檔。

最後更新:

或者將檔案拖到此框中的任意位置。檔案在本裝置上讀取,永不上傳。限制:20 MB。

事實,不是判定——本頁面不能告訴你的事

中繼資料是證詞,不是證據。作者欄位只是某個程式寫進檔案的一段文字,這些數值中的任何一項都可以被編輯、從另一份文件複製、或從範本裡遺留下來——所以中繼資料裡出現熟悉的名字並不能證明那個人建立了這個檔案,出現陌生的工具名也不能證明內容是如何製作的。特別要強調:結構證據無法證明作者歸屬,本頁面對內容是由人還是由軟體製作不作任何主張:它只報告實際存在的數值、仍然保留的修訂和相互矛盾的時間戳,把解釋留給你。請把每項發現都當作需要核實的線索,而不是結論。

本工具報告什麼

  • PDF 資訊字典欄位——標題、作者、建立工具、產生工具和兩個日期——作為證據逐字引用。
  • XMP 中繼資料包(如存在),並擷取其標題、產生工具與建立/修改日期。
  • 增量更新結構:檔案攜帶多少個 %%EOF 標記和 startxref 段,以及 /Prev 預告片鏈的深度。
  • 嵌入檔案跡象、用算繪模式 3 繪製的隱藏文字,以及加密標誌。
  • PNG 資料區塊清單(解碼文字區塊與 tIME 時間戳);JPEG 段清單(JFIF、Exif 與 XMP 欄位及註解文字)——以及兩種格式中結束標記之後的任何尾隨位元組。

文件在內容之外還攜帶什麼

這裡涵蓋的每種文件格式都是一個容器,而不只是內容的圖片。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 和文字區塊的工具重新匯出,而不是原地編輯。然後把清理後的副本再放回本頁面檢查一次,確認你在意的那些發現確實消失了。