Pourquoi un PDF contient des scripts
PDF prend en charge JavaScript depuis Acrobat 3. C'est ce qui permet à un formulaire d'additionner une colonne, de refuser une date mal saisie ou de griser un champ tant qu'une case n'est pas cochée. C'est aussi ce qui rend un PDF malveillant intéressant à envoyer.
La plupart des outils qui prétendent détecter le JavaScript d'un PDF ne regardent que /Names /JavaScript. C'est le magasin au niveau du document et, dans un vrai formulaire d'entreprise, il est souvent vide. Le code intéressant est rattaché à des champs précis.
Tous les endroits examinés
/Names /JavaScript— l'arbre de noms du niveau document. C'est un arbre, pas une liste : un outil qui ne lit que le tableau racine ne trouve rien dans un fichier riche en scripts./OpenAction— s'exécute dès l'ouverture, avant que vous ayez lu un mot.- Actions supplémentaires du document — avant fermeture, avant et après enregistrement, avant et après impression.
- Actions de page — à l'ouverture et à la fermeture de la page.
- Actions d'annotation — l'action
/Ad'un lien ou d'un bouton, plus entrée et sortie de souris, appui, relâchement, prise et perte de focus. - Actions de champ de formulaire — frappe, format, validation et calcul. C'est là que se trouve réellement le code d'un formulaire qui fait quelque chose.
/AcroForm /CO— l'ordre de calcul, qui décide lequel de deux totaux dépendants l'emporte.
Les chaînes d'actions via /Next sont suivies : s'arrêter au premier maillon revient à lire la partie inoffensive et à manquer le relais.
Des observations, pas des verdicts
Des appels comme app.launchURL, this.submitForm, this.exportDataObject, Net.HTTP, eval et de longues suites d'échappements \uNNNN sont signalés comme des raisons de lire le script. Aucun ne prouve quoi que ce soit : une note de frais légitime appelle submitForm, un modèle légitime appelle util.printf. Le signalement dit où regarder.
Rien n'est exécuté
Les scripts sont lus dans le graphe d'objets sous forme de texte et affichés. Ils ne sont jamais évalués, jamais injectés dans la page, jamais téléchargés. Copiez-en un, enregistrez-le en .js, ou récupérez l'ensemble dans une archive ZIP avec un rapport JSON.
Confidentialité
Le fichier est analysé entièrement dans votre navigateur et n'est jamais téléversé — ce qui compte quand le fichier examiné est justement celui auquel vous ne faites pas confiance.
Tiny Online Tools







