Skip to main content

openSquat - Detection of domain squatting, typosquatting, IDN homograph attacks, and phishing threats

Project description

openSquat Logo

openSquat Core

Python 3.8+ License: GPL v3 GitHub issues GitHub stars


📑 Table of Contents


🎯 What is openSquat?

openSquat is an Open Source Intelligence (OSINT) security tool that identifies cyber squatting threats targeting your brand or domains:

Threat Type Description
🎣 Phishing Fraudulent domains mimicking your brand
🔤 Typosquatting Domains with common typos (e.g., gooogle.com)
🌐 IDN Homograph Look-alike characters from other alphabets
👥 Doppelgänger Domains containing your brand name
🔀 Bitsquatting Single-bit errors in domain names

🔓 Open-Core Model

openSquat follows an open-core model:

  • Core detection engine — Open source and community-driven
  • Advanced capabilities — Delivered through commercial intelligence services

This model enables transparency and community collaboration while supporting the scale, reliability, and operational requirements of enterprise use.


✨ Key Features

  • 📅 Daily NRD feeds — Automatic newly registered domain updates
  • 🔍 Similarity detection — Levenshtein distance algorithm
  • 🛡️ VirusTotal integration — Check domain reputation
  • 🌐 Quad9 DNS validation — Identify malicious domains
  • 📜 Certificate Transparency — Monitor SSL/TLS certificates
  • 📊 Multiple output formats — TXT, JSON, CSV

🚀 Quick Start

Install via pip (recommended)

pip install opensquat
opensquat -k keywords.txt

Or clone the repository

git clone https://github.com/atenreiro/opensquat
cd opensquat
pip install -r requirements.txt
python opensquat.py -k keywords.txt

📦 Requirements

  • Python 3.8+
  • Dependencies: confusable_homoglyphs, homoglyphs, colorama, requests, dnspython, beautifulsoup4

📖 Usage

Basic Commands

# Default run
opensquat

# Show all options
opensquat -h

# Use custom keywords file
opensquat -k my_keywords.txt

Validation Options

# DNS validation via Quad9
opensquat --dns

# Check Certificate Transparency logs
opensquat --ct

# Scan for open ports (80/443)
opensquat --portcheck

# Cross-reference phishing databases
opensquat --phishing results.txt

Output Formats

# Save as JSON
opensquat -o results.json -t json

# Save as CSV
opensquat -o results.csv -t csv

Confidence Levels

Level Flag Description
0 -c 0 Very high (fewer results, high accuracy)
1 -c 1 High (default)
2 -c 2 Medium
3 -c 3 Low
4 -c 4 Very low (more results, more false positives)

⚙️ Configuration

Keywords File (keywords.txt)

# Lines starting with # are comments
mycompany
mybrand
myproduct

VirusTotal API Key (vt_key.txt)

To use --vt or --subdomains, add your API key:

# Get your free API key at https://www.virustotal.com
your_api_key_here

🤖 Automation

Run daily via crontab:

# Every day at 8 AM (feeds update ~7:30 AM UTC)
0 8 * * * /path/to/opensquat/opensquat.py -k keywords.txt -o results.json -t json

📋 CLI Reference

Argument Default Description
-k, --keywords keywords.txt Keywords file to search
-o, --output results.txt Output filename
-t, --type txt Output format: txt, json, csv
-c, --confidence 1 Confidence level (0-4)
-d, --domains Use local domain file instead of downloading
-u, --url opensquat feed URL to download domain feed
--dns Enable Quad9 DNS validation
--doppelganger Doppelganger-only mode (keyword in domain + reachability check)
--ct Search Certificate Transparency logs
--phishing Cross-reference phishing database
--subdomains Fetch subdomains via VirusTotal
--portcheck Check for open ports 80/443
--vt Validate against VirusTotal

🤝 Contributing

We welcome contributions! See our Contributing Guide for details.

  • 🐛 Report bugs via GitHub Issues
  • 💡 Request features by opening an issue
  • 🔧 Submit PRs for bug fixes or enhancements

👤 Author

Andre TenreiroLinkedIn · PGP Key


📜 License

This project is licensed under the GNU GPL v3.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

opensquat-2.2.1.tar.gz (32.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

opensquat-2.2.1-py3-none-any.whl (35.0 kB view details)

Uploaded Python 3

File details

Details for the file opensquat-2.2.1.tar.gz.

File metadata

  • Download URL: opensquat-2.2.1.tar.gz
  • Upload date:
  • Size: 32.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.15

File hashes

Hashes for opensquat-2.2.1.tar.gz
Algorithm Hash digest
SHA256 3014afc41edeb2b47da9e35227ad30642c237f6960d5c3b78f713f1dc7404f52
MD5 1b6d9741429cf50fa55904b069f349a1
BLAKE2b-256 9ac7ab40f3b036b790d8a8dd5c73390b228b9e4338921557234609aa0d425cc2

See more details on using hashes here.

File details

Details for the file opensquat-2.2.1-py3-none-any.whl.

File metadata

  • Download URL: opensquat-2.2.1-py3-none-any.whl
  • Upload date:
  • Size: 35.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.15

File hashes

Hashes for opensquat-2.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 056896557316f0a301be2187139224a99f45c48024ec69fca7b0154c10d94cbe
MD5 d3522225c495d2bc671f0c0abe9bb2fd
BLAKE2b-256 c48034960b07f20827f8e16dd79df76e4cb67fda3f07b0d9bbc3534e48f35967

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page