RSS Feed

Creación de un keygen en VB .Net

Septiembre 21, 2007

Debido a una petición - y por motivos educativos -, les traigo un refrito de un tuto que hice hace algún tiempo para el blog de Shadow Security.

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 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

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

Catch

MessageBox.Show(”Insertó un caracter no válido. Favor de intentar de nuevo”, _
“Códido erróneo”, 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.”

Hay 6 comentarios Hay 6 comentarios en “ Creación de un keygen en VB .Net ”

  1. 1 th3r0rn (62)

    un keygen mas facil en vb 6 de la siguiente forma:
    Private Sub Command1_Click()
    sel = Int(Rnd() * 10)
    Select Case sel
    Case 0
    Text1.Text = “123a45s6″
    Case 1
    Text1.Text = “354ghffgf”
    Case 2
    Text1.Text = “4ghv45s6″
    Case 3
    Text1.Text = “1hgfdhfd6″
    Case 4
    Text1.Text = “12gfds6″
    Case 5
    Text1.Text = “1fdgfsd6″
    Case 6
    Text1.Text = “123bvcbfds6″
    Case 7
    Text1.Text = “12hgfdhfs6″
    Case 8
    Text1.Text = “hgfdgs6″
    Case 9
    Text1.Text = “vxcbvxca45s6″
    End Select
    End Sub
    ———————–
    y sin tanto pedo XD

  2. 2 Kobra (140)

    En ese caso creo que sería más práctico tener los seriales en un fichero de texto… ¬¬

    Lo que tu dices es sólo una colección pre-grabada de seriales, pero el código que te mostré es para generar seriales nuevos, que no existan y que sean válidos.

  3. 3 Manuel Meza (24)

    Orale, veo que si estas canijo, yo nunca aprendi bien visual Basic, pero nunca es tarde jeje

  4. 4 Kobra (140)

    Gracias carnal, pero no es para tanto… apenas y me sé algunas bases de VB… :-P

  5. 5 ViruX (1)

    uno mucho menos complicado y que ocuparia menos memoria a la hora de funcionar haciendo una modificacion en el anterior


    Dim A as String
    Private Sub Command1_Click()
    sel = Int(Rnd() * 10)
    Select Case sel
    Case 0
    A = “123a45s6?
    Case 1
    A = “354ghffgf”
    Case 2
    A = “4ghv45s6?
    Case 3
    A = “1hgfdhfd6?
    Case 4
    A = “12gfds6?
    Case 5
    A = “1fdgfsd6?
    Case 6
    A = “123bvcbfds6?
    Case 7
    A = “12hgfdhfs6?
    Case 8
    A = “hgfdgs6?
    Case 9
    A = “vxcbvxca45s6?
    End Select
    Text1.Text = A
    End Sub

  6. 6 Dan (1)

    Me parece que a este tutorial le falta la parte mas dificil de la creacion del keygen, el descubrimiento del algoritmo!!! El resto es VB basico, no le veo la complejidad.
    Igualmente vale el esfuerzo y las ganas de contribuir cada uno con su pedacito de informacion,
    saludos y gran pagina


Deja tu Comentario

Puedes usar los siguientes tags:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

:lol: :wink: :neutral: :roll: :???: :twisted: :evil: :mad: :cry: :razz: :smile: :grin: :mrgreen: :shock: :cool: :oops: :eek: :sad:
:!: :idea: :arrow: :?: :rock: :beer: ¬¬ :ouch: :mota: :picaro: :-.-: :u.u: xD :sick:
:gun2: :star: :gun1: :fuck: :$$$: :mia2: :bukkake: :zoo:

[Citar texto seleccionado]