Home MundoTec Software Código fuente Tutorial / pdf Minijuegos

Códigos fuentes > Código fuente de Códigos y Claves de activación de software pagos o datos restringidos | FEB/2022

CODIGO FUENTE muy importante para generar una clave distinta de activación de tus software pagos para cada copia que instalan en cualquier otra computadora del mundo.

Claves individualizadas por copia de software


A la hora de codificar software y querer venderlo a clientes en todo el mundo nos vemos limitados con los problemas de copias piratas de versiones completas listas para usar sin haber adquirido previamente la correspondiemte licencia, sin tener nosotros los medios de las grandes corporaciones informáticas para evitarlo. Existe una buena alternativa de solución a este problema que es la activación posterior a la instalación de la copia del software en cualquier otra PC del mundo, por medio de un Código y Clave de activación únicos para cada computadora y/o instalación del software.
El problema reside en cómo hacer que en cada instalación sean códigos y claves distintas siendo un instalador del software único idéntico para todas las instalaciones futuras del software. La solución está en leer el número de serie del hard disk de la PC en donde se instaló esa copia, y de ahí en mas, realizar algún "juego matemático y lógico adecuado" para generar Códigos y Claves distintas en cada instalación por medio de un instalador del programa informático completamente idéntico para todas las instalaciones. La verdad no tengo una garantía de que los formatos de numeros de serie de los hard disk sean todos iguales, ni que sean todos números distintos entre todos los fabricantes del mundo y por décadas, o por mucho tiempo, pero sí, generarán una gran variendad de Códigos y Claves practicamente únicos para cada PC en el mundo. Lo que es necesario, es saber de ante mano el formato o los formatos de números posibles que obtendremos, o cantidad de digitos, y preveer posibles errores y codificarlo a prueba de esos posibles errores. Podría decirse que no son muchos los posibles errores, serían principalmente dos: la cantidad de digitos, y el tipo de dato que obtenga, como ser string, int, o double.
Dentro de la sección de FUENTES de MundoTec podrás descargar un pequeño archivo zip con el fragmento de código fuente en VISUAL C# necesario para obtener el numero de serie del PC, que lo visualiza por consola. En las dos imágenes de este tutorial encontrarás dos numeros, el de arriba por medio de una maquina virtual Virtual Box, y la inferior la imágen del propio ejemplo de este mismo código que encontré en Internet.

Claves individualizadas por copia de software

Luego que determines la cantidad de dígitos que vas a usar, y preveas la mayor cantidad de errores posibles que se generen a la hora de obtenerlo en cualquier otra PC del mundo, ese número obtenido en cada PC, tendrás que obtener con el "juego matemático y lógico adecuado" el Código, que al enviarlo el cliente a nosotros, te permitará calcular la Clave de validación que active el software de la PC del cliente que querrás validar.
En definitiva generar un Funcion Resumen, Función Hash, o Función extracto. La función hash (H) tiene como entrada un conjunto de elementos, que suelen ser cadenas o números, en esta oportunidad el número de serie del hsard disk o PC, y los convierte en un rango de salida finito, normalmente cadenas de longitud fija, en esta oportunidad el Código que nos indicará el cliente interesado en nuestro software. Es decir, la función actúa como una proyección del conjunto (U) sobre el conjunto (M).

f(H) : U--M


Una posibilidad mas, es simplemente generar un numero aleatorio 6 u 8 dígitos de modo de tener una cierta garantía de que el número no se repita en distintas PC, y que se lo utilice como resultado M.
Obtenido ese Código por el conjunto (M), es cuestión de hacer una vez mas un "juego matemático adecuado" de modo de validar la clave de activación por medio de una nueva función matemática adecuada que tenga un resultado en función del valor (M) de modo que solo tenga un solo resultado por cada valor de (M) y siempre tenga un solo valor (M) para cada resultado, y será muy importante y necesario que siempre sea un valor entero y jamás decimales. De este modo, tenés una funcion F(x)=y donde "x" es el Código e "y" la Clave y por medio del pasaje de términos podrás determinar cual es la Clave o el Código, y si la Clave ingresada es correcta o no, para válidar la copia del software, en donde solo hay un valor de "x" para un solo valor de "y" y viceversa.

f(x)=y

x=Código
y=Clave

De este modo, los clientes te indicarán un Código, luego calculas la Clave correcta que es el resultado de "y" y luego el software deberá verificar que esa Clave "y" corresponde para el valor de "x", el Código que indicó primero el cliente.

¿Que te pareció?¿Esto te ayuda para tus codificaciones?