124-webapp/register_user.py
2025-11-10 15:24:10 +01:00

60 lines
1.4 KiB
Python

#!/usr/bin/env python3
"""
Register a user on Matrix server using shared secret
"""
import hmac
import hashlib
import json
import requests
# Get nonce
nonce_response = requests.get("http://localhost:8008/_synapse/admin/v1/register")
nonce = nonce_response.json()["nonce"]
print(f"Got nonce: {nonce[:20]}...")
# Registration details
username = "einszwovier"
password = "einszwo4"
admin = False
shared_secret = "D2mw3LqNKe98ga-pYO1l5KbXf^jgx&s5yjq&ipAGjln:AzLag8"
# Generate MAC
mac = hmac.new(
key=shared_secret.encode('utf8'),
digestmod=hashlib.sha1,
)
mac.update(nonce.encode('utf8'))
mac.update(b"\x00")
mac.update(username.encode('utf8'))
mac.update(b"\x00")
mac.update(password.encode('utf8'))
mac.update(b"\x00")
mac.update(b"notadmin" if not admin else b"admin")
mac_str = mac.hexdigest()
# Register user
data = {
"nonce": nonce,
"username": username,
"password": password,
"admin": admin,
"mac": mac_str
}
response = requests.post(
"http://localhost:8008/_synapse/admin/v1/register",
json=data
)
print(f"\nRegistration response: {response.status_code}")
print(json.dumps(response.json(), indent=2))
if response.status_code == 200:
print(f"\n✅ User registered successfully!")
print(f"User ID: {response.json()['user_id']}")
print(f"Access Token: {response.json()['access_token']}")
else:
print(f"\n❌ Registration failed")