import gnupg import json import pyodbc import secrets from datetime import datetime # Inicializar GPG gpg = gnupg.GPG() # Generar una clave de licencia aleatoria def generar_clave_licencia(): return secrets.token_urlsafe(16) # Genera una cadena aleatoria de 16 caracteres URL-safe # Crear una nueva licencia con una clave aleatoria def crear_licencia(environment): datos_licencia = { "software": "MINDS", "version": "1.0", "license_key": generar_clave_licencia(), # Clave de licencia aleatoria "expiry_date": "2025-06-17", "licensed_to": "USUARIO FAKE", "environment": environment } # Convertir los datos a JSON datos_json = json.dumps(datos_licencia, indent=4) # Firmar los datos con la YubiKey firma = gpg.sign(datos_json, passphrase='172999') if not firma: print("Error al firmar los datos.") exit() # Datos firmados convertidos a cadena datos_firmados = str(firma) # Cifrar los datos firmados usando cifrado asimétrico cifrado = gpg.encrypt(datos_firmados, recipients=None, symmetric=True, passphrase='172999') if not cifrado.ok: print(f"Error al cifrar los datos: {cifrado.status}") exit() # Guardar los datos cifrados en un archivo archivo_licencia = f'licencia{environment.lower()}.cbs' with open(archivo_licencia, 'wb') as f: f.write(cifrado.data) print("Datos firmados correctamente.") print(f"Datos cifrados y guardados en '{archivo_licencia}' correctamente.") # Almacenar los datos en la base de datos try: conn = pyodbc.connect( 'DRIVER={ODBC Driver 18 for SQL Server};' 'SERVER=140.82.58.83,14338;' 'DATABASE=licencias;' 'UID=sa;' 'PWD=hG0eT6P9CDXQmbVQ3S4IHPX5drBMVxog;' 'TrustServerCertificate=yes' ) cursor = conn.cursor() cursor.execute(''' INSERT INTO licencias (software, version, license_key, expiry_date, licensed_to, environment) VALUES (?, ?, ?, ?, ?, ?) ''', ( datos_licencia['software'], datos_licencia['version'], datos_licencia['license_key'], datos_licencia['expiry_date'], datos_licencia['licensed_to'], datos_licencia['environment'] )) conn.commit() conn.close() print("Licencia almacenada en la base de datos correctamente.") except pyodbc.Error as e: print(f"Error al almacenar la licencia en la base de datos: {str(e)}") # Generar licencia para QA crear_licencia('QA') # Generar licencia para Production crear_licencia('Production')