web-dev-qa-db-ja.com

PDFストリームをデコードするには?

/FlateDecodeを使用してエンコードされたPDFファイル内のストリームオブジェクトを分析したい。

PDFで使用されるこのようなエンコード(ASCII85decode、LZWDecode、RunlenghtDecodeなど)をデコードできるツールはありますか?

ストリームコンテンツはほとんどの場合PEファイル構造であり、PDFはおそらく悪用の後半で使用します。

また、PDFには2つのxrefテーブルがありますが、これは問題ありませんが、xrefに続く2つの%% EOFもあります。

これらの存在は大丈夫ですか? (注:2番目のxrefは、/prev名を使用して最初のxrefを指します。

このxrefは2番目の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 
トレーラー
> 
 startxref 
 46090 
 %% EOF 

2番目のxref

 xref 
 0 5 
 0000000000 65535 f 
 0000000010 00000 n 
 0000000067 00000 n 
 0000000136 00000 n 
 0000000373 00000 n 
 trailer 
> 
 startxref 
 429 
 %% EOF 
23
rebel87
  1. "2つのxrefテーブルと2つの%%EOF "?

    これだけでは、悪意のあるPDFファイル。ファイルが "インクリメンタルアップデートによって生成された場合、それぞれ2つ以上のインスタンスが存在する可能性があります。 機能。(各デジタル署名PDFファイルはそのようなものであり、Acrobatで変更され、 'Save' 'Save as ...'ボタン/メニューの代わりにボタン/メニューも同様です。)

  2. "圧縮されたPDF特定のオブジェクトからのストリームをデコードする方法"?

    Didier Stevens ' Python scriptpdf-parser.py。このコマンドラインツールを使用すると、任意のPDFオブジェクトのデコードされたストリームをファイルにダンプできます。PDFオブジェクト番号13のストリームをダンプするコマンドの例:

    pdf-parser.py -o 13 -f -d obj13.dump my.pdf
    
15
Kurt Pfeifle

[〜#〜] a [〜#〜]%%EOFコメントはファイルの最後に、他のコメントは%)で始まる行は、ファイル内の任意の場所に存在できます。はい、2 %%EOFコメントは完全に有効です。これは PDFリファレンス に文書化されています。 1.7 PDFリファレンスマニュアルの112ページのリファレンスマニュアルの例3.11で、記述した構造を持つ仕様のドキュメント化された例を確認してください。これはPDFファイルです増分更新されました。

PDFのより新しいバージョンは、それ自体が圧縮された相互参照ストリームを持つことができます。

PDFファイルをデコードする最も簡単な方法は、それを行うためのツールを使用することです。たとえば、MuPDFは "mutool clean -d <input pdf file> <output PDF file>"でこれを行うことができます(-d) PDFファイル内のすべての圧縮ストリーム。出力を新しいPDFファイルに書き込みます。

それ以外の場合は、FlateおよびLZW解凍にzlibのようなものを使用する必要があり、独自のRunLength解凍とASCIIHex85を記述する必要があると思います。画像もデコードしたい場合は、JBIG、JPEG、JPEG2000は言うまでもありません。

11
KenS

ツールに関しては、他の回答で述べられているように、ストリームを圧縮解除するために使用できるツールがいくつかあります(コマンドラインなど)。ただし、オブジェクトツリーをたどって圧縮ストリーム内の内容を簡単に確認できるようにすることでPDFファイルを簡単に検査できるツールがいくつかあります。私が使用した2つは:

1)callas pdfToolbox Desktop(注意、私はこの会社に関連しています)。 pdfToolboxには、「Explore PDF」オプションがあり、実際のページ演算子まで、ページに関連付けられたオブジェクトを表示できます。

2)Enfocus Browser。このツールを使用すると、PDFファイルのオブジェクトツリーのルートを開き、MacのFinderがファイルシステムで実行するのと非常によく似た方法でオブジェクト階層を表示できます。ブラウザは低レベルのオブジェクトを編集したり、新しいオブジェクトを作成したり、ストリームのコンテンツを変更したりして、PDFファイル(この場合は何をしているのか本当に知っているはずです)を編集できます。

以前のバージョンの回答で述べたように、Enfocus Browserはもはや利用できないと指摘されましたが、実際はそうです。ここからダウンロードするには、Enfocusアカウントを作成する必要があります。 https://www.enfocus.com/en/support/downloads/old-product-installers

4

[〜#〜] rups [〜#〜] を使用してPDFを分析し、エクスポートするか、すでにデコードされたストリームを見ることができます。%% EOFについてPDFに追加できる数だけ追加できます。

4
Paulo Soares