Título: ***Como hacer un generador de licencias en python Publicado por: Arn_dj en 8 Diciembre 2014, 17:13 pm 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... Título: Re: ***Como hacer un generador de licencias en python Publicado por: engel lex en 8 Diciembre 2014, 17:49 pm que formato tiene que tener la licencia, es decir como se debe ver?
la licencia puedes crearla desde lo más simple Código: usuario:Pepito,Perez;maquinas:5 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 Citar usuario: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) Citar WZNvtwNEXXICV6FF4JZS1H+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
ya de ahí con las librerias Código
es bastante simple Título: Re: ***Como hacer un generador de licencias en python Publicado por: Arn_dj en 8 Diciembre 2014, 18:00 pm 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) Título: Re: ***Como hacer un generador de licencias en python Publicado por: engel lex en 8 Diciembre 2014, 18:46 pm 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... Título: Re: ***Como hacer un generador de licencias en python Publicado por: Arn_dj en 16 Diciembre 2014, 13:57 pm 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
Título: Re: ***Como hacer un generador de licencias en python Publicado por: engel lex en 16 Diciembre 2014, 16:58 pm el contenido ya de di un ejemplo sobre que colocar
Título: Re: ***Como hacer un generador de licencias en python Publicado por: Arn_dj en 17 Diciembre 2014, 13:51 pm Nombre de la Entidad:"TELPROMT"/Cantidad de Ordenadores:'15'
Título: Re: ***Como hacer un generador de licencias en python Publicado por: engel lex en 17 Diciembre 2014, 17:47 pm Perfecto, ahora, lo dejaras crudo o quieres codificarlo de alguna manera?
Título: Re: ***Como hacer un generador de licencias en python Publicado por: Arn_dj en 17 Diciembre 2014, 18:08 pm Me parece bien codificar la cadena justo como el ejemplo que me diste
Título: Re: ***Como hacer un generador de licencias en python Publicado por: engel lex en 17 Diciembre 2014, 18:28 pm 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 Título: Re: ***Como hacer un generador de licencias en python Publicado por: Arn_dj en 22 Diciembre 2014, 16:19 pm Estoy trabajando en Windows y presenté algunos problemas para instalar la librería pycrypto pero finalmente pude.
Hice un ejemplo donde empleé el AES(utilicé tu función frase_LargoCorrecto), cifré en base64 y pude exportar a un archivo con una extensión deseada correctamente. En el proyecto real haré la parte visual utilizando la herramienta QT. El tratamiento de la cadena antes de ser cifrada y las validaciones corren por mi cuenta. *No aplique el MD5 porque desconozco como hacer el proceso inverso. *en el AES que modo me recomiendas para usar (ECB, CBC, CFB, OFB o CTR)? Por alguna razón no puedo publicar imagenes del ejemplo, no obstante el código del ejemplo es este: __author__ = 'Arn_dj' from Crypto.Cipher import AES from Crypto.Hash import MD5 import base64 #************MD5************* def CifrarMD5(cadena): c = MD5.new() c.update(cadena) return c.hexdigest() def DescifrarMD5(cadena): return base64.b64decode(cadena) #****************AES**************** 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 clave = 'licencia' key=frase_LargoCorrecto(clave) def CifrarAES(cadena): a=AES.new(key) return a.encrypt(frase_LargoCorrecto(cadena)) def DescifrarAES(cadena): b=AES.new(key) return b.decrypt(cadena) #*****************base64***************** def CifrarBase64(cadena): return base64.b64encode(cadena) def DescifrarBase64(cadena): return base64.b64decode(cadena) #**************Formato de cadena****************** def CrearCadena(entidad,equipos): return 'Nombre de la Entidad:"'+entidad.upper()+'"'+"/Cantidad de Ordenadores:'"+equipos+"'" #**************Crear Archivo****************** def CrearArchivo(nombre,contenido): doc = open("D:/"+nombre+".ext", "w+") doc.write(contenido); doc.close() print ''' *****Cifrado MD5/Aes/Base 64***** ********************************* ''' entidad = raw_input('Nombre de la Entidad : ') equipos = raw_input('Cantidad de Ordenadores : ') cadena= CrearCadena(entidad,equipos) print 'La cadena a cifrar es : %s'% cadena cifrada=CifrarBase64(CifrarAES(cadena)) desifrada=DescifrarAES(DescifrarBase64(cifrada)) print 'La cadena cifrada es : %s' % cifrada print 'La cadena descifrada es : %s' % desifrada CrearArchivo("licencia",cifrada) exit() **********************Programa en ejecución********************* C:\Python27\python.exe I:/demolic/keygen.py *****Cifrado MD5/Aes/Base 64***** ********************************* Nombre de la Entidad : telpromt Cantidad de Ordenadores : 15 La cadena a cifrar es : Nombre de la Entidad:"TELPROMT"/Cantidad de Ordenadores:'15' La cadena cifrada es : yCjYpC+5x4y9+VhaxC3cOggbfWJ9mr2Apc+JtngQnrQD+UOmfbTSLHDmKQDoG1+CCpX6J3X0onv/SF+HwnYa2Q== La cadena descifrada es : Nombre de la Entidad:"TELPROMT"/Cantidad de Ordenadores:'15' |