Oltre agli strumenti basati su GUI menzionati nelle altre risposte, ci sono alcuni strumenti a riga di comando che possono trasformare il codice sorgente PDF originale in una rappresentazione diversa che ti consente di ispezionare il file (ora modificato) con un editor di testo. Tutti gli strumenti seguenti funzionano su Linux, Mac OS X, altri sistemi Unix o Windows.
qpdf
(il mio preferito)
Usa qpdf per decomprimere (la maggior parte) dei flussi di ObjStm
oggetti e anche sezionare gli oggetti in singoli oggetti indiretti:
qpdf --qdf --object-streams=disable orig.pdf uncompressed-qpdf.pdf
qpdf
si descrive come uno strumento che esegue "trasformazioni strutturali che preservano il contenuto sui file PDF" .
Quindi apri e ispeziona il uncompressed-qpdf.pdf
file nel tuo editor di testo preferito. La maggior parte dei byte precedentemente compressi (e quindi binari) sarà ora testo normale.
mutool
C'è anche lo mutool
strumento della riga di comando che viene fornito in bundle con il visualizzatore PDF MuPDF (che è un prodotto gemello di Ghostscript, realizzato dalla stessa azienda, Artifex ). Il comando seguente decomprime anche i flussi e li rende più facili da ispezionare tramite un editor di testo:
mutool clean -d orig.pdf uncompressed-mutool.pdf
podofouncompress
PoDoFo è una libreria FreeSoftware / OpenSource per lavorare con il formato PDF e include alcuni strumenti a riga di comando, inclusopodofouncompress
. Usalo in questo modo per decomprimere flussi PDF:
podofouncompress orig.pdf uncompressed-podofo.pdf
peepdf.py
PeePDF è uno strumento basato su Python che ti aiuta a esplorare i file PDF. Il suo scopo originale era la ricerca e la dissezione di malware basato su PDF, ma lo trovo utile anche per indagare sulla struttura di file PDF completamente innocui.
Può essere utilizzato in modo interattivo per "sfogliare" gli oggetti e gli stream contenuti in un PDF.
Non fornirò un esempio di utilizzo qui, ma solo un collegamento alla sua documentazione:
pdfid.py
e pdf-parser.py
pdfid.py
e pdf-parser.py
sono due strumenti PDF di Didier Stevens scritti in Python.
Il loro background serve anche a esplorare PDF dannosi , ma trovo utile anche analizzare la struttura e il contenuto di file PDF dannosi .
Ecco un esempio di come estrarre il flusso non compresso dell'oggetto PDF n. 5 in un file * .dump:
pdf-parser.py -o 5 -f -d obj5.dump my.pdf
Note finali
Tieni presente che alcune parti binarie all'interno di un PDF non sono necessariamente non comprimibili (o decodificabili in codice ASCII leggibile dall'uomo), perché sono incorporate e utilizzate nel loro formato nativo all'interno dei PDF. Tali parti PDF sono immagini JPEG, caratteri o profili colore ICC.
Se confronti gli strumenti sopra e gli esempi della riga di comando forniti, scoprirai che NON producono tutti output identici. Lo sforzo di confrontarli per le loro differenze in sé può aiutarti a comprendere meglio la natura della sintassi e del formato del file PDF.