Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
ail-typo-squatting — Générer une liste de domaines potentiels de typosquattage avec un moteur de permutation de noms de domaine pour alimenter AIL et d'autres systèmes. | Kitploit
Outils/GitHubGitHub/typosquatter/ail-typo-squatting
OSINT (Renseignement de Sources Ouvertes)ReconnaissanceCollecte d'InformationsRenseignement sur les MenacesAnalyse DNS
GitHubtyposquatter/ail-typo-squatting

ail-typo-squatting

Générer une liste de domaines potentiels de typosquattage avec un moteur de permutation de noms de domaine pour alimenter AIL et d'autres systèmes.

Voir le dépôt

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager
Site web
10897il y a 1 anVérifié par Kitploit

ail-typo-squatting

ail-typo-squatting est une bibliothèque Python permettant de générer une liste de domaines potentiels de typosquatting avec un moteur de permutation de noms de domaine pour alimenter AIL et d'autres systèmes.

L'outil peut être utilisé de manière autonome ou pour alimenter d'autres systèmes.

Si vous ne souhaitez pas utiliser la bibliothèque Python, https://typosquatting-finder.circl.lu/ est un service en ligne qui utilise cette bibliothèque.

Prérequis

  • Python 3.6+

  • bibliothèque inflect

  • pyyaml

  • tldextract

  • dnspython

Installation

Installation depuis les sources

ail-typo-squatting peut être installé avec poetry. Si vous n'avez pas poetry installé, vous pouvez faire la commande suivante curl -sSL https://install.python-poetry.org | python3 -.

root@kitploit:~
$ poetry install
$ poetry shell
$ cd ail-typo-squatting
$ python typo.py -h

Installation via pip

root@kitploit:~
$ pip3 install ail-typo-squatting

Utilisation

root@kitploit:~
dacru@dacru:~/git/ail-typo-squatting/bin$ python3 typo.py --help  
usage: typo.py [-h] [-v] [-dn DOMAINNAME [DOMAINNAME ...]] [-fdn FILEDOMAINNAME] [-o OUTPUT] [-fo FORMATOUTPUT] [-br] [-dnsr] [-dnsl] [-l LIMIT] [-var] [-ko] [-a] [-om] [-repe] [-repl] [-drepl] [-cho]
               [-add] [-md] [-sd] [-vs] [-ada] [-hg] [-ahg] [-cm] [-hp] [-wt] [-wsld] [-at] [-sub] [-sp] [-cdd] [-addns] [-uddns] [-ns] [-combo] [-ca]

optional arguments:
  -h, --help            show this help message and exit
  -v                    verbose, more display
  -dn DOMAINNAME [DOMAINNAME ...], --domainName DOMAINNAME [DOMAINNAME ...]
                        list of domain name
  -fdn FILEDOMAINNAME, --filedomainName FILEDOMAINNAME
                        file containing list of domain name
  -o OUTPUT, --output OUTPUT
                        path to ouput location
  -fo FORMATOUTPUT, --formatoutput FORMATOUTPUT
                        format for the output file, yara - regex - yaml - text. Default: text
  -br, --betterregex    Use retrie for faster regex
  -dnsr, --dnsresolving
                        resolve all variation of domain name to see if it's up or not
  -dnsl, --dnslimited   resolve all variation of domain name but keep only up domain in final result json
  -l LIMIT, --limit LIMIT
                        limit of variations for a domain name
  -var, --givevariations
                        give the algo that generate variations
  -ko, --keeporiginal   Keep in the result list the original domain name
  -a, --all             Use all algo
  -om, --omission       Leave out a letter of the domain name
  -repe, --repetition   Character Repeat
  -repl, --replacement  Character replacement
  -drepl, --doublereplacement
                        Double Character Replacement
  -cho, --changeorder   Change the order of letters in word
  -add, --addition      Add a character in the domain name
  -md, --missingdot     Delete a dot from the domain name
  -sd, --stripdash      Delete of a dash from the domain name
  -vs, --vowelswap      Swap vowels within the domain name
  -ada, --adddash       Add a dash between the first and last character in a string
  -hg, --homoglyph      One or more characters that look similar to another character but are different are called homogylphs
  -ahg, --all_homoglyph
                        generate all possible homoglyph permutations. Ex: circl.lu, e1rc1.lu
  -cm, --commonmisspelling
                        Change a word by is misspellings
  -hp, --homophones     Change word by an other who sound the same when spoken
  -wt, --wrongtld       Change the original top level domain to another
  -wsld, --wrongsld     Change the original second level domain to another
  -at, --addtld         Adding a tld before the original tld
  -sub, --subdomain     Insert a dot at varying positions to create subdomain
  -sp, --singularpluralize
                        Create by making a singular domain plural and vice versa
  -cdd, --changedotdash
                        Change dot to dash
  -addns, --adddynamicdns
                        Add dynamic dns at the end of the domain
  -uddns, --updatedynamicdns
                        Update dynamic dns warning list
  -ns, --numeralswap    Change a numbers to words and vice versa. Ex: circlone.lu, circl1.lu
  -combo                Combine multiple algo on a domain name
  -ca, --catchall       Combine with -dnsr. Generate a random string in front of the domain.

Exemple d'utilisation

  1. Création de variations pour ail-project.org et circl.lu, en utilisant tous les algorithmes.
root@kitploit:~
dacru@dacru:~/git/ail-typo-squatting/bin$ python3 typo.py -dn ail-project.org circl.lu -a -o .
  1. Création de variations pour un fichier contenant des noms de domaine, en utilisant l'omission de caractères - les sous-domaines - les traits d'union.
root@kitploit:~
dacru@dacru:~/git/ail-typo-squatting/bin$ python3 typo.py -fdn domain.txt -co -sub -hyp -o . -fo yara
  1. Création de variations pour ail-project.org et circl.lu, en utilisant tous les algorithmes et la résolution DNS.
root@kitploit:~
dacru@dacru:~/git/ail-typo-squatting/bin$ python3 typo.py -dn ail-project.org circl.lu -a -dnsr -o .
  1. Création de variations pour ail-project.org et affichage de l'algorithme qui génère la variation (uniquement pour le format texte).
root@kitploit:~
dacru@dacru:~/git/ail-typo-squatting/bin$ python3 typo.py -dn ail-project.org -a -o - -var

Utilisation comme bibliothèque

Pour exécuter tous les algorithmes

root@kitploit:~
from ail_typo_squatting import runAll
import math

resultList = list()
domainList = ["google.com"]
formatoutput = "yara"
pathOutput = "."
for domain in domainList:
    resultList = runAll(
        domain=domain, 
        limit=math.inf, 
        formatoutput=formatoutput, 
        pathOutput=pathOutput, 
        verbose=False, 
        givevariations=False,
        keeporiginal=False
    )

    print(resultList)
    resultList = list()

Pour exécuter un algorithme spécifique

root@kitploit:~
from ail_typo_squatting import formatOutput, omission, subdomain, addDash
import math

resultList = list()
domainList = ["google.com"]
limit = math.inf
formatoutput = "yara"
pathOutput = "."
for domain in domainList:
    resultList = omission(domain=domain, resultList=resultList, verbose=False, limit=limit, givevariations=False,  keeporiginal=False)

    resultList = subdomain(domain=domain, resultList=resultList, verbose=False, limit=limit, givevariations=False,  keeporiginal=False)

    resultList = addDash(domain=domain, resultList=resultList, verbose=False, limit=limit, givevariations=False,  keeporiginal=False)

    print(resultList)
    formatOutput(format=formatoutput, resultList=resultList, domain=domain, pathOutput=pathOutput, givevariations=False)

    resultList = list()

Exemple de sortie

Il y a 4 formats possibles pour le fichier de sortie :

  • text
  • yara
  • regex
  • sigma

Pour le fichier Text, chaque ligne est une variation.

root@kitploit:~
ail-project.org
il-project.org
al-project.org
ai-project.org
ailproject.org
ail-roject.org
ail-poject.org
ail-prject.org
ail-proect.org
ail-projct.org
ail-projet.org
ail-projec.org
aail-project.org
aiil-project.org
...

Pour le fichier Yara, chaque règle est une variation.

root@kitploit:~
rule ail-project_org {
    meta:
        domain = "ail-project.org"
    strings: 
        $s0 = "ail-project.org"
        $s1 = "il-project.org"
        $s2 = "al-project.org"
        $s3 = "ai-project.org"
        $s4 = "ailproject.org"
        $s5 = "ail-roject.org"
        $s6 = "ail-poject.org"
        $s7 = "ail-prject.org"
        $s8 = "ail-proect.org"
        $s9 = "ail-projct.org"
        $s10 = "ail-projet.org"
        $s11 = "ail-projec.org"
    condition:
         any of ($s*)
}

Pour le fichier Regex, chaque variation est transformée en regex et concaténée avec les autres pour ne former qu'une seule grande regex.

root@kitploit:~
ail\-project\.org|il\-project\.org|al\-project\.org|ai\-project\.org|ailproject\.org|ail\-roject\.org|ail\-poject\.org|ail\-prject\.org|ail\-proect\.org|ail\-projct\.org|ail\-projet\.org|ail\-projec\.org

Pour le fichier Sigma, chaque variation est listée sous la clé variations.

root@kitploit:~
title: ail-project.org
variations:
- ail-project.org
- il-project.org
- al-project.org
- ai-project.org
- ailproject.org
- ail-roject.org
- ail-poject.org
- ail-prject.org
- ail-proect.org
- ail-projct.org
- ail-projet.org
- ail-projec.org

Sortie DNS

Si la résolution DNS est sélectionnée, un fichier supplémentaire sera créé au format JSON.

Chaque clé correspond à une variation et peut avoir un champ "ip" si le nom de domaine a été résolu. Le champ "NotExist" sera présent à chaque fois avec une valeur booléenne pour déterminer si le domaine existe ou non.

root@kitploit:~
{
    "circl.lu": {
        "NotExist": false,
        "ip": [
            "185.194.93.14"
        ]
    },
    "ircl.lu": {
        "NotExist": true
    },
    "crcl.lu": {
        "NotExist": true
    },
    "cicl.lu": {
        "NotExist": true
    },
    "cirl.lu": {
        "NotExist": true
    },
    "circ.lu": {
        "NotExist": true
    },
    "ccircl.lu": {
        "NotExist": true
    },
    "ciircl.lu": {
        "NotExist": true
    },
    ...
}

Liste des algorithmes utilisés

Remerciements

Le projet a été cofinancé par CEF-TC-2020-2 - 2020-EU-IA-0260 - JTAN - Joint Threat Analysis Network.

Télécharger l’outil
AlgoDescription
AddDashCes typos sont créées en ajoutant un trait d'union entre le premier et le dernier caractère d'une chaîne.
AdditionCes typos sont créées en ajoutant un caractère au nom de domaine.
AddDynamicDnsCes typos sont créées en ajoutant un DNS dynamique à la fin du domaine d'origine.
AddTldCes typos sont créées en ajoutant un TLD avant le TLD correct. Exemple : google.com devient google.com.it
ChangeDotDashCes typos sont créées en remplaçant un point par un trait d'union.
ChangeOrderCes typos sont créées en changeant l'ordre des lettres dans chaque partie du domaine.
ComboCes typos sont créées en combinant plusieurs algorithmes. Par exemple, circl.lu devient cirl6.lu
CommonMisspellingCes typos sont créées en remplaçant un mot par sa faute d'orthographe. Plus de 8000 fautes d'orthographe courantes issues de Wikipédia. Par exemple, www.youtube.com devient www.youtub.com et www.abseil.com devient www.absail.com.
Double ReplacementCes typos sont créées en remplaçant des lettres identiques et consécutives du nom de domaine.
HomoglyphCes typos sont créées en remplaçant des caractères par d'autres caractères qui se ressemblent mais sont différents. Par exemple, le l minuscule ressemble au chiffre un, c'est-à-dire l vs 1. Par exemple, google.com devient goog1e.com.
HomophonesCes typos sont créées en remplaçant un mot par un autre qui se prononce de la même façon. Plus de 450 ensembles de mots qui se prononcent de la même façon. Par exemple, www.base.com devient www.bass.com.
MissingDotCes typos sont créées en supprimant un point du nom de domaine.
NumeralSwapCes typos sont créées en remplaçant un nombre par des mots et vice versa. Par exemple, circlone.lu devient circl1.lu.
OmissionCes typos sont créées en omettant une lettre du nom de domaine, une lettre à la fois.
RepetitionCes typos sont créées en répétant une lettre du nom de domaine.
ReplacementCes typos sont créées en remplaçant chaque lettre du nom de domaine.
StripDashCes typos sont créées en supprimant un trait d'union du nom de domaine.
SingularPluralizeCes typos sont créées en transformant un domaine singulier en pluriel et vice versa.
SubdomainCes typos sont créées en plaçant un point dans le nom de domaine afin de créer un sous-domaine. Exemple : google.com devient goo.gle.com
VowelSwapCes typos sont créées en échangeant les voyelles du nom de domaine, sauf pour la première lettre. Par exemple, www.google.com devient www.gaagle.com.
WrongTldCes typos sont créées en changeant le domaine de premier niveau d'origine par un autre. Par exemple, www.trademe.co.nz devient www.trademe.co.mz et www.google.com devient www.google.org. Utilise les 19 domaines de premier niveau les plus courants.
WrongSldCes typos sont créées en changeant le domaine de deuxième niveau d'origine par un autre. Par exemple, www.trademe.co.uk devient www.trademe.ac.uk et www.google.com restera www.google.com.