 The Ultimate URL Masking Tool - An open-source URL masking tool designed to help you Hide Phishing URLs and make them look legit using social engineering techniques.
#!/usr/bin/env python

import argparse
import pyshorteners
from urllib.parse import urlparse

twitter_url = 'https://spyboy.in/twitter'
discord = 'https://spyboy.in/Discord'
website = 'https://spyboy.in/'
blog = 'https://spyboy.blog/'
github = 'https://github.com/spyboy-productions/Facad1ng'

VERSION = '0.0.18'

R = '\033[31m'  # red
G = '\033[32m'  # green
C = '\033[36m'  # cyan
W = '\033[0m'   # white
Y = '\033[33m'  # yellow

banner = r'''                                               

███████╗ █████╗  ██████╗ █████╗ ██████╗  ██╗███╗   ██╗ ██████╗ 
██╔════╝██╔══██╗██╔════╝██╔══██╗██╔══██╗███║████╗  ██║██╔════╝ 
█████╗  ███████║██║     ███████║██║  ██║╚██║██╔██╗ ██║██║  ███╗
██╔══╝  ██╔══██║██║     ██╔══██║██║  ██║ ██║██║╚██╗██║██║   ██║
██║     ██║  ██║╚██████╗██║  ██║██████╔╝ ██║██║ ╚████║╚██████╔╝
╚═╝     ╚═╝  ╚═╝ ╚═════╝╚═╝  ╚═╝╚═════╝  ╚═╝╚═╝  ╚═══╝ ╚═════╝ 
    The Ultimate URL Masking Tool
'''


def print_banners():
    """
    prints the program banners
    """
    print(f'{R}{banner}{W}\n')
    print(f'{G}╰➤ {C}Version      : {W}{VERSION}')
    print(f'{G}╰➤ {C}Creator      : {W}Spyboy')
    print(f'{G}╰➤ {C}Twitter      : {W}{twitter_url}')
    print(f'{G}╰➤ {C}Discord      : {W}{discord}')
    print(f'{G}╰➤ {C}Website      : {W}{website}')
    print(f'{G}╰➤ {C}Blog         : {W}{blog}')
    print(f'{G}╰➤ {C}Github       : {W}{github}\n')


def main():
    print_banners()
    print(f"{Y}[~] {G}Please Wait, It Is Masking & Shortening Your Link.")

    parser = argparse.ArgumentParser(description='Facad1ng: The Ultimate URL Masking Tool')
    parser.add_argument('original_url', help='The original URL (e.g., https://www.example.com)')
    parser.add_argument('custom_domain', help='Your custom domain (e.g., example.com)')
    parser.add_argument('phishing_keywords', help='Phishing keywords (e.g., free-stuff-login)')
    args = parser.parse_args()

    original_url = args.original_url
    custom_domain = args.custom_domain
    phishing_keywords = args.phishing_keywords

    # Input validation functions
    def validate_web_url(url):
        if not url.startswith("https://") or url.endswith("/"):
            raise ValueError("Invalid URL format. It should start with 'https://' and not end with '/'.")

    def validate_custom_domain(domain):
        if "://" in domain or "/" in domain:
            raise ValueError("Invalid custom domain. It should be just the domain name without 'http://' or '/'.")

    def format_phish_keywords(keywords):
        return "-".join(keywords.split())

    try:
        validate_web_url(original_url)
        validate_custom_domain(custom_domain)
        phishing_keywords = format_phish_keywords(phishing_keywords)
        if " " in phishing_keywords:
            raise ValueError("Phishing keywords should not contain spaces. Use '-' to separate them.")
    except ValueError as e:
        print(f"Error: {e}")
        exit(1)

    # Prepare the data for the request
    data = {
        'url': original_url,
        'shorturl': '',
    }

    # Shorten the original URL with multiple URL shorteners
    shorteners = [
        pyshorteners.Shortener().tinyurl,
        pyshorteners.Shortener().osdb,
        pyshorteners.Shortener().dagd,
        pyshorteners.Shortener().clckru,
    ]
    short_urls = [shortener.short(original_url) for shortener in shorteners]

    # Mask the URLs with custom domain and phishing keywords
    def mask_url(domain, keyword, url):
        parsed_url = urlparse(url)
        return f"{parsed_url.scheme}://{domain}-{keyword}@{parsed_url.netloc}{parsed_url.path}"

    # Print the results
    print(f"\n{Y}Original URL:{W}", original_url, "\n")
    print(f"[~] Masked URL (using multiple shorteners):")
    for i, short_url in enumerate(short_urls):
        masked_url = mask_url(custom_domain, phishing_keywords, short_url)
        print(f"╰➤ Shortener {i + 1}: {masked_url}")


if __name__ == '__main__':
    main()

PyPI/Facad1ng/main.py
spyboy-productions/Facad1ng
from setuptools import setup, find_packages
import codecs
import os

here = os.path.abspath(os.path.dirname(__file__))

with codecs.open(os.path.join(here, "README.md"), encoding="utf-8") as fh:
    long_description = "\n" + fh.read()

VERSION = '0.0.18'
DESCRIPTION = 'The Ultimate URL Masking Tool'

# Setting up
setup(
    name="Facad1ng",
    version=VERSION,
    author="Spyboy",
    author_email="spyboyblog@gmail.com",
    description=DESCRIPTION,
    long_description=open('README.md').read(),
    long_description_content_type='text/markdown',
    packages=find_packages(),
    url="https://github.com/spyboy-productions/Facad1ng",
    Homepage="https://github.com/spyboy-productions/Facad1ng",
    Repository="https://github.com/spyboy-productions/Facad1ng",
    license="MIT",
    install_requires=['pyshorteners', 'argparse'],
    keywords=['masking', 'phishing', 'url-shortener', 'mask-phishing-url', 'hide-phishing-link', 'url-phishing'],
    classifiers=[
        "Development Status :: 1 - Planning",
        "Intended Audience :: Developers",
        "Programming Language :: Python :: 3",
        "Operating System :: Unix",
        "Operating System :: MacOS :: MacOS X",
        "Operating System :: Microsoft :: Windows",
    ],
    entry_points={
    'console_scripts': [
        'Facad1ng = Facad1ng.main:main',
    ],
},    
)
PyPI/setup.py
spyboy-productions/Facad1ng
#Facad1ng: The Ultimate URL Masking Tool

import pyshorteners
from urllib.parse import urlparse

twitter_url = 'https://spyboy.in/twitter'
discord = 'https://spyboy.in/Discord'
website = 'https://spyboy.in/'
blog = 'https://spyboy.blog/'
github = 'https://github.com/spyboy-productions/Facad1ng'

VERSION = '1.0.0'

R = '\033[31m'  # red
G = '\033[32m'  # green
C = '\033[36m'  # cyan
W = '\033[0m'   # white
Y = '\033[33m'  # yellow

banner = r'''                                               

███████╗ █████╗  ██████╗ █████╗ ██████╗  ██╗███╗   ██╗ ██████╗ 
██╔════╝██╔══██╗██╔════╝██╔══██╗██╔══██╗███║████╗  ██║██╔════╝ 
█████╗  ███████║██║     ███████║██║  ██║╚██║██╔██╗ ██║██║  ███╗
██╔══╝  ██╔══██║██║     ██╔══██║██║  ██║ ██║██║╚██╗██║██║   ██║
██║     ██║  ██║╚██████╗██║  ██║██████╔╝ ██║██║ ╚████║╚██████╔╝
╚═╝     ╚═╝  ╚═╝ ╚═════╝╚═╝  ╚═╝╚═════╝  ╚═╝╚═╝  ╚═══╝ ╚═════╝ 
    The Ultimate URL Masking Tool
'''

def print_banners():
    """
    prints the program banners
    """
    print(f'{R}{banner}{W}\n')
    print(f'{G}╰➤ {C}Version      : {W}{VERSION}')
    print(f'{G}╰➤ {C}Creator      : {W}Spyboy')
    print(f'{G}╰➤ {C}Twitter      : {W}{twitter_url}')
    print(f'{G}╰➤ {C}Discord      : {W}{discord}')
    print(f'{G}╰➤ {C}Website      : {W}{website}')
    print(f'{G}╰➤ {C}Blog         : {W}{blog}')
    print(f'{G}╰➤ {C}Github       : {W}{github}\n')

################
print_banners()

# Initialize the URL shorteners
s = pyshorteners.Shortener()

# Add the additional URL shortener to the list
shorteners = [
    s.tinyurl,
    s.osdb,
    s.dagd,
    s.clckru,
]

# Input validation functions
def validate_web_url(url):
    if not url.startswith("https://") or url.endswith("/"):
        raise ValueError("Invalid URL format. It should start with 'https://' and not end with '/'.")

def validate_custom_domain(domain):
    if "://" in domain or "/" in domain:
        raise ValueError("Invalid custom domain. It should be just the domain name without 'http://' or '/'.")

def format_phish_keywords(keywords):
    return "-".join(keywords.split())

# Input from the user with validation
while True:
    web_url = input(f"{G}Enter the original link {W}(ex: https://www.ngrok.com): {W}")
    try:
        validate_web_url(web_url)
        break
    except ValueError as e:
        print(e)

while True:
    custom_domain = input(f"\n{Y}Enter your custom domain {W}(ex: gmail.com): {W}")
    try:
        validate_custom_domain(custom_domain)
        break
    except ValueError as e:
        print(e)

while True:
    phish = input(f"\n{C}Enter phishing keywords {W}(ex: free-stuff, login): {W}")
    phish = format_phish_keywords(phish)
    if " " not in phish:
        break
    else:
        print("Phishing keywords should not contain spaces. Use '-' to separate them.")

# Prepare the data for the request
data = {
    'url': web_url,
    'shorturl': '',
}

# Shorten the original URL with multiple URL shorteners
short_urls = [shortener.short(web_url) for shortener in shorteners]

# Mask the URLs with custom domain and phishing keywords
def mask_url(domain, keyword, url):
    # Use urlparse to properly split the URL
    parsed_url = urlparse(url)

    # Reconstruct the URL with the custom domain and phishing keyword
    return f"{parsed_url.scheme}://{domain}-{keyword}@{parsed_url.netloc}{parsed_url.path}"

# Print the results
print(f"\n{Y}Original URL:{W}", web_url, "\n")
print(f"{G}[~] {R}Masked URL (using multiple shorteners):{W}")
for i, short_url in enumerate(short_urls):
    masked_url = mask_url(custom_domain, phish, short_url)
    print(f"{G}╰➤ {C}Shortener {W} {i + 1}: {masked_url}")

facad1ng.py
spyboy-productions/Facad1ng