60 lines
1.4 KiB
Python
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")
|