it-swarm.com.de

Wie dekodiere ich einen PDF Stream?

Ich möchte ein Stream-Objekt in einer PDF Datei analysieren, die mit /FlateDecode Codiert ist.

Gibt es Tools, mit denen eine solche Kodierung (ASCII85decode, LZWDecode, RunlenghtDecode usw.) in PDFs dekodiert werden kann?

Der Stream-Inhalt ist höchstwahrscheinlich eine PE-Dateistruktur, die das PDF wahrscheinlich später im Exploit verwenden wird.

Es gibt auch zwei xref Tabellen in der PDF, das ist in Ordnung, aber auch zwei %% EOF, die dem xref folgen.

Ist das Vorhandensein dieser alles in Ordnung? (Hinweis: Das zweite xref zeigt mit dem Namen /prev Auf das erste xref.

Dieses xref bezieht sich auf das zweite 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 
 Anhänger 
> 
 startxref 
 46090 
 %% EOF 

das zweite xref:

 xref 
 0 5 
 0000000000 65535 f 
 0000000010 00000 n 
 0000000067 00000 n 
 0000000136 00000 n 
 0000000373 00000 n 
 Anhänger 
> 
 Startxref 
 429 
 %% EOF 
23
rebel87
  1. "Zwei xref Tabellen und zwei %%EOF "?

    Dies allein ist kein Hinweis auf eine böswillige PDF Datei. Es können zwei oder sogar mehr Instanzen vorhanden sein, wenn die Datei über das "inkrementelle Update" generiert wurde. Funktion. (Jede digital signierte PDF= Datei ist so, und jede Datei, die in Acrobat geändert und mit 'Speichern' gespeichert wurde. Taste/Menü anstelle der 'Speichern unter ...' Taste/Menü ist auch so.)

  2. "Wie dekodiere ich einen komprimierten PDF von einem bestimmten Objekt"?

    Schauen Sie sich Didier Stevens ' Python script pdf-parser.py. Mit diesem Befehlszeilentool können Sie den dekodierten Stream eines beliebigen PDF= Objektes in eine Datei kopieren. Beispielbefehl zum Kopieren des Streams von PDF Objektnummer 13:

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

[~ # ~] ein [~ # ~] %%EOF Kommentar sollte am Ende der Datei stehen, alle anderen Kommentare ( Jede Zeile, die mit % beginnt, kann an einer beliebigen Stelle in der Datei vorhanden sein. Also ja, 2 %%EOF Kommentare sind vollkommen gültig. Dies ist in der PDF-Referenz dokumentiert. Ein dokumentiertes Beispiel in der Spezifikation mit der von Ihnen beschriebenen Struktur finden Sie in Beispiel 3.11 im 1.7 PDF Referenzhandbuch auf Seite 112. Dies ist eine PDF Datei, die wurde inkrementell aktualisiert.

Beachten Sie, dass neuere Versionen von PDF Querverweisdatenströme enthalten können, die selbst komprimiert sind.

Der einfachste Weg, eine PDF Datei zu dekodieren, ist die Verwendung eines dafür vorgesehenen Tools. MuPDF kann dies zum Beispiel mit "mutool clean -d <input pdf file> <output PDF file>" Tun und dekomprimiert (-d) alle komprimierten Streams in einer PDF Datei und schreibe die Ausgabe in eine neue PDF Datei.

Andernfalls müssen Sie so etwas wie zlib für die Flate- und LZW-Dekomprimierung verwenden. Sie müssen Ihre eigene RunLength-Dekomprimierung sowie, wie ich finde, ASCIIHex85 schreiben. Ganz zu schweigen von JBIG, JPEG und JPEG2000, wenn Sie die Bilder auch decodieren möchten.

11
KenS

In Bezug auf Tools gibt es, wie in anderen Antworten angegeben, eine Reihe von Tools, die zum Dekomprimieren von Streams (über die Befehlszeile oder auf andere Weise) verwendet werden können. Es gibt jedoch auch eine Reihe von Werkzeugen, mit denen sich eine PDF) - Datei leicht inspizieren lässt, indem Sie im Objektbaum nachsehen können, was in komprimierten Streams enthalten ist :

1) callas pdfToolbox Desktop (Vorsicht, ich bin mit diesem Unternehmen verbunden). pdfToolbox verfügt über die Option "Explore PDF" (PDF durchsuchen), mit der Sie die mit einer Seite verknüpften Objekte bis hin zu den tatsächlichen Seitenoperatoren anzeigen können.

2) Enfocus Browser. Mit diesem Tool können Sie das Stammverzeichnis des Objektbaums einer PDF) - Datei öffnen und die Objekthierarchie auf eine Weise darstellen, die der von Finder auf Mac mit Dateisystemen sehr ähnlich ist Sie können PDF Dateien bearbeiten (Sie sollten wirklich wissen, was Sie in diesem Fall tun)), indem Sie die Objekte auf niedriger Ebene bearbeiten, neue Objekte erstellen oder den Inhalt von Streams ändern.

Mir wurde darauf hingewiesen, dass Enfocus Browser nicht mehr verfügbar ist, wie ich in der vorherigen Version meiner Antwort gesagt habe, aber tatsächlich. Sie müssen lediglich ein Enfocus-Konto erstellen, um es herunterzuladen: https://www.enfocus.com/en/support/downloads/old-product-installers

4

Sie können RUPS verwenden, um PDF) zu analysieren und den bereits dekodierten Stream zu exportieren oder einfach nur anzusehen Sie können beliebig viele Anhänge an die PDF-Datei anhängen.

4
Paulo Soares