***Como hacer un generador de licencias en python

Iniciado por Arn_dj, 8 Diciembre 2014, 17:13 PM

0 Miembros y 1 Visitante están viendo este tema.

Arn_dj

buenas, en la escuela me asignaron un trabajo final.
consiste en crear una licencia a un programa cliente servidor, la tarea es contrloar la cantidad de pc que se conecten a dicho servidor.
Quiero hacer un generador de licencias que introduciendole un nombre y la cantidad de computadoras me devuelva un codigo o un archivo, para que el servidor reconozca el numero de pc que pueda admitir.

cualquier sugarencia que em puedan dar se lo agradeceria, ya que lo tengo que hacer en python y es un lenguaje desconocido para mi.
saludos desde Cuba...

engel lex

que formato tiene que tener la licencia, es decir como se debe ver?

la licencia puedes crearla desde lo más simple
usuario:Pepito,Perez;maquinas:5
o puedes codificarlas para aumentar su seguridad
ej:
teniendo como cadena inicial esta anterior y usando como clave "licencia", primero le hacemos a esa cadena un md5 para hacerla más "robusta" y verificar que los datos no se hayan cambiado quedando
Citarusuario:Pepito,Perez;maquinas:5;26a67ba5b849dc280e3666041c09dc29

luego cifrando en AES-128 para que los usuarios no la puedan tocar (y el resultado en base 64 para que sea copy/pasteable)
CitarWZNvtwNEXXICV6FF4JZS1H+6bsJjfSldrmhdixpEIGI2DWbVL3KBBew9AA9OWXpcbdFiUtvu1XJCMZ8KPxiIRg==

allí ya tendrías una cadena bastante solida de licencia para usar :P

lo más complicado es el aes...

pero para ahorrarte una buena cantidad de problema si lo usas, puedes usar esta funcion para asegurar los largos correctos

Código (python) [Seleccionar]
def frase_LargoCorrecto(frase):
largo = 16 #todo en aes debe ser multiplo de 16
relleno = '\x00' #relleno de algo inconfundible
return frase + (largo - len(frase) % largo) * relleno


ya de ahí con las librerias
Código (python) [Seleccionar]
from Crypto.Cipher import AES
import base64


es bastante simple
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

Arn_dj

la licencia pude ser un archivo .*  , como el kaspersky que es un .key
o tambien la puedo hacer con caracteres que es como me muestras.

gracias por tu explicacion me ha sido de gran ayuda, pero aun tengo dudas de como complementar todo el codigo para tener el resultado final (el generador)

engel lex

la extension de archivo de la licencia es lo menos importante, puede ser un .loQueSea, lo importante es el contenido...

dime como te gustaría el contenido (te puedes basar en mis ejemplos) y te ayudo a armarlo, ya las validaciones de seguridad tu las decidirás...
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

Arn_dj

Antes de aplicar el cifrado utilizando por ejemplo el AES deseo primeramente aplicar un cifrado personalizado para después volver a cifrar utilizando las técnicas de cifrado conocidas. En cuanto al archivo en donde se guarde la cadena generada podría ser por ejemplo en formato xml. Cuando me preguntas por el contenido te refieres al formato del archivo. Solo requiero guardar la cadena generada en un archivo. En realidad en cuanto al contenido como tal no tengo ninguna preferencia. Podrías darme algunas sugerencias con respecto a esto. Gracias de antemano

engel lex

el contenido ya de di un ejemplo sobre que colocar
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

Arn_dj

Nombre de la Entidad:"TELPROMT"/Cantidad de Ordenadores:'15'

engel lex

Perfecto, ahora, lo dejaras crudo o quieres codificarlo de alguna manera?
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

Arn_dj

Me parece bien codificar la cadena justo como el ejemplo que me diste

engel lex

Creo que para que no te compliques tanto primero, aprende a codificar en base 64 (en el ejemplo tienes el import)

Y convertir es solo una línea de código
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.