Skip to content

Exposing IDN vulnerabilities, one domain at a time. Generate homograph domain names with Cyrillic lookalikes and PunyCode for security research and phishing analysis.

License

Notifications You must be signed in to change notification settings

franckferman/PunyPwn

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Contributors Forks Stargazers License

PunyPwn Logo

PunyPwn

Exposing IDN vulnerabilities, one domain at a time.
Generate homograph domain names with Cyrillic lookalikes and PunyCode for security research and phishing analysis.

📜 Table of Contents

Click to collapse/expand
  1. 📖 About
  2. 🛠️ Installation
  3. 🎮 Usage
  4. 🤝 Contributing
  5. ⚖️ Legal Disclaimer
  6. 🌠 Star Evolution
  7. 📜 License
  8. 📞 Contact

📖 About

PunyPwn: Exposing IDN Homograph Vulnerabilities, One Domain at a Time.

PunyPwn is a lightweight Python tool designed to generate IDN homograph attacks (Punycode) against domain names.

This project was originally built for my own needs, both for personal research and professional assessments related to domain name spoofing and phishing risks.

Over time, I decided to share this small piece of code openly, thinking it might save time for others or serve as a starting point for more advanced projects.

⚙️ PunyPwn is intentionally minimalistic and makes no claims of being a complete solution — but if it can help or inspire, feel free to use, adapt, or improve it!

⚙️ Features of PunyPwn

  • ✅ Automatic generation of homograph domains using Cyrillic characters visually similar to Latin letters (e.g., 'a', 'e', 'o', 'c', 'p', 'x'...).
  • ✅ Punycode conversion of generated domains, ready for phishing risk analysis or security testing.
  • ✅ Smart substitution system to avoid unrealistic or ugly substitutions — focusing only on credible and visually deceptive homographs.
  • ✅ Full word and combinatorial substitutions: automatically explores all possible combinations based on available Cyrillic equivalents (no guesswork).
  • ✅ Support for multiple TLDs (default: .com, .fr, .net, .org — easily extendable by user).

(🔼 Back to top)

🚀 Installation

Before getting started, make sure you meet the following prerequisites.

Prerequisites

  1. Python 3: Ensure Python 3 is installed on your system.

  2. Dependencies: PunyPwn requires only one external library: idna (used for Punycode conversion). Install required dependencies using pip install idna or pip install -r requirements.txt.

⚠️ Note: PunyPwn has been tested on Python 3.11.10 under Linux. While it might work on other versions or operating systems, compatibility is officially guaranteed only for this specific setup.

Installation Methods

  1. Clone the repository via Git:
git clone https://github.com/franckferman/PunyPwn.git
  1. Direct download of the script (without Git): If you only need the script without cloning the entire repository:
curl -O https://raw.githubusercontent.com/franckferman/PunyPwn/stable/src/PunyPwn.py

(🔼 Back to top)

🎮 Usage

Make sure to adjust the commands based on your local installation of PunyPwn.

Quick Start

To display the full help menu and explore available options:

python3 PunyPwn.py --help

Example Commands

🔍 Basic domain homograph generation:

Task Command
Generate all possible homographs with default settings (TLDs: .com, .fr, .net, .org) python3 PunyPwn.py --domain example
Generate homographs with up to 2 substitutions python3 PunyPwn.py --domain example --level 2
Generate homographs using only highly realistic substitutions python3 PunyPwn.py --domain example --style very-realistic

🌐 Customize TLDs:

Task Command
Generate homographs only for .com and .fr domains python3 PunyPwn.py --domain example --tlds .com .fr
Add additional TLDs such as .io and .xyz python3 PunyPwn.py --domain example --tlds .com .io .xyz

🎯 Combining options for fine-tuned results:

Task Command
Generate realistic homographs with a maximum of 3 substitutions for .com and .net only python3 PunyPwn.py --domain example --style realistic --level 3 --tlds .com .net
Aggressive homograph generation without substitution limit, using all available homoglyphs python3 PunyPwn.py --domain example --style any

(🔼 Back to top)

🤝 Contributing

We truly appreciate and welcome community involvement. Your contributions, feedback, and suggestions play a crucial role in improving the project for everyone. If you're interested in contributing or have ideas for enhancements, please feel free to open an issue or submit a pull request on our GitHub repository. Every contribution, no matter how big or small, is highly valued and greatly appreciated!

(🔼 Back to top)

⚖️ Legal Disclaimer

PunyPwn is a security research and educational tool, created to demonstrate IDN (Internationalized Domain Name) homograph vulnerabilities and raise awareness about potential phishing risks associated with lookalike domains.

⚠️ Warning: This tool is provided for ethical, academic, and research purposes only. Do not use PunyPwn to impersonate, phish, harass, or defraud individuals, organizations, or entities. Misuse of this tool could violate local, national, or international laws. You are solely responsible for how you use this tool.

If you are unsure about the legality of your intended use of this tool, consult a qualified legal professional or competent authority before proceeding.

🔹 By using PunyPwn, you acknowledge that you have read, understood, and agreed to this disclaimer.

(🔼 Back to top)

🌠 Star Evolution

Explore the star history of this project and see how it has evolved over time:

Star History Chart

Your support is greatly appreciated. We're grateful for every star! Your backing fuels our passion. ✨

(🔼 Back to top)

📚 License

This project is licensed under the GNU Affero General Public License, Version 3.0. For more details, please refer to the LICENSE file in the repository: Read the license on GitHub

(🔼 Back to top)

📞 Contact

ProtonMail LinkedIn Twitter

(🔼 Back to top)