元数据简介
了解PDF元数据及其细微之处。
引言
PDF文档本身包含丰富的元数据信息,在数字取证调查中具有重要价值。尽管存在多种从PDF文件中提取元数据的方法,但这些方法要么是手动操作,要么无法涵盖所有类型的元数据。
什么是元数据?
简单来说,元数据是指关于数据的数据。
通常,数字对象的元数据可分为两类:
-
文件系统元数据
文件系统元数据指的是与文件本身相关联的数据元素,不参与构成文件二进制结构的字节序列。
-
应用程序元数据
应用程序元数据涉及文件内部固有的元素,并参与文件二进制字节序列的构成。
在本课程中,我们将重点讨论对应用程序元数据的操作。
应用程序元数据类型
应用程序元数据存储在PDF文件中,以文档信息字典对象或元数据流对象的形式存在。
文档信息字典(DID)自PDF 1.0版本起就已存在,用于通过键值对组合的方式提供关于PDF文件的一般性信息。
自PDF 1.4版本(2001年)起引入的元数据流,则是一种更完善的机制,用于嵌入更全面的元数据属性。元数据流的内容采用可扩展标记语言(XML)表示,可以包含整个PDF文档以及其中特定组件的元数据。
-
文档信息字典
DID对象关联有九个属性,如下所示:
| 键名 | 数据类型 | 值描述 |
|---|---|---|
| /Title | 文本 | 文档标题 |
| /Author | 文本 | 文档作者 |
| /Subject | 文本 | 文档主题 |
| /Keywords | 文本 | 与文档相关的关键词 |
| /Creator | 文本 | 创建该PDF文档所使用的原始应用程序 |
| /Producer | 文本 | 转换该PDF文档所使用的原始应用程序 |
| /CreationDate | 日期 | 文档创建的日期和时间 |
| /ModDate | 日期 | 文档最后一次修改的日期和时间 |
| /Trapped | 名称对象 | 标识文档是否已添加陷印信息 |
DID的属性遵循特定语法规则,其键名以“/键名”形式引用。这些属性通常位于一个称为***尾部(trailer)***的对象中。
-
元数据流
解析元数据流会返回一个基于XML子集的结构化对象,称为可扩展元数据平台(XMP)。
该对象包含以下25种可能的元数据值:
| 键名 | 类型 | 模式 | 描述 |
|---|---|---|---|
| custom_properties | 字典 | 自定义模式属性 | 自定义元数据属性 |
| dc_contributor | 列表 | 都柏林核心(dc) | 文档的非作者贡献者 |
| dc_coverage | 列表 | 都柏林核心(dc) | 描述文档的范围或覆盖内容 |
| dc_creator | 列表 | 都柏林核心(dc) | 文档作者的名称 |
| dc_date | 列表 | 都柏林核心(dc) | 对文档具有重要意义的时间对象 |
| dc_description | 字典 | 都柏林核心(dc) | 文档内容的描述 |
| dc_format | 字符串 | 都柏林核心(dc) | 文档的MIME类型 |
| dc_identifier | 字符串 | 都柏林核心(dc) | 文档的唯一标识符 |
| dc_language | 列表 | 都柏林核心(dc) | 文档中使用的语言 |
| dc_publisher | 列表 | 都柏林核心(dc) | 文档的出版者 |
| dc_relation | 列表 | 都柏林核心(dc) | 与其他文档的关系 |
| dc_rights | 字典 | 都柏林核心(dc) | 用户对文档的权利 |
| dc_source | 字符串 | 都柏林核心(dc) | 文档来源的唯一标识符 |
| dc_subject | 列表 | 都柏林核心(dc) | 标识文档主题的关键词 |
| dc_title | 字典 | 都柏林核心(dc) | 文档标题 |
| dc_type | 列表 | 都柏林核心(dc) | 文档类型的描述 |
| pdf_keywords | 字符串 | Adobe PDF模式 | 文档关键词的补充列表 |
| pdf_pdfversion | 字符串 | Adobe PDF模式 | PDF版本号 |
| pdf_producer | 字符串 | Adobe PDF模式 | 创建PDF文档的工具 |
| xmp_createDate | 字符串 | XMP基本模式 | 文档创建日期 |
| xmp_creatorTool | 字符串 | XMP基本模式 | 创建文档源的首个工具 |
| xmp_metadataDate | 日期时间 | XMP基本模式 | 元数据最近一次更改的时间 |
| xmp_modifyDate | 日期时间 | XMP基本模式 | 文档最近一次更改的时间 |
| xmpmm_documentId | 字符串 | XMP媒体管理模式 | 文档所有版本的通用标识符 |
| xmpmm_instanceId | 字符串 | XMP媒体管理模式 | 当前文档的唯一标识符 |
XMP元数据属性按模式分组。每个模式由唯一的命名空间、URI标识,并包含任意数量的属性。
最常用的预定义XMP模式是“都柏林核心”("dc"),它包含诸如“dc:contributor”、“dc:coverage”、“dc:creator”等通用属性。
两种元数据类型之间的关联
在PDF 2.0版本中,文档信息字典(DID)已被弃用。此外,当XMP元数据属性更新时,DID的标准属性将自动同步更新。
下表展示了DID属性与XMP属性之间的对应关系:
| DID属性 | XMP属性 |
|---|---|
| /Title | dc:title |
| /Author | dc:creator |
| /Subject | dc:description |
| /Keywords | pdf:Keywords |
| /Creator | xmp:CreatorTool |
| /Producer | pdf:Producer |
| /CreationDate | xmp:CreateDate |
| /ModDate | xmp:ModifyDate |
结论
从PDF元数据中可以获取大量有价值的信息,这对取证分析和调查工作至关重要。
在下一课中,我们将学习如何操作PDF元数据。