PDF对象之间或%%EOF之后的隐写术



1)我看到有些人在PDF对象之间隐藏数据。他们说这种方法有效,但最大的缺点是acrobat阅读器在关闭窗口时要求重新保存文件。

我不明白在PDF对象之间隐藏信息是什么意思。我需要你的帮助:)

2) 我还看到一些人在%%EOF之后隐藏信息,并被告知这不是一个解决方案,因为签名没有应用于元数据,而元数据需要一个功能。

此外,我不明白他们在这个主题中对元数据的意思是什么?

我参考了这个链接如何在PDF文件中隐藏文本?

致问候,

李斯特。

1)我看到有些人在PDF对象之间隐藏数据。他们说这种方法有效,但最大的缺点是acrobat阅读器在关闭窗口时要求重新保存文件

我不明白在PDF对象之间隐藏信息是什么意思

通常,您的PDF是一系列PDF对象,前面有识别数字和交叉参考,将这些数字映射到它们在PDF:中的位置

...
2 0 obj
/WinAnsiEncoding
endobj
3 0 obj
<<
/Type /Font
/Subtype /Type1
/BaseFont /Courier
/Name /F001
/Encoding 2 0 R
>>
endobj
4 0 obj
<<
/Type /Font
/Subtype /Type1
/BaseFont /Courier-Bold
/Name /F002
/Encoding 2 0 R
>>
....
xref
0 17
0000000000 65535 f
0000014476 00000 n
0000000017 00000 n
0000000052 00000 n
0000000205 00000 n
...

当PDF解析器解析对象(例如对象2)时,它们通常只在交叉引用中查找相关值(如果是对象2,则为17),并开始读取字节17处的文件,首先需要对象和生成号(20),然后是标签obj;他们解析该标记之后的所有内容,直到匹配的endobj标记,然后停止。(事实上,在某些情况下,它有点扭曲,但这是一般的想法。)

因此,有些人认为在一个PDF对象的endobj和下一个对象的对象编号之间添加他们的秘密数据是个好主意,比如:

2 0 obj
/WinAnsiEncoding
endobj
HERE ARE MY VERY SECRET VERY HIDDEN DATA, PROBABLY ENCRYPTED ETC
3 0 obj

现在,一些PDF读者确实意识到有一些垃圾字节,并提出在没有它们的情况下保存文件。

2)我还看到一些人在%%EOF之后被用来隐藏信息,并被告知这不是一个解决方案,因为签名没有应用于元数据,而元数据需要一个功能

大多数PDF阅读器会忽略标记后的一些垃圾数据,因为在过去很长一段时间里,一些PDF生成或传输过程会在那里留下一些额外的垃圾。

...
%%EOF
AGAIN SOME SECRET DATA

然而,当他们自己操作PDF时,例如在签名时,PDF阅读器可能会继续操作,并根据PDF规范扔掉所有不存在的东西。或者,在签名的情况下,它们可能会将尾部字节保留在原来的位置,然后在它们之后集成签名。一些程序在文件末尾期望这些额外的数据,但之后可能再也找不到它们了,因为它们现在就在里面。

我也不明白他们在这个主题中对元数据的意思是什么

有些人实际上使用这样的机制来添加后期处理步骤所需的信息。例如,创建一些PDF发票的过程可能会在文件末尾添加发送PDF的地址和要支付的金额,然后对PDF进行更多处理,例如审查或存档,并在某个最终过程中将其发送给收件人。

审查步骤可能会根据最后添加的金额而有所不同;也许价值超过1000美元的销售额必须由专门的个人结清。

发送过程还可以使用文件结束后的额外数据来将文件发送给接收方。

某些文档的此类数据有时被称为元数据。

最新更新