Outre les outils basés sur l'interface graphique mentionnés dans les autres réponses, il existe quelques outils en ligne de commande qui peuvent transformer le code source du PDF original en une représentation différente qui vous permet d'inspecter le fichier (maintenant modifié) avec un éditeur de texte. Tous les outils ci-dessous fonctionnent sous Linux, Mac OS X, d'autres systèmes Unix ou Windows.
qpdf
(mon préféré)
Utilisez qpdf pour décompresser (la plupart) des flux d'objets et aussi disséquer ObjStm
en objets indirects individuels :
qpdf --qdf --object-streams=disable orig.pdf uncompressed-qpdf.pdf
qpdf
se décrit comme un outil qui fait "transformations structurelles et préservant le contenu des fichiers PDF". .
Ensuite, il suffit d'ouvrir + inspecter le uncompressed-qpdf.pdf
dans votre éditeur de texte préféré. La plupart des octets précédemment compressés (et donc binaires) seront désormais du texte brut.
mutool
Il y a aussi le mutool
qui est fourni avec l'application MuPDF Le visualiseur PDF (qui est un produit jumeau de Ghostscript, fabriqué par la même société), Artifex ). La commande suivante décompresse également les flux et les rend plus faciles à inspecter avec un éditeur de texte :
mutool clean -d orig.pdf uncompressed-mutool.pdf
podofouncompress
PoDoFo est une bibliothèque FreeSoftware/OpenSource permettant de travailler avec le format PDF et comprenant quelques outils en ligne de commande, notamment podofouncompress
. Utilisez-le comme ceci pour décompresser les flux PDF :
podofouncompress orig.pdf uncompressed-podofo.pdf
peepdf.py
PeePDF est un outil basé sur Python qui vous aide à explorer les fichiers PDF. Son but initial était la recherche et la dissection de logiciels malveillants basés sur le format PDF, mais je le trouve également utile pour étudier la structure de fichiers PDF totalement bénins.
Il peut être utilisé de manière interactive pour "parcourir" les objets et les flux contenus dans un PDF.
Je ne donnerai pas d'exemple d'utilisation ici, mais seulement un lien vers sa documentation :
pdfid.py
y pdf-parser.py
pdfid.py
y pdf-parser.py
sont deux Outils PDF de Didier Stevens écrit en Python.
Ils ont également pour mission d'aider à explorer malveillant PDFs -- mais je trouve aussi utile d'analyser la structure et le contenu de fichiers PDF bénins.
Voici un exemple de la manière dont j'extrairais le flux non compressé de l'objet PDF n° 5 dans un fichier *.dump :
pdf-parser.py -o 5 -f -d obj5.dump my.pdf
Notes finales
-
Veuillez noter que certaines parties binaires contenues dans un PDF ne sont pas nécessairement incompressibles (ou décodables en code ASCII lisible par l'homme), car elles sont intégrées et utilisées dans leur format natif à l'intérieur des PDF. Ces parties de PDF sont des images JPEG, des polices ou des profils de couleur ICC.
-
Si vous comparez les outils ci-dessus et les exemples en ligne de commande donnés, vous découvrirez qu'ils font PAS produisent tous des résultats identiques. L'effort de comparaison de leurs différences peut en soi vous aider à mieux comprendre la nature de la syntaxe et du format de fichier PDF.
0 votes
PDF Inspector est basé sur Java, donc multiplateforme.
2 votes
Mais il ne semble pas fonctionner sous Windows. Le jar ne fait rien quand on clique dessus. Lorsqu'il est appelé en ligne de commande, j'obtiens
no main manifest attribute, in PDF Document Inspector.jar
2 votes
@david.perez c'est basé sur java mais enveloppé par apple donc c'est une sorte de distribution réservée à apple. Il y a le bocal "PDF Document Inspector.app/Contents/Resources/Java/PDF Document Inspector.jar" mais il ne peut pas être démarré avec java -jar "PDF Document Inspector.jar". Il y a aussi beaucoup d'inclusions com.apple.cocoa.* qui sont spécifiques à la plateforme :(
1 votes
J'utilise maintenant avec succès iText Rups, multiplateforme et basé sur Java.