Python编程--使用PyPDF解析PDF文件中的元数据

简介: Python编程--使用PyPDF解析PDF文件中的元数据

Python编程–使用PyPDF解析PDF文件中的元数据
元数据
作为一种文件里非常明显可见的对象,元数据可以存在于文档、电子表格、图片、音频和视频文件中。创建这些文件的应用程序可能会把文档的作者、创建和修改时间、可能的更新版本和注释这类详细信息存储下来。例如,手机照相会把照片的GPS位置信息存下来,微软的Word程序也可能会保存文档的作者信息。

案例解析
互联网上至今还能下载到某黑客组织的某个成员的匿名发布的稿子–ANONOPS_The_Press_Release.pdf。匿名者在稿件中发布信息,组织号召要通过对涉及的一些机构进行分布式拒绝服务攻击(DDoS)以实现报复。这个稿子既没有签名,也没有标注消息来源,只是以PDF(Portable Document Format, 便携式文档格式)文件的形式被发布出来。但是实际创建这个文档所用的程序在PDF元数据中记录了文档作者的名字。

PYPDF是一款很优秀的管理PDF文档的第三方实用程序,可以去http://pybrary.net/pyPdf/下载它。它允许提取文档中的内容,或对文档进行分割、合并、复制、加密和解密操作。若要提取元数据,我们可以使用.getDocumentInfo()方法,该方法会返回一个tuple数组,每个tuple中都含有对元数据元素的一个描述及它的值。逐一遍历这个数组,就能打印出PDF文档的所有元数据。

示例代码如下:

import pyPdf
from pyPdf import PdfFileReader

def printMeta(fileName):
    pdfFile = PdfFileReader(file(fileName, 'rb'))
    docInfo = pdfFile.getDocumentInfo()
    print('[*] PDF MetaData For: ' + str(fileName))

    for metaItem in docInfo:
        print(metaItem + ':' + docInfo[metaItem])

再添加一个OptionParser方法,让脚本只解析我们指定文件元数据,这样我们就有了一个能识别嵌入在PDF文档中元数据的工具。同样,我们也可以修改我们的脚本,去检查某个特定的元数据—指定的用户。此示例,帮助帮助希腊的执法官员搜索出所有“作者”这一元数据被标记为Alex Tapanaries的文档。源码如下:

# 导入各类模块
import pyPdf
import optparse
from pyPdf import PdfFileReader, PdfFileWriter


def printMeta(fileName):
    pdfFile = PdfFileReader(file(fileName, 'rb'))
    docInfo = pdfFile.getDocumentInfo()
    print('[*] PDF MetaData For: ' + str(fileName))

    for metaItem in docInfo:
        print(metaItem + ':' + docInfo[metaItem])

def main():
    parser = optparse.OptionParser('usage %prog -F <PDF file name>' )
    parser.add_option('-F', dest = 'filename', type = 'string', help = 'specify PDF  file name')
    (options, args) = parser.parse_args()
    fileName = options.filename
    if fileName == None:
        print(parser.usage)
        exit(0)
    else:
        printMeta(fileName)

if __name__ == '__main__':
    printMeta()

对匿名者网站发布的这个文件运行这个pdfReader脚本,我们就能看到导致希腊当局逮捕Tapanaries先生的元数据。

image.png

相关文章
|
7月前
|
监控 机器人 编译器
如何将python代码打包成exe文件---PyInstaller打包之神
PyInstaller可将Python程序打包为独立可执行文件,无需用户安装Python环境。它自动分析代码依赖,整合解释器、库及资源,支持一键生成exe,方便分发。使用pip安装后,通过简单命令即可完成打包,适合各类项目部署。
1350 68
|
8月前
|
存储 大数据 Unix
Python生成器 vs 迭代器:从内存到代码的深度解析
在Python中,处理大数据或无限序列时,迭代器与生成器可避免内存溢出。迭代器通过`__iter__`和`__next__`手动实现,控制灵活;生成器用`yield`自动实现,代码简洁、内存高效。生成器适合大文件读取、惰性计算等场景,是性能优化的关键工具。
419 2
|
7月前
|
XML JSON 数据处理
超越JSON:Python结构化数据处理模块全解析
本文深入解析Python中12个核心数据处理模块,涵盖csv、pandas、pickle、shelve、struct、configparser、xml、numpy、array、sqlite3和msgpack,覆盖表格处理、序列化、配置管理、科学计算等六大场景,结合真实案例与决策树,助你高效应对各类数据挑战。(238字)
1024 0
|
8月前
|
机器学习/深度学习 文字识别 Java
Python实现PDF图片OCR识别:从原理到实战的全流程解析
本文详解2025年Python实现扫描PDF文本提取的四大OCR方案(Tesseract、EasyOCR、PaddleOCR、OCRmyPDF),涵盖环境配置、图像预处理、核心识别与性能优化,结合财务票据、古籍数字化等实战场景,助力高效构建自动化文档处理系统。
2186 0
|
7月前
|
数据采集 存储 JavaScript
解析Python爬虫中的Cookies和Session管理
Cookies与Session是Python爬虫中实现状态保持的核心。Cookies由服务器发送、客户端存储,用于标识用户;Session则通过唯一ID在服务端记录会话信息。二者协同实现登录模拟与数据持久化。
|
8月前
|
JSON 缓存 开发者
淘宝商品详情接口(item_get)企业级全解析:参数配置、签名机制与 Python 代码实战
本文详解淘宝开放平台taobao.item_get接口对接全流程,涵盖参数配置、MD5签名生成、Python企业级代码实现及高频问题排查,提供可落地的实战方案,助你高效稳定获取商品数据。
|
设计模式 存储 安全
【23种设计模式·全精解析 | 创建型模式篇】5种创建型模式的结构概述、实现、优缺点、扩展、使用场景、源码解析
结构型模式描述如何将类或对象按某种布局组成更大的结构。它分为类结构型模式和对象结构型模式,前者采用继承机制来组织接口和类,后者釆用组合或聚合来组合对象。由于组合关系或聚合关系比继承关系耦合度低,满足“合成复用原则”,所以对象结构型模式比类结构型模式具有更大的灵活性。 结构型模式分为以下 7 种: • 代理模式 • 适配器模式 • 装饰者模式 • 桥接模式 • 外观模式 • 组合模式 • 享元模式
885 140
【23种设计模式·全精解析 | 创建型模式篇】5种创建型模式的结构概述、实现、优缺点、扩展、使用场景、源码解析
|
算法 测试技术 C语言
深入理解HTTP/2:nghttp2库源码解析及客户端实现示例
通过解析nghttp2库的源码和实现一个简单的HTTP/2客户端示例,本文详细介绍了HTTP/2的关键特性和nghttp2的核心实现。了解这些内容可以帮助开发者更好地理解HTTP/2协议,提高Web应用的性能和用户体验。对于实际开发中的应用,可以根据需要进一步优化和扩展代码,以满足具体需求。
1388 29
|
前端开发 数据安全/隐私保护 CDN
二次元聚合短视频解析去水印系统源码
二次元聚合短视频解析去水印系统源码
557 4
|
JavaScript 算法 前端开发
JS数组操作方法全景图,全网最全构建完整知识网络!js数组操作方法全集(实现筛选转换、随机排序洗牌算法、复杂数据处理统计等情景详解,附大量源码和易错点解析)
这些方法提供了对数组的全面操作,包括搜索、遍历、转换和聚合等。通过分为原地操作方法、非原地操作方法和其他方法便于您理解和记忆,并熟悉他们各自的使用方法与使用范围。详细的案例与进阶使用,方便您理解数组操作的底层原理。链式调用的几个案例,让您玩转数组操作。 只有锻炼思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~

热门文章

最新文章

推荐镜像

更多