import gnupg import json import pyodbc # Función para obtener conexión a MSSQL def obtener_conexion(): return pyodbc.connect( 'DRIVER={ODBC Driver 18 for SQL Server};' 'SERVER=140.82.58.83,14338;' 'DATABASE=licencias;' 'UID=sa;' 'PWD=hG0eT6P9CDXQmbVQ3S4IHPX5drBMVxog;' 'TrustServerCertificate=yes' ) def firmar_y_cifrar_licencia(datos_licencia, passphrase): # Inicializar GPG gpg = gnupg.GPG() try: # Convertir los datos de la licencia a JSON datos_licencia_json = json.dumps(datos_licencia, indent=4) # Firmar los datos de la licencia firma = gpg.sign(message=datos_licencia_json, detach=False, passphrase=passphrase) if not firma: print("Error al firmar los datos.") return print("Datos firmados correctamente.") # Convertir los datos firmados a bytes datos_firmados = str(firma).encode('utf-8') # Cifrar los datos firmados cifrado = gpg.encrypt(data=datos_firmados, recipients=None, symmetric=True, passphrase=passphrase) if not cifrado.ok: print(f"Error al cifrar los datos: {cifrado.status}") return # Guardar los datos cifrados en un archivo archivo_salida = 'licencia.cbs' with open(archivo_salida, 'wb') as f: f.write(cifrado.data) print(f"Datos cifrados y guardados en '{archivo_salida}' correctamente.") # Almacenar los datos de la licencia en la base de datos MSSQL almacenar_licencia_en_db(datos_licencia) except Exception as e: print(f"Error al firmar y cifrar los datos: {str(e)}") def almacenar_licencia_en_db(datos_licencia): try: # Conectar a la base de datos MSSQL conn = obtener_conexion() cursor = conn.cursor() # Insertar los datos de la licencia en la tabla cursor.execute(''' INSERT INTO licencias (software, version, license_key, expiry_date, licensed_to) VALUES (?, ?, ?, ?, ?) ''', ( datos_licencia['software'], datos_licencia['version'], datos_licencia['license_key'], datos_licencia['expiry_date'], datos_licencia['licensed_to'] )) # Confirmar los cambios y cerrar la conexión conn.commit() conn.close() print("Datos de la licencia almacenados 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)}") # Datos de la licencia a firmar y cifrar datos_licencia = { "software": "MINDS", "version": "1.0", "license_key": "ABCD-EFGH-IJKL-MNOP", "expiry_date": "2025-06-17", "licensed_to": "USUARIO FAKE" } # Frase de paso para acceder a la clave privada y para cifrar passphrase = '172999' # Llamar a la función para firmar y cifrar la licencia firmar_y_cifrar_licencia(datos_licencia, passphrase)