PDA

Ver la versión completa : Otros Engines [bennu] Crear contraseña independiente



futu-block
04/02/2019, 16:48
Me gustaría saber como distribuir un programa con una contraseña para activarlo que no sirva esa misma contraseña para otros programas...
Trabajo principalmente en Bennu y aunque me la pela en verdad porque todo lo hago de grati por amor al arte si me gustaría tener alguna idea de como proteger de alguna manera el copia-pega

Lo suyo es que de repente te salga que para la versión completa introduzca un código que bien se puede recibir si haces una donación; me parece usar esta ''política de empresa'' para el día de mañana. Pero llegan las dudas...

El programa debería tener un numero de serie, lo que conlleva a crear un programa distinto porque cada uno tiene un numero de serie distinto...
-descartado-

El programa generaría un numero de serie aleatorio, con lo cual el usuario envía ese numero de serie aleatorio como ''asunto'' de la donación y recibe un numero de desbloqueo...
-Razonable si no fuera que el numero aleatorio puede ser distinto cada vez que inicie el programa o el mismo con todos los programas, aunque es solucionable

El programa lee un numero de serie de la computadora (no se como) y lo envia como ''asunto'' de donación, y se recibe la contraseña, bla bla...
-Parece un buen metodo si sabemos como mirar ese numero de serie, podría servir la direccion mac

El programa se conectaria online para obtener una activación de que se vá a bloquear si no donas (que malas ideas) añadiendo un numero el cual lo envia como ''asunto'' bla bla bla
-Parece resulton, mas cuando se puede modificar el .dcb mientras está conectado y no depende de ningun archivo extra en alguna carpeta que pueda ser borrado...


Todo esto son desvariaciones y eulucubraciones que pasa por mi cabeza antes de programar nada pero, ¿como se podría hacer?
y otra pregunta ¿como se hace lo de obtener una contraseña que concuerde con un numero facilitado?


saludines

swapd0
04/02/2019, 19:17
¿como se hace lo de obtener una contraseña que concuerde con un numero facilitado?

coges la cadena de texto que te manden, le haces perrerías (siempre las mismas para todas las cadenas) y le mandas el resultado. En el programa le harías lo mismo para comprobar que lo que te manda es correcto. Lo malo de esto es que no podrás modificar esta función o te dejaran de funcionar los programas.

chipan
05/02/2019, 22:57
El problema que le veo, es que no se hasta que punto los divlike (div, fenix, bennu) pueden leer alguna clase de identificador del sistema, sobre todo porque son lenguajes que se han portado a muchas plataformas y arquitecturas, asi que habría que optar por generar un "número de licencia" aleatorio en la primera ejecución y guardarlo en alguna parte para que no cambie cada vez que inicias el juego y que ese sea el número que hay que mandarte para que respondas con el código de activación, código que que tambien se guardaría en alguna parte para no tener que introducirlo en cada partida. El problema es que si alguien averigua donde se guardan el numero de licencia y el de activación, podrían transferirse de un equipo a otro sin mayor complicación.
seguro que @SplinterGU (https://www.gp32spain.com/foros/member.php?u=40474) puede aportar mas información acerca de esto.
Osea, si el número de licencia en lugar de generarse aleatoriamente y guardarse se pudiese generar "al vuelo" en cada ejecución calculandolo a partir de algún dato único del sistema en el que se ejecuta para que siempre fuese el mismo, la licencia que enviases solo valdría para el equipo en el que esté instalado.

futu-block
06/02/2019, 09:23
Gamemaster sacó algo parecido leyendo el numero de serie de la caanoo...
Npi idea de como lo hizo

también me gustaría saber como se trata un código y se codifica para que valga con otro

Drumpi
07/02/2019, 10:22
Bennu permite crear librerías dinámicas de una forma muy sencilla, por lo que hacer funciones específicas para cada entorno depende de las habilidades de cada uno para programar en C, conocer el HW, y tener un compilador para ello.

Creo que hay una librería específica para Wiz... o para GP2X, con acceso a diversas funcionalidades del HW, por lo que creo que se hizo así.

En temas de seguridad, encriptación y codificación, poco puedo ayudar. No sé cual es el mejor método antipiratería sin usar una clave y una consulta a una base de datos. En todo caso, para lo que necesitas, vas a tener que almacenar un fichero de validación o con datos de validación, y si alguien averigua cuál es o dónde está, pues ya te han pirateado el juego.
Pero claro, lo dicho, no conozco los métodos de seguridad y no puedo ayudar. En su implementación quizás, pero no en su desarrollo.

SplinterGU
07/02/2019, 22:44
si es online, entonces no hay que quebrarse mucho la cabeza... numero de serie de serie a cada usuario que registre (pago)... luego cada vez que corre verificas que el numero de serie en tu base de datos y que el mismo no esta corriendo en mas de 1 ip diferente, si lo esta, pues no lo dejas correr y los bloqueas...

pero para esto, seria bueno que parte de la logica del juego este en el servidor...

con respecto a otro tipo de proteccion podrias hacerlo en base al MAC o algun otro id del equipo, pero si el usuario cambia la placa de red o algo que uses, dejara de poder jugar... aunque en esos casos podrias contemplar darle un nuevo numero de serie gratis, previo contacto y comprobado que sea el comprador del programa... un usuario legal no haria esto muchas veces, serian excepciones... y si ves que un usuario esta pidiendo mucha contraseña nueva, es que lo esta clonando, y en ese caso bloqueas ese juego y todas las reinstalaciones de esa licencia original...

por otro lado, todo el hackeable...

Drumpi
09/02/2019, 02:33
¿Pero el programa para qué plataforma es? ¿PC, consola, lavadora...?
Lo cierto es que el tema de la seguridad es interesante, y debería leer un poco sobre ellos y su implantación, porque me está haciendo falta, y no sé a dónde acudir ^^U

futu-block
09/02/2019, 21:31
Es el editor de caras que llevo tirando tanto tiempo y le estoy dando un formato nuevo, creo que debería darle alguna cosilla para que alguno que otro piense en donar unos dolares

O ponerlo online y asi al no estar descargable no importaría mucho si vá pa window$, linux o gps... lol

hardyx
22/02/2019, 12:02
Un método muy seguro es usar la firma digital para generar un fichero de licencia. El algoritmo de firma digital es complejo y requiere muchas matemáticas, pero es un algoritmo público muy documentado y hay librerías en muchos lenguajes. Muchas empresas usan este método para generar licencias.

El fichero de licencia puede llevar el nombre del propietario (comprador) o algún dato del sistema. El algoritmo funciona de tal manera que si se cambia algún dato de este archivo la licencia ya no es válida. Y también, si se filtra una versión "pirata" de la licencia se puede saber si la ha filtrado un propietario o se ha generado usando otros métodos.

La firma digital se basa en dos claves generadas por el desarrollador, una clave privada (no se comparte) y otra pública (que se puede compartir). Estas claves son números primos de muchas cifras. Se genera el fichero de licencia con los datos que se deseen: fecha, hora, aplicación, nombre del propietario, id del dispositivo, etc y se hace un HASH. Esto es un "churro", un número muy largo que es un resumen del fichero, por ejemplo CRC o MD5 son algoritmos de hash. Luego se encripta el hash con la clave privada y se añade al fichero de licencia. Ya está firmado.

Para validar la licencia, simplemente se valida la firma. Se lee la parte de la firma del fichero de licencia y se desencripta con la clave pública del desarrollador, esto da el supuesto hash (el "churro"). Si este hash es igual al hash de los datos del fichero de licencia la firma es correcta. Es decir la licencia es válida.

52278

-----Actualizado-----


El programa generaría un numero de serie aleatorio, con lo cual el usuario envía ese numero de serie aleatorio como ''asunto'' de la donación y recibe un numero de desbloqueo...
-Razonable si no fuera que el numero aleatorio puede ser distinto cada vez que inicie el programa o el mismo con todos los programas, aunque es solucionable

El programa lee un numero de serie de la computadora (no se como) y lo envia como ''asunto'' de donación, y se recibe la contraseña, bla bla...
-Parece un buen metodo si sabemos como mirar ese numero de serie, podría servir la direccion mac

Todo esto son desvariaciones y eulucubraciones que pasa por mi cabeza antes de programar nada pero, ¿como se podría hacer?
y otra pregunta ¿como se hace lo de obtener una contraseña que concuerde con un numero facilitado?

saludines

Lo de la firma digital está bien, pero es bastante complejo.

Lo he puesto como información y también para responder a tu pregunta "¿como se hace lo de obtener una contraseña que concuerde con un numero facilitado?". Encriptando el número (cuanto más grande mejor) con una contraseña que sólo sepas tu. Luego, la aplicación aceptará tanto el número encriptado (que llamaremos código de activación) como el original (que llamaremos ID de usuario). Si al desencriptar el código de activación te da el mismo ID de usuario, el código es válido.

Para encriptar hay muchos métodos algunos más complejos que otros.

Ejemplo simplificado para que se entienda, usando la codificación del césar con clave +1 (sumar 1 a cada letra y digito). En tu app tienes que usar un método más complejo con una clave larga.

- El usuario quiere comprar el programa y éste le presenta un ID de usuario que te envía. Ej: PEPE123
- El código de activación sería: QFQF234 (codificación césar +1), y se la envías.
- El usuario va a la app, opción Registrar y mete ID: PEPE123, codigo: QFQF234
- La app desencripta QFQF234 con la clave inversa (-1), y da PEPE123, que es igual que el ID, el registro es correcto.

SplinterGU
22/02/2019, 20:36
Es el editor de caras que llevo tirando tanto tiempo y le estoy dando un formato nuevo, creo que debería darle alguna cosilla para que alguno que otro piense en donar unos dolares

O ponerlo online y asi al no estar descargable no importaría mucho si vá pa window$, linux o gps... lol

si el pago es a modo donacion y opcional, y ademas no aporta ningun extra a la version sin donacion... no se para que te haces tanto problema...

-----Actualizado-----


Un método muy seguro es usar la firma digital para generar un fichero de licencia. El algoritmo de firma digital es complejo y requiere muchas matemáticas, pero es un algoritmo público muy documentado y hay librerías en muchos lenguajes. Muchas empresas usan este método para generar licencias.

El fichero de licencia puede llevar el nombre del propietario (comprador) o algún dato del sistema. El algoritmo funciona de tal manera que si se cambia algún dato de este archivo la licencia ya no es válida. Y también, si se filtra una versión "pirata" de la licencia se puede saber si la ha filtrado un propietario o se ha generado usando otros métodos.

La firma digital se basa en dos claves generadas por el desarrollador, una clave privada (no se comparte) y otra pública (que se puede compartir). Estas claves son números primos de muchas cifras. Se genera el fichero de licencia con los datos que se deseen: fecha, hora, aplicación, nombre del propietario, id del dispositivo, etc y se hace un HASH. Esto es un "churro", un número muy largo que es un resumen del fichero, por ejemplo CRC o MD5 son algoritmos de hash. Luego se encripta el hash con la clave privada y se añade al fichero de licencia. Ya está firmado.

Para validar la licencia, simplemente se valida la firma. Se lee la parte de la firma del fichero de licencia y se desencripta con la clave pública del desarrollador, esto da el supuesto hash (el "churro"). Si este hash es igual al hash de los datos del fichero de licencia la firma es correcta. Es decir la licencia es válida.

52278

-----Actualizado-----



Lo de la firma digital está bien, pero es bastante complejo.

Lo he puesto como información y también para responder a tu pregunta "¿como se hace lo de obtener una contraseña que concuerde con un numero facilitado?". Encriptando el número (cuanto más grande mejor) con una contraseña que sólo sepas tu. Luego, la aplicación aceptará tanto el número encriptado (que llamaremos código de activación) como el original (que llamaremos ID de usuario). Si al desencriptar el código de activación te da el mismo ID de usuario, el código es válido.

Para encriptar hay muchos métodos algunos más complejos que otros.

Ejemplo simplificado para que se entienda, usando la codificación del césar con clave +1 (sumar 1 a cada letra y digito). En tu app tienes que usar un método más complejo con una clave larga.

- El usuario quiere comprar el programa y éste le presenta un ID de usuario que te envía. Ej: PEPE123
- El código de activación sería: QFQF234 (codificación césar +1), y se la envías.
- El usuario va a la app, opción Registrar y mete ID: PEPE123, codigo: QFQF234
- La app desencripta QFQF234 con la clave inversa (-1), y da PEPE123, que es igual que el ID, el registro es correcto.

pero eso no impide que copien la version con la licencia y la usen en otro lado... si no hay dentro datos del equipo en cuestion o un online para validar la licencia cada tanto o cada vez, no da mucha seguridad...

futu-block
23/02/2019, 11:16
si el pago es a modo donacion y opcional, y ademas no aporta ningun extra a la version sin donacion... no se para que te haces tanto problema...


Mas que nada conocimiento y sabiduría, el saber como preguntar al aparato en uso su código o dirección mac o lo que sea, tambien saber como aplicarle a esa numeración un algoritmo de codificación y como combinarlo con otro para activar el programa



pero eso no impide que copien la version con la licencia y la usen en otro lado... si no hay dentro datos del equipo en cuestion o un online para validar la licencia cada tanto o cada vez, no da mucha seguridad...

Lo dicho, curiosidad