如何解码PDF流?

reb*_*l87 23 pdf adobe exploit reverse-engineering malware

我想分析使用编码的PDF文件中的流对象/FlateDecode.

是否有任何工具可以解码PDF中使用的此类编码(ASCII85decode,LZWDecode,RunlenghtDecode等)?

流内容很可能是PE文件结构,PDF可能稍后将在漏洞利用中使用.

此外,xrefPDF中有两个表,这是正常的,但也有两个%%的EOF xref.

这些存在是否正常?(注意:第二个xref指向xref使用/prev名称的第一个.

xref指的是第二个xref:

xref 
5 6
0000000618 00000 n
0000000658 00000 n
0000000701 00000 n
0000000798 00000 n
0000045112 00000 n
0000045219 00000 n
1 1
0000045753 00000 n
3 1
0000045838 00000 n
trailer
>
startxref
46090
%%EOF

第二个xref:

xref
0 5
0000000000 65535 f
0000000010 00000 n
0000000067 00000 n
0000000136 00000 n
0000000373 00000 n
trailer
>
startxref
429
%%EOF

Kur*_*fle 15

  1. "两xref桌两桌%%EOF"?

    仅此一项并不表示存在恶意PDF文件.如果文件是通过"增量更新"功能生成的,则每个实例可以有两个甚至更多实例.(每个经过数字签名的PDF文件都是这样的,每个在Acrobat中更改并使用"保存"按钮/菜单而不是"另存为..."按钮/菜单保存的文件也是这样.)

  2. "如何解码来自特定对象的压缩PDF流"?

    看看Didier Stevens的 Python脚本pdf-parser.py.使用此命令行工具,您可以将任何PDF对象的已解码流转储到文件中.转储PDF对象编号13的流的示例命令:

    pdf-parser.py -o 13 -f -d obj13.dump my.pdf
    
    Run Code Online (Sandbox Code Playgroud)


Ken*_*enS 11

一个 %%EOF注释应该出现在文件,任何其他意见结束(任何开头的行%)可能会出现在文件中的任何一点.所以是的,2条%%EOF评论完全有效.这在PDF参考中有记录.有关具有您描述的结构的规范中的文档示例,请参阅第112页的1.7 PDF参考手册中的示例3.11.这是一个已逐步更新的PDF文件.

请注意,更新版本的PDF可以具有交叉引用流,这些流本身是压缩的.

解码PDF文件的最简单方法是使用一个用于执行此操作的工具,例如,MuPDF可以通过" mutool clean -d <input pdf file> <output PDF file>"解压缩(-d)解压缩()PDF文件中的所有压缩流并将输出写入新的PDF文件.

否则你将需要使用类似zlib的Flate和LZW解压缩,你需要编写自己的RunLength解压缩以及我认为的ASCIIHex85.如果你想要解码图像,更不用说JBIG,JPEG和JPEG2000.

  • 一些相当愚蠢的人投票支持OP问题,并投票决定关闭它.请提出问题以平衡这个... (3认同)

Pau*_*res 5

您可以使用RUPS分析 PDF 并导出,或者仅查看已解码的流。关于 %%EOF,您可以拥有与 PDF 中追加的数量一样多的内容。