import random import subprocess from getopt import getopt from sys import argv from time import sleep from os import chdir from os.path import dirname from arangodb import db, get_profile, remove_profile from helpers import now def profile_generator(db, n): cursor = db.aql.execute( """ FOR doc IN @@col FILTER doc._to == 'members/krisjohngethin' RETURN doc._from """, bind_vars={"@col": "picture_reactions"}, ) count = 0 first_names = [] last_names = [] n = int(n) + 1 for doc in cursor: name = db.collection("members").get(doc)["name"] first_names.append(name[: name.find(" ")]) last_names.append(name[name.rfind(" ") :]) with open("data/passwords.txt") as f: words = [word for word in f.readlines()] with open("data/servers.txt") as f: servers = [] for line in f.readlines(): if "@" in line: line = line.strip() city = line[: line.find("@")].strip() if "WireGuard" in line and line.strip()[:2] in [ "gb", "us", ]: # "au", "ca" #För senare när det behövs line = line.strip() country_short = line[:2] server = line[: line.find("-")] city_short = city[city.find("(") + 1 : city.find(")")] server_name = [country_short, city_short, server + "-wireguard"] servers.append( { "server_city": city, "server": server + "-wg.socks5.mullvad.net:1080", "server_connect": server_name, } ) count = 0 for i in range(0, n - 1): name = ( first_names[random.randrange(0, len(first_names), 1)].strip() + " " + last_names[random.randrange(0, len(last_names), 1)].strip() ) print(name, end="\r") sleep(0.1) year = str(random.randrange(74, 90)) email = name.lower().replace(" ", ".") + year + "@outlook.com" pwd = "" for _ in range(0, random.randrange(3, 6)): w = words[random.randrange(0, 10000, 1)].strip() if random.randrange(0, 3) == 0: w = w.upper() pwd = pwd + "_" + w pwd = pwd.strip("_") + str(random.randrange(5, 35)) server_info = servers.pop(random.randrange(0, len(servers))) server = server_info["server"].strip() birthday = f"{year}-{random.randrange(1, 13)}-{random.randrange(1, 30)}" _key = server[: server.find("-")] doc = { "_id": "profiles/" + _key, "_key": _key, "name": name, "email": email, "pwd": pwd, "server": server, "server_connect": server_info["server_connect"], "birthday": birthday, "created": False, "in_use": False, } # Skriv till databasen (skriver inte profiler med servarar som redan används) try: db.insert_document("profiles", doc) count += 1 except: pass print(f"Skrev {count} profiler till databasen. ") def mullvad(server): """ Anslut till Mullvad-server. """ subprocess.run( [ "mullvad", "relay", "set", "location", server[0], server[1], server[2], ] ) connect_to_mullvad = subprocess.Popen(["mullvad", "connect"]) connect_to_mullvad.wait() sleep(3) def create_profile(): """ Supports during the creation of a profile """ arango_server = ["se", "sto", "se2-wireguard"] while True: mullvad(arango_server) # Hämta profil profile = get_profile(created=False) # Asnlut till profilens VPN-server mullvad(profile["server_connect"]) # Öppna Brave med Outlook och Facebook subprocess.run(["open", "-a", "Brave Browser", "https://outlook.com"]) # Printa användaruppgfifter för Outlook och Facebook print() print(profile["email"][: profile["email"].find("@")]) print(profile["pwd"]) print(profile["birthday"]) print(profile["name"]) print() print() print(profile["name"]) print(profile["email"]) print(profile["pwd"]) print(profile["birthday"]) user_input = input("Done/Next/Delete/Quit: ") user_input = user_input.lower() if user_input in ["done", "d", ""]: subprocess.run(["osascript", "-e", 'quit app "Brave Browser"']) sleep(1) profile["created"] = True mullvad(arango_server) sleep(3) db.update_document(profile) elif user_input in ["delete", "d"]: subprocess.run(["osascript", "-e", 'quit app "Brave Browser"']) sleep(1) mullvad(arango_server) blocked = remove_profile(profile) blocked['_id'] = 'block_created/' + now() blocked['key'] = now() db.insert_document("block_created", blocked) elif user_input in ["quit", "q"]: subprocess.run(["osascript", "-e", 'quit app "Brave Browser"']) sleep(1) mullvad(arango_server) sleep(3) exit() else: continue if __name__ == "__main__": print(__file__) # Säkerställ att arbetsmappen är samma som den där scriptet ligger chdir(dirname(__file__)) subprocess.run(['cd', '..']) argv = argv[1:] opts, args = getopt(argv, "cg:", ["create", "generate"]) for o, a in opts: if o in ["-g", "--generate"]: profile_generator(db, a) if o in ['-c', '--create']: create_profile()