Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
ail-typo-squatting — Gerar lista de domínios potenciais de typosquatting com mecanismo de permutação de nomes de domínio para alimentar o AIL e outros sistemas. | Kitploit
Ferramentas/GitHubGitHub/typosquatter/ail-typo-squatting
OSINT (Inteligência de Fontes Abertas)ReconhecimentoColeta de InformaçõesInteligência de AmeaçasAnálise de DNS
GitHubtyposquatter/ail-typo-squatting

ail-typo-squatting

Gerar lista de domínios potenciais de typosquatting com mecanismo de permutação de nomes de domínio para alimentar o AIL e outros sistemas.

Ver Repositório

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar
Site
10897há 1 anoRevisado pelo Kitploit

ail-typo-squatting

ail-typo-squatting é uma biblioteca Python para gerar listas de potenciais domínios de typo squatting com um motor de permutação de nomes de domínio para alimentar o AIL e outros sistemas.

A ferramenta pode ser usada como uma ferramenta autónoma ou para alimentar outros sistemas.

Se não quiser utilizar a biblioteca Python, https://typosquatting-finder.circl.lu/ é um serviço online que utiliza esta biblioteca.

Requisitos

  • Python 3.6+

  • biblioteca inflect

  • pyyaml

  • tldextract

  • dnspython

Instalação

Instalação a partir do código-fonte

ail-typo-squatting pode ser instalado com poetry. Se não tiver poetry instalado, pode executar o seguinte curl -sSL https://install.python-poetry.org | python3 -.

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

Instalação via pip

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

Utilização

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.

Exemplo de utilização

  1. Criação de variações para ail-project.org e circl.lu, utilizando todos os algoritmos.
root@kitploit:~
dacru@dacru:~/git/ail-typo-squatting/bin$ python3 typo.py -dn ail-project.org circl.lu -a -o .
  1. Criação de variações para um ficheiro que contém nomes de domínio, utilizando omissão de caracteres - subdomínio - hifenização.
root@kitploit:~
dacru@dacru:~/git/ail-typo-squatting/bin$ python3 typo.py -fdn domain.txt -co -sub -hyp -o . -fo yara
  1. Criação de variações para ail-project.org e circl.lu, utilizando todos os algoritmos e resolução de DNS.
root@kitploit:~
dacru@dacru:~/git/ail-typo-squatting/bin$ python3 typo.py -dn ail-project.org circl.lu -a -dnsr -o .
  1. Criação de variações para ail-project.org e indicar o algoritmo que gera a variação (apenas para formato de texto).
root@kitploit:~
dacru@dacru:~/git/ail-typo-squatting/bin$ python3 typo.py -dn ail-project.org -a -o - -var

Utilização como biblioteca

Para executar todos os algoritmos

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()

Para executar um algoritmo específico

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()

Exemplo de saída

Existem 4 formatos possíveis para o ficheiro de saída:

  • text
  • yara
  • regex
  • sigma

Para o ficheiro Text, cada linha é uma variação.

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
...

Para o ficheiro Yara, cada regra é uma variação.

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*)
}

Para o ficheiro Regex, cada variação é transformada em regex e concatenada com as demais para formar apenas uma 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

Para o ficheiro Sigma, cada variação é listada sob a chave 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

Saída DNS

Se a resolução de DNS for selecionada, será criado um ficheiro adicional em formato JSON

cada chave é uma variação e pode ter um campo "ip" se o nome de domínio tiver sido resolvido. O campo "NotExist" estará sempre presente com um valor booleano para determinar se o domínio existe ou não.

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
    },
    ...
}

Lista de algoritmos utilizados

Agradecimentos

O projeto foi cofinanciado pelo programa CEF-TC-2020-2 - 2020-EU-IA-0260 - JTAN - Joint Threat Analysis Network.

Baixar ferramenta
AlgoritmoDescrição
AddDashEstes erros de digitação são criados adicionando um hífen entre o primeiro e o último caractere de uma string.
AdditionEstes erros de digitação são criados ao adicionar caracteres ao nome de domínio.
AddDynamicDnsEstes erros de digitação são criados adicionando um DNS dinâmico no final do domínio original.
AddTldEstes erros de digitação são criados adicionando um TLD antes do TLD correto. Exemplo: google.com torna-se google.com.it
ChangeDotDashEstes erros de digitação são criados alterando um ponto para um hífen.
ChangeOrderEstes erros de digitação são criados alterando a ordem das letras em cada parte do domínio.
ComboEstes erros de digitação são criados combinando múltiplos algoritmos. Por exemplo, circl.lu torna-se cirl6.lu
CommonMisspellingEstes erros de digitação são criados substituindo uma palavra pela sua ortografia incorreta. Mais de 8000 erros ortográficos comuns da Wikipédia. Por exemplo, www.youtube.com torna-se www.youtub.com e www.abseil.com torna-se www.absail.com.
Double ReplacementEstes erros de digitação são criados substituindo letras idênticas e consecutivas do nome de domínio.
HomoglyphEstes erros de digitação são criados substituindo caracteres por outros que parecem semelhantes, mas são diferentes. Um exemplo é que o l minúsculo parece-se com o numeral um, ex: l vs 1. Por exemplo, google.com torna-se goog1e.com.
HomophonesEstes erros de digitação são criados substituindo uma palavra por outra que soa igual quando falada. Mais de 450 conjuntos de palavras que soam igual quando faladas. Por exemplo, www.base.com torna-se www.bass.com.
MissingDotEstes erros de digitação são criados ao eliminar um ponto do nome de domínio.
NumeralSwapEstes erros de digitação são criados alterando um número para palavras e vice-versa. Por exemplo, circlone.lu torna-se circl1.lu.
OmissionEstes erros de digitação são criados omitindo uma letra do nome de domínio, uma letra de cada vez.
RepetitionEstes erros de digitação são criados repetindo uma letra do nome de domínio.
ReplacementEstes erros de digitação são criados substituindo cada letra do nome de domínio.
StripDashEstes erros de digitação são criados ao eliminar um hífen do nome de domínio.
SingularPluralizeEstes erros de digitação são criados tornando um domínio singular plural e vice-versa.
SubdomainEstes erros de digitação são criados colocando um ponto no nome de domínio para criar um subdomínio. Exemplo: google.com torna-se goo.gle.com
VowelSwapEstes erros de digitação são criados trocando as vogais dentro do nome de domínio, exceto a primeira letra. Por exemplo, www.google.com torna-se www.gaagle.com.
WrongTldEstes erros de digitação são criados alterando o domínio de topo original para outro. Por exemplo, www.trademe.co.nz torna-se www.trademe.co.mz e www.google.com torna-se www.google.org. Utiliza os 19 domínios de topo mais comuns.
WrongSldEstes erros de digitação são criados alterando o domínio de segundo nível original para outro. Por exemplo, www.trademe.co.uk torna-se www.trademe.ac.uk e www.google.com continuará a ser www.google.com .