You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
195 lines
5.9 KiB
195 lines
5.9 KiB
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()
|
|
|