Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
ツール/GitHubGitHub/typosquatter/ail-typo-squatting
OSINT (オープンソースインテリジェンス)偵察情報収集脅威インテリジェンスDNS分析
GitHubtyposquatter/ail-typo-squatting

ail-typo-squatting

ドメイン名パーミュテーションエンジンを使用して潜在的なタイポスクワッティングドメインのリストを生成し、AILや他のシステムに供給する。

リポジトリを見る
108971年前Kitploit レビュー済み

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有
ウェブサイト

ail-typo-squatting

ail-typo-squatting は、ドメイン名置換エンジンを使用して潜在的なタイポスクワッティングドメインのリストを生成し、AIL や他のシステムに供給する Python ライブラリです。

このツールは、スタンドアロンツールとしても、他のシステムに供給するためにも使用できます。

Python ライブラリを使用したくない場合は、https://typosquatting-finder.circl.lu/ がこのライブラリを使用したオンラインサービスです。

要件

  • Python 3.6+

  • inflect ライブラリ

  • pyyaml

  • tldextract

  • dnspython

インストール

ソースからのインストール

ail-typo-squatting は poetry でインストールできます。poetry がインストールされていない場合は、次のコマンドを実行してください: curl -sSL https://install.python-poetry.org | python3 -。

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

pip インストール

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

使用方法

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.

使用例

  1. 全アルゴリズムを使用して、ail-project.org と circl.lu のバリエーションを作成します。
root@kitploit:~
dacru@dacru:~/git/ail-typo-squatting/bin$ python3 typo.py -dn ail-project.org circl.lu -a -o .
  1. ドメイン名を含むファイルのバリエーションを、文字省略(omission)・サブドメイン(subdomain)・ハイフネーション(hyphenation)を使用して作成します。
root@kitploit:~
dacru@dacru:~/git/ail-typo-squatting/bin$ python3 typo.py -fdn domain.txt -co -sub -hyp -o . -fo yara
  1. 全アルゴリズムと DNS 解決を使用して、ail-project.org と circl.lu のバリエーションを作成します。
root@kitploit:~
dacru@dacru:~/git/ail-typo-squatting/bin$ python3 typo.py -dn ail-project.org circl.lu -a -dnsr -o .
  1. ail-project.org のバリエーションを作成し、そのバリエーションを生成したアルゴリズムを出力します(テキスト形式のみ)。
root@kitploit:~
dacru@dacru:~/git/ail-typo-squatting/bin$ python3 typo.py -dn ail-project.org -a -o - -var

ライブラリとしての使用

全アルゴリズムを実行する場合

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

特定のアルゴリズムを実行する場合

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

出力例

出力ファイルには 4 つの形式 が利用可能です:

  • text
  • yara
  • regex
  • sigma

テキスト ファイルの場合、各行がバリエーションです。

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

Yara ファイルの場合、各ルールがバリエーションです。

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

Regex ファイルの場合、各バリエーションは正規表現に変換され、他のバリエーションと連結されて 1 つの大きな正規表現になります。

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

Sigma ファイルの場合、各バリエーションは 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

DNS 出力

DNS 解決が選択された場合、追加のファイルが JSON 形式で作成されます。

各キーはバリエーションで、ドメイン名が解決された場合は "ip" フィールドを持つことがあります。また、ドメインが存在するかどうかを判定するため、毎回 "NotExist" フィールドがブール値で含まれます。

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

使用されるアルゴリズムの一覧

謝辞

このプロジェクトは、CEF-TC-2020-2 - 2020-EU-IA-0260 - JTAN - Joint Threat Analysis Network によって共同資金提供を受けています。

ツールをダウンロード
アルゴリズム説明
AddDashこれらのタイポは、文字列の最初と最後の文字の間にダッシュを追加することで作成されます。
Additionこれらのタイポは、ドメイン名に文字を追加することで作成されます。
AddDynamicDnsこれらのタイポは、元のドメインの末尾に動的 DNS を追加することで作成されます。
AddTldこれらのタイポは、正しい TLD の前に TLD を追加することで作成されます。例: google.com は google.com.it になります。
ChangeDotDashこれらのタイポは、ドットをダッシュに変更することで作成されます。
ChangeOrderこれらのタイポは、ドメインの各部分の文字の順序を変更することで作成されます。
Comboこれらのタイポは、複数のアルゴリズムを組み合わせることで作成されます。例: circl.lu は cirl6.lu になります。
CommonMisspellingこれらのタイポは、単語をよくある綴り間違いに変更することで作成されます。Wikipedia にある 8000 以上の一般的な綴り間違いを使用します。例: www.youtube.com は www.youtub.com に、www.abseil.com は www.absail.com になります。
Double Replacementこれらのタイポは、ドメイン名内の同一文字が連続する箇所を置換することで作成されます。
Homoglyphこれらのタイポは、文字を似ているが異なる別の文字に置換することで作成されます。例えば、小文字の l は数字の 1 に似ています(例: l と 1)。例: google.com は goog1e.com になります。
Homophonesこれらのタイポは、単語を発音が同じ別の単語に変更することで作成されます。発音が同じ単語の組が 450 以上あります。例: www.base.com は www.bass.com になります。
MissingDotこれらのタイポは、ドメイン名からドットを削除することで作成されます。
NumeralSwapこれらのタイポは、数字を単語に、またはその逆に変更することで作成されます。例: circlone.lu は circl1.lu になります。
Omissionこれらのタイポは、ドメイン名の文字を一度に 1 文字ずつ省略することで作成されます。
Repetitionこれらのタイポは、ドメイン名の文字を繰り返すことで作成されます。
Replacementこれらのタイポは、ドメイン名の各文字を置換することで作成されます。
StripDashこれらのタイポは、ドメイン名からダッシュを削除することで作成されます。
SingularPluralizeこれらのタイポは、単数形のドメインを複数形に、またはその逆にすることで作成されます。
Subdomainこれらのタイポは、ドメイン名にドットを配置してサブドメインを作成することで作成されます。例: google.com は goo.gle.com になります。
VowelSwapこれらのタイポは、ドメイン名内の母音を、最初の文字を除いて交換することで作成されます。例: www.google.com は www.gaagle.com になります。
WrongTldこれらのタイポは、元のトップレベルドメインを別のものに変更することで作成されます。例: www.trademe.co.nz は www.trademe.co.mz に、www.google.com は www.google.org になります。最も一般的な 19 のトップレベルドメインを使用します。
WrongSldこれらのタイポは、元のセカンドレベルドメインを別のものに変更することで作成されます。例: www.trademe.co.uk は www.trademe.ac.uk になり、www.google.com は www.google.com のままです。