sábado, 16 de diciembre de 2006

Creación de un keygenerator en Visual Basic .Net

Después de algunos días de ausencia en los que el blog se sintió bastante olvidado (pero no lo estaba)... volvemos a compartir más datos con todos los internáutas que nos visitan.

Para aquellos interesados en crear sus propios generadores de claves o llaves (keygen) para cualquier programa de su preferencia, en esta entrada les muestro un ejemplo de un keygen programado en VB .Net por su servidor para el programa My Drivers v3.11.

Un keygen no es un programa que cuenta con una lista larga de seriales o claves válidas para un programa, sino que en su estructura cuenta con el algoritmo descifrado de las claves utilizadas por la aplicación.
La complejidad de los algoritmos varía de aplicación en aplicación. Se pueden utilizar conversiones de sistemas numéricos, sustitución de caracteres, codificaciones en base 64, sólo por citar algunas.

En esta ocasión, les mostraré un ejemplo de un algoritmo bastante simple utilizado por el programa de rippeado y respaldo de controladores, My Drivers en su versión 3.11.

Primero que nada, para poder hacer un keygen necesitan descifrar el algoritmo del programa.
Mi recomendación es que utilizen varios seriales válidos para la misma versión del programa, y utilizen su ingenio para descifrar el algoritmo... les recuerdo, hay algoritmos de alta complejidad, por lo que no se frustren si no consiguen descubrirlo a la primera.

El algoritmo de My Drivers serial no es nada más que convertir los caracteres del nombre de usuario utilizado a su valor ASCII y luego a hexadecimal.

Al principio del serial se ponen unos caracteres que no cambian (WDW2222), seguido del número de caracteres con que cuenta el nombre del usuario, y le sumas 22.
Por ejemplo:
KobraSoft = 9 caracteres + 22 = 31
Después añades un guión medio (-) y luego empiezas con la conversión del nombre a hexadecimal.

Caracter - ASCII - HEX
---K--- ---75--- ---4B---
---o--- ---111--- ---6F---
---b--- ---98--- ---62---
---r--- ---114--- ---72---
---a--- ---97--- ---61---
---S--- ---83--- ---53---
---o--- ---111--- ---6F---
---f--- ---102--- ---66---
---t--- ---116--- ---74---

Unimos todo eso, y nos queda un serial:
Nombre de usuario:KobraSoft
Serial: WDW222231-4B6F627261536F6674

Si fuera "Shadow Security" el serial sería así:
WDW222237-536861646F77205365637572697479

Una vez descifrado, hay que implementarlo en código.
Aquí les pongo el código de ejemplo en VB.Net:

'Creamos la variable que medirá la longitud de caracteres
'de los nombres de usuario

Dim L As Integer = 0
L = Len(txtname.Text.Trim)

'Verificamos que el nombre de usuario tenga más de 2
'caracteres
puesto que el programa no acepta uno
'tan pequeño


If L <= 2 Then
txtserial.Text = "Use un nombre más largo"
txtname.Focus()

'Pasada la verificación de longitud, vamos a convertir
'la cadena
a su valor ASCII y luego a Hexadecimal

Else
Try

'Variable que contendrá la clave convertida
Dim ser As String = ""
'Variable que nos servirá como numerador posicional
Dim x As Integer = 1
'Variable utilizada para convertir cada caracter
Dim characteres(L) As String

'Iniciamos un ciclo FOR que recorrerá cada caracter
'para la conversión

For x = 1 To L

'Se toma la posición del caracter
characteres(x) = Mid(txtname.Text.Trim, x, 1)
'Convertimos en ASCII y luego en HEX
characteres(x) = (Hex(Asc(characteres(x))))
'Concatenamos los valores
ser = ser & characteres(x)

Next x
Catch

'Sólo en caso de que se ingrese un caracter no válido
'en el nombre,
nos prevenimos con un mensaje de error
'(opcional)


MessageBox.Show("Insertó un caracter no válido. Favor de intentar de nuevo", _
"Error de código", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)

End Try

'Creamos la estructura del serial
txtserial.Text = "WDW2222" & (22 + L) & "-" & ser

End If

Con este ejemplo, pueden imaginarse lo sencillo que puede ser crear un generador de claves, lo complicado sería el descifrado del algoritmo... pero eso queda en la cabeza de cada uno de ustedes.


"Lo que una mente crea... otra la destruye."

KobraSoft® 2006

 

Visitante número:
ContactosPensionesTiendasCampingPracticas