add the scripts
This commit is contained in:
parent
26501f220e
commit
fcecf1a04b
12 changed files with 490 additions and 0 deletions
133
cloakcatcher/main.py
Executable file
133
cloakcatcher/main.py
Executable file
|
|
@ -0,0 +1,133 @@
|
|||
# CloakCatcher v1.4.1
|
||||
# Made by user333_
|
||||
|
||||
print(r"""
|
||||
___ _ _ ___ _ _
|
||||
/ __\ | ___ __ _| | __ / __\__ _| |_ ___| |__ ___ _ __
|
||||
/ / | |/ _ \ / _` | |/ // / / _` | __/ __| '_ \ / _ \ '__|
|
||||
/ /___| | (_) | (_| | </ /__| (_| | || (__| | | | __/ |
|
||||
\____/|_|\___/ \__,_|_|\_\____/\__,_|\__\___|_| |_|\___|_|
|
||||
""")
|
||||
|
||||
from fetch_data import fetch_data
|
||||
from hash_data import hash_data
|
||||
from handle_input import handle_input
|
||||
|
||||
from sys import exit, stdout
|
||||
|
||||
config = handle_input()
|
||||
|
||||
USERNAME = config["username"]
|
||||
PASSWD = config["passwd"]
|
||||
ADDRESS = config["address"]
|
||||
PORT = config["port"]
|
||||
SERVLIST = config["serverlist_url"]
|
||||
|
||||
url = "http://teamacedia.baselinux.net:22222/" # DO NOT EDIT (unless TeamAcedia changes their server)
|
||||
login_url = "api/login/" #
|
||||
players_url = "api/server/players/" #
|
||||
|
||||
def main() -> 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()
|
||||
Loading…
Add table
Add a link
Reference in a new issue