Files
srab/sploits/common/__init__.py
2025-11-26 21:32:41 +03:00

119 lines
2.8 KiB
Python

import json
import random
import sys
import requests
HOST = sys.argv[1]
PORT = 1337
BASE = f"http://{HOST}:{PORT}"
def random_string(length=8):
letters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
return ''.join(random.choice(letters) for _ in range(length))
def register_teacher(
first_name,
last_name,
password,
username,
education="Pony",
middle_name="Автотестович",
):
url = f"{BASE}/api/users"
data = {
"имя": first_name,
"фамилия": last_name,
"отчество": middle_name,
"образование": education,
"пароль": password,
"повтор пароля": password,
}
response = requests.post(url, data=json.dumps(data, ensure_ascii=False))
if response.status_code != 201:
print(
f"Failed to register teacher: {response.status_code} "
f"{response.text}"
)
sys.exit(1)
data = response.json()
return (username, password, data["идентификатор"])
def register_random_teacher():
first_name = random_string()
last_name = random_string()
password = random_string()
username = f"{first_name}.{last_name}"
return register_teacher(first_name, last_name, password, username)
def create_class(teacher_credentials):
headers = get_auth_headers(teacher_credentials)
url = f"{BASE}/api/classes"
data = {
"номер": 11,
"буква": "Б",
}
response = requests.post(
url,
data=json.dumps(data, ensure_ascii=False),
headers=headers
)
if response.status_code != 201:
print(
f"Failed to create class: {response.status_code} {response.text}"
)
sys.exit(1)
class_info = response.json()
return class_info["идентификатор"]
def create_student(teacher_credentials):
headers = get_auth_headers(teacher_credentials)
password = random_string()
url = f"{BASE}/api/students"
data = {
"имя": random_string(),
"фамилия": random_string(),
"отчество": "Автотестович",
"снилс": random_string(),
"паспорт": random_string(),
"пароль": password,
"повтор пароля": password,
}
response = requests.post(
url,
data=json.dumps(data, ensure_ascii=False),
headers=headers
)
if response.status_code != 201:
print(
f"Failed to create student: {response.status_code} {response.text}"
)
sys.exit(1)
class_info = response.json()
return class_info["идентификатор"]
def get_auth_headers(teacher_credentials):
return {
"Authorization": (
f"Basic {teacher_credentials[0]} {teacher_credentials[1]}"
)
}