licencias-minds3/licencia3.py

89 lines
2.6 KiB
Python

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')