Générez des variantes de typosquatting d'un domaine à la manière de dnstwist et vérifiez lesquelles se résolvent dans le DNS.
Détecteur d'homoglyphes
L'outil lui-même est en anglais ; cette page vous l'explique dans votre langue.
Utilisez Détecteur d'homoglyphes
Fonctionnalités
Collez un domaine, une URL ou un texte pour voir chaque label en Unicode et en punycode, l'écriture et le prototype UTS #39 de chaque caractère, et savoir si le nom mélange des écritures ou se lit comme un autre nom ASCII.
Tout se passe entièrement dans votre navigateur : aucune des données que vous saisissez n'est transmise.
Comment utiliser Détecteur d'homoglyphes
- Collez le nom. Collez un domaine, une URL, une adresse e-mail, plusieurs lignes ou un message entier. Les formes désamorcées comme hxxps:// et [.] sont acceptées, et les labels xn-- sont décodés.
- Ajoutez le vrai domaine (facultatif). Tapez le domaine attendu dans Compare with the real domain (comparer avec le vrai domaine), par exemple le vrai domaine de votre banque.
- Lancez la vérification. La vérification s'exécute pendant la saisie, ou appuyez sur Entrée ou sur Check. Maj+Entrée ajoute une nouvelle ligne.
- Lisez le verdict. L'encadré coloré indique Lookalike risk, Check this, Looks clean ou Notes, avec une ligne par constat. Un message contenant plusieurs hôtes donne un tableau avec un résultat par hôte.
- Repérez les lettres suspectes. Les caractères suspects sont marqués dans le domaine mis en évidence. Le tableau Characters liste chacun avec son point de code, son écriture et la lettre ASCII qu'il imite.
- Copiez ou transmettez. Copiez la forme Unicode ou punycode, ou utilisez Send to… pour consulter le domaine dans DNS over HTTPS Lookup ou Abuse Contact Lookup.
Exemple
Sosie cyrillique en punycode
xn--80ak6aa92e.exampleLookalike risk: Label "аррӏе" is written in Cyrillic but reads as the ASCII name "apple" (whole-script confusable).
Highlighted domain
аррӏе.example
Unicode form
аррӏе[.]example
Punycode (ACE) form
xn--80ak6aa92e[.]example
RESTRICTION LEVEL
Single Script
SCRIPTS
Cyrillic, Latin
READS AS
apple[.]example
Labels
UNICODE ACE SCRIPTS MIXED RESTRICTION LEVEL SKELETON
аррӏе xn--80ak6aa92e Cyrillic no Single Script apple
example example Latin no ASCII-Only ASCII only
Characters
CHAR CODE POINT SCRIPT UTS #39 PROTOTYPE ID STATUS FLAG
а U+0430 Cyrillic a (U+0061) Allowed looks like ASCII
р U+0440 Cyrillic p (U+0070) Allowed looks like ASCII
р U+0440 Cyrillic p (U+0070) Allowed looks like ASCII
ӏ U+04CF Cyrillic l (U+006C) Allowed looks like ASCII
е U+0435 Cyrillic e (U+0065) Allowed looks like ASCII
e U+0065 Latin itself Allowed ASCII
x U+0078 Latin itself Allowed ASCII
a U+0061 Latin itself Allowed ASCII
m U+006D Latin rn (U+0072 U+006E) Allowed ASCII
p U+0070 Latin itself Allowed ASCII
l U+006C Latin itself Allowed ASCII
e U+0065 Latin itself Allowed ASCII
Comparison with apple[.]example
Confusable: аррӏе[.]example and apple[.]example have the same UTS #39 skeleton, so they can look identical.
SKELETON OF THE INPUT
apple[.]exarnple
SKELETON OF APPLE[.]EXAMPLE
apple[.]exarnpleSe décode en аррӏе.example : les cinq lettres sont cyrilliques et se lisent apple ; le label est donc signalé comme confusable d'écriture entière (whole-script) et chaque caractère est marqué. Load example place aussi apple.example dans le champ de comparaison, qui a le même squelette.
Ce qu'il vérifie
| Signal | Ce que cela signifie |
|---|---|
| Écritures mixtes dans un label | Du latin mélangé à du cyrillique ou du grec dans un même label s'affiche en rouge. Les mélanges acceptés par UTS #39, comme le latin avec le japonais, sont seulement notés, sauf si un caractère ressemble à de l'ASCII. |
| Sosie d'écriture entière | Toutes les lettres proviennent d'un autre alphabet, mais le label se lit comme un mot ASCII, comme le cyrillique аррӏе pour apple. Ce cas s'affiche en rouge. |
| Différence d'accent uniquement | Un label comme wället se lit wallet si l'on ne remarque pas l'accent. C'est un constat jaune Check this. |
| Prototype UTS #39 | Le tableau Characters montre quelle lettre ou quel chiffre ASCII chaque caractère imite, avec la mention looks like ASCII, non-ASCII ou ASCII. |
| Niveau de restriction | De ASCII-Only à Unrestricted, selon UTS #39. Minimally Restrictive et Unrestricted s'affichent en rouge, car ils autorisent les mélanges les plus risqués. |
| Caractères invisibles et mappage du navigateur | Si le navigateur devait réécrire l'hôte, par exemple en supprimant un caractère de largeur nulle ou en transformant des lettres pleine chasse en lettres normales, vous obtenez un avertissement jaune et un champ What the browser opens (ce qu'ouvre le navigateur). Si le navigateur ne peut pas mapper l'hôte, les caractères invisibles qu'il contient s'affichent en rouge. |
| Points inhabituels | Les points idéographiques ou pleine chasse (U+3002, U+FF0E, U+FF61) fonctionnent comme des points dans les navigateurs, mais peuvent échapper aux filtres qui comparent du texte brut. |
| Punycode défectueux | Un label xn-- qui ne se décode pas correctement s'affiche en rouge. |
| Astuces ASCII | Les noms en ASCII pur avec 0 pour o, 1 pour l, rn pour m ou vv pour w reçoivent une note. Utilisez le champ de comparaison pour confirmer. |
| Résultat de la comparaison | Same domain, Confusable (same skeleton), Confusable once case is ignored, Differs only by accents, 1 or 2 edits away (likely typo-squat) ou Not confusable. |
D'autres exemples
а cyrillique dans un nom latin, comparé avec wallet.example
wаllet.exampleLookalike risk : le label « wаllet » mélange des écritures (Latin + Cyrillic, niveau de restriction : Minimally Restrictive) ; 1 caractère ressemble à de l'ASCII et il se lit « wallet ». Forme punycode xn--wllet-4ve[.]example. Comparaison : Confusable, les deux squelettes sont wallet[.]exarnple.
Chiffre 1 au lieu de l, comparé avec wallet.example
wa1let.exampleLooks clean : ASCII-only host: no homoglyphs, no mixed scripts. Une note indique que le label contient « 1 » (peut se lire l). Comparaison : Confusable, car les deux noms ont le squelette wallet[.]exarnple.
Lettre accentuée, comparée avec wallet.example
wället.exampleCheck this : le label « wället » se lit « wallet » si l'on ne remarque pas les accents. Forme punycode xn--wllet-gra[.]example, niveau de restriction Single Script. Comparaison : Differs only by accents.
FAQ
Que teste le détecteur ?
Chaque label est décodé depuis le punycode avec un décodeur RFC 3492, chaque caractère reçoit son écriture Unicode et son prototype UTS #39 tiré de confusables.txt (Unicode 18.0), et le label fait l'objet d'une vérification d'écritures mixtes et d'un niveau de restriction UTS #39. Les labels dont toutes les lettres se lisent comme de l'ASCII sont signalés comme confusables d'écriture entière.
Peut-il manquer un sosie ou signaler un vrai domaine ?
Oui. UTS #39 couvre les caractères qui se ressemblent, pas les fautes de frappe : une lettre inversée ou manquante n'apparaît que par la distance d'édition dans le champ de comparaison, et les astuces ASCII comme rn pour m sont listées en notes. Des noms non latins légitimes, par exemple certains domaines cyrilliques sous .рф, peuvent se lire comme des mots latins et être signalés.
Quelque chose est-il envoyé sur le réseau ?
Non. Le décodage, la détection d'écriture et la table des confusables s'exécutent sur cette page ; la forme punycode provient de l'analyseur d'URL de votre propre navigateur, et aucune requête DNS n'est effectuée.
Que signifient les niveaux de restriction ?
Ils proviennent d'Unicode UTS #39. ASCII-Only utilise uniquement de l'ASCII. Single Script utilise un seul système d'écriture. Highly Restrictive autorise le latin avec le chinois, le japonais ou le coréen. Moderately Restrictive autorise le latin avec une autre écriture courante, sauf le cyrillique et le grec. Minimally Restrictive autorise les autres mélanges, et Unrestricted signifie qu'un caractère est hors du profil d'identifiant.
Pourquoi l'outil indique-t-il que le navigateur ouvre un autre nom ?
Les navigateurs normalisent les noms d'hôte avec le mappage UTS #46. Celui-ci transforme notamment les lettres pleine chasse en lettres normales et supprime les caractères invisibles comme l'espace de largeur nulle et le trait d'union conditionnel. Le lien ouvre alors le nom mappé, tandis que le texte tel qu'écrit peut encore échapper aux filtres qui comparent des chaînes brutes.
Combien d'hôtes puis-je vérifier à la fois ?
Collez une liste ou un message et l'outil extrait jusqu'à 50 noms d'hôte, en ignorant les adresses IP. Le texte est analysé jusqu'à 20 000 caractères, et les mots non ASCII situés hors des noms d'hôte sont aussi vérifiés.