""" TEE OFF ADMIN GENERATOR v1.9 (DEBUG & BULLETPROOF) --------------------------------------------------------------------------- FUNKSJON: Genererer SQL-kommando for administrator. STATUS: Beholder TRUNCATE for feilsøking, men sikrer SQL-innsendingen. --------------------------------------------------------------------------- """ import pyotp from passlib.hash import pbkdf2_sha256 import getpass import sys def generate_admin(): print("\n" + "="*50) print(" TEE OFF ADMIN GENERATOR v1.9 (DEBUG MODE)") print("="*50) username = input("Brukernavn (f.eks Envide Webutvikling): ").strip() email = input("E-post: ").strip() # Sikre mot SQL-feil hvis navnet/eposten inneholder apostrof safe_username = username.replace("'", "''") safe_email = email.replace("'", "''") # Passord-verifisering while True: password = getpass.getpass("Skriv inn passord: ") password_confirm = getpass.getpass("Gjenta passord: ") if password == password_confirm: if len(password) < 8: print("⚠️ Advarsel: Passordet bør være minst 8 tegn.") print(f"\n[DEBUG] Passord akseptert. Lengde: {len(password)} tegn.") break else: print("❌ Passordene er ikke like. Prøv igjen.\n") otp_secret = pyotp.random_base32() print("⏳ Genererer PBKDF2-hash...") password_hash = pbkdf2_sha256.hash(password) print(f"[DEBUG] Hash generert. Lengde: {len(password_hash)} tegn.") print("\n✅ GENERERING VELLYKKET!") print("-" * 50) print("SLIK LEGGER DU INN BRUKEREN TRYGT:") print("-" * 50) print("1. Gå inn i databasen:") print(" docker exec -it teeoff_db psql -U teeoff_admin -d teeoff") print("\n2. Lim inn disse to linjene nøyaktig slik de står:") print("TRUNCATE admins;") print(f"INSERT INTO admins (username, email, password_hash, otp_secret) VALUES ('{safe_username}', '{safe_email}', '{password_hash}', '{otp_secret}');") print("\n3. Skriv 'exit' for å gå ut.") print("-" * 50) print("4. KONFIGURER 2FA I GOOGLE AUTHENTICATOR:") print(f"Bruk denne nøkkelen: {otp_secret}") print("-" * 50 + "\n") if __name__ == "__main__": try: generate_admin() except KeyboardInterrupt: print("\nAvbrutt.") sys.exit(0)