none
Agregar seguridad a mi aplicación RRS feed

  • Pregunta

  • Estimados,
    tengo una aplicación y debo entregar el ejecutable o setup al cliente.
    El problema que él sólo adquirió dos licencia y quiero evitar pueda instalar la aplicación en otros computadores pero sí tenga la posiblidad de instalar nuevamente en los equipos con licencia si algún día necesita formatear alguno de los dos.
    El ejecutable está realizado con el implementador que taer VB 2008.
    Que alternativas de seguridad puedo incorporar a mi aplicación???
    Gracias de ante mano,
    martes, 5 de mayo de 2009 22:19

Respuestas

Todas las respuestas

  • hola,

    el hecho de evitar la pirateria de las aplicaciones que desarrollamos es uno de los problemas mas grandes y dificiles de resolver pero yo te recomendaria algunas opciones:

    1. crea un modulo que recopile el numero de serie del disco duro, tipo de procesador, numero de serie del procesador, etc. (componentes de hardware de la computadora), y que en base a eso te genere un numero de serie para activar el sistema, entonces cuando sea la primera vez que ejecutan tu sistema les apareceria esa pantalla solcitandoles una clave de activación, para esto te tendrian que dar ese numero de serie que generaste via email o via telefonica, de modo que tu les regresarias una clave de activacion. Si vuelven a instalar el sistema en la misma computadora, como tiene el mismo hardware, pues le serviria la misma clave de activación, pero si lo quiere instalar en otra, se tendria que comunicar contigo, y obviamente te darias cuenta que la instalación la esta haciendo en otra computadora.

    2. otra opción es utilizar algun metodo de terceros para evitar la pirateria, recuerdo que hay algunos dispositivos que se conectan al puerto usb, o paralelo, en el cual agregas a tu aplicación un codigo que va y revisa que el dispositivo este conectado al puerto, entonces tu vendes tu sistema y entregas un dispositivo por cada licencia que te paguen, entonces si vendiste  2 licencias pues lo podran utilizar en 2 computadoras a la vez unciamente. la desventaja es que tiene un costo adicional para ti. alguno que manejaba esto era sentinell, checalo en google.

    Espero que te sirva como idea para que tu analices cual te puede servir a ti.

    Saludos
    Edgar López R.
    si la respuesta te fue de utilidad, no olvides marcarla como correcta o útil.
    miércoles, 6 de mayo de 2009 1:13
  • Hola Edgar
    antes que nada, muchas gracias por responder.
    Creo que la opción más factible, en mi caso, sería la primera opción por lo que me gustaría saber un poco más de eso. Por ejemplo, como generar un número de serie y el de activación, algún tipo de código??

    miércoles, 6 de mayo de 2009 2:04
  • Necesitas agregar una referencia en tu proyecto a System.Management
    Puedes insertar el siguiente código en un formulario para mostrar el número de serie del disco duro.

    Imports

     

    System.Management

    Public

     

    Class Form1

     

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

     

    Dim tmpStr2 As String = ""
    Dim myScop As New Management.ManagementScope("\\" & Environment.MachineName & "\root\cimv2")
    Dim oQuer As New Management.SelectQuery("SELECT * FROM WIN32_DiskDrive")
    Dim oResult As New Management.ManagementObjectSearcher(myScop, oQuer)
    Dim oIte As Management.ManagementObject
    Dim oPropert As Management.PropertyData

     

    For Each oIte In oResult.Get()
    For Each oPropert In oIte.Properties
    If Not oPropert.Value Is Nothing AndAlso oPropert.Name = "Signature" Then
    tmpStr2 = oPropert.Value.ToString
    Exit For
    End If
    Next
    Next

    MsgBox(tmpStr2)

     

    End Sub
    End
    Class




    Esta es la referencia del foro en Inglés:

    http://www.vbcity.com/forums/topic.asp?tid=103023


    Buena Suerte! blog: http://hespinosamedina.spaces.live.com/blog/ Si las respuestas te son de utilidad marcalas como buenas!
    miércoles, 6 de mayo de 2009 3:23
  • si claro, obviamente la idea es que despues de sacar algunos numeros de serie o caracteristicas de la computadora, tu por medio de algun algoritmo que tu quieras generar, los cambies o hagas algun procedimiento con datos que solo tu conozcas para que relativamente no sea tan facil adivinar tu algoritmo y que pudieran generar un keygen.

    un ejemplo de como obtener alguna información de la computadora:

    Dim tDE As DictionaryEntry
            For Each tDE In Environment.GetEnvironmentVariables
                If UCase(tDE.Key.ToString) = "COMPUTERNAME" Then
                    vnombrecomp = Mid$(tDE.Value.ToString, 1, 3)
                End If
                If UCase(tDE.Key.ToString)= "NUMBER_OF_PROCESSORS" Then
                vnp = Mid$(tDE.Value.ToString, 1, 1)
             Next
    obviamente hay algunos valores mas que podrias obtener como serie del disco duro, PROCESSOR_REVISION, SYSTEM_DRIVE, PROCESOR_LEVEL, OS, etc.

    insisto que lo mas importante es el proceso que hagas con esta información una vez que la tengas, y con esto generar el numero de serie que te mandarian para activar el sistema.

    Saludos
    Edgar López R.
    si la respuesta te fue de utilidad, no olvides marcarla como correcta o útil.
    miércoles, 6 de mayo de 2009 4:00
  • Licenciao, sino me equivoco ese numero de seria que se obtiene con el codigo que hacers referncia no es el numero de serie fisico. Lo que necesitas Marco, es el numero de serie fisico del disco duro, ese que no cambia cuando vuelves a formatear la unidad, ese que vine desde el fabricante...

    Saludos...
    El hombre mas poderoso del mundo es aquel que es dueño de si mismo
    miércoles, 6 de mayo de 2009 17:39
  • Ya, ya me acorde! jeje...

    Las clases Win32_DiskDrive y Win32_PhysicalMedia solo funcionan para discos IDE y SCSI. HAce un tiempom investigue acerca de esto.
    ...Pero la solucion es usar la libreria HDSNLib.dll.

    Ingresa a este link:

    http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=42494&lngWId=1

    es un proyecto en vb6 ... lo compilas y generas la dll, luego la puedes usar.

     

    Nos comentas.

     

    Saludos y espero te haya servido de algo.



    El hombre mas poderoso del mundo es aquel que es dueño de si mismo
    • Marcado como respuesta Marco Elgueta jueves, 7 de mayo de 2009 15:15
    miércoles, 6 de mayo de 2009 17:51
  • Saludos!
    Listo a continuación un ejemplo parecido pero consultando algunas otras propiedades.


    Imports

    Private

    Sub ConsultaVariasPropiedades()
    Dim strMsg As String
    Dim wqlQuery As WqlObjectQuery
    wqlQuery =
    New WqlObjectQuery("SELECT * FROM Win32_DiskDrive")
    strMsg =
    ""

    Dim searcher As ManagementObjectSearcher
    searcher =
    New ManagementObjectSearcher(wqlQuery)

    Dim disk As ManagementObject
    For Each disk In searcher.Get()
    'Primero va el nombre del disco
    strMsg += disk.ToString + vbCrLf
    'Aqui anotamos la firma
    strMsg += disk.GetPropertyValue("Signature").ToString + vbCrLf
    'Este es el numero de serie
    strMsg += disk.GetPropertyValue("SerialNumber").ToString + vbCrLf
    'Este es identificaci¢n PlugAndPlay
    strMsg += disk.GetPropertyValue("PNPDeviceID").ToString()
    MsgBox(strMsg)
    Next

    End Sub


    Buena Suerte!
    blog: http://hespinosamedina.spaces.live.com/blog/
    Si las respuestas te son de utilidad marcalas como buenas!

    System.Management
    jueves, 7 de mayo de 2009 15:07
  • Gracias a todos por sus respuestas!
    Lo que dice Fafner es verdad, Win32_DiskDrive y Win32_PhysicalMedia solo sirven para discos IDE pero con HDSNLib.dll, ahora si, me recupera el número de serie de mi SATA. Creo que aqui existe una gran falencia, porque ya muchos usuarios estamos utilizando estos tipos de discos por lo que los muchashos de microsoft deberían actualizar esas clases para SATA.

    jueves, 7 de mayo de 2009 15:23
  • Lo probé en Windows Vista y no funciona, debe de haber alguna manera de acceder a la API que se usa en esta librería para que funcione, ya lo has hecho? 


    Buena Suerte! blog: http://hespinosamedina.spaces.live.com/blog/ Si las respuestas te son de utilidad marcalas como buenas!
    viernes, 22 de mayo de 2009 15:31
  • Gracias a todos por sus respuestas!
    Lo que dice Fafner es verdad, Win32_DiskDrive y Win32_PhysicalMedia solo sirven para discos IDE pero con HDSNLib.dll, ahora si, me recupera el número de serie de mi SATA. Creo que aqui existe una gran falencia, porque ya muchos usuarios estamos utilizando estos tipos de discos por lo que los muchashos de microsoft deberían actualizar esas clases para SATA.


    Hola disculpa, pudiste resolver ese método de seguridad? Es que también estoy queriendo implementar uno similar!
    lunes, 29 de octubre de 2018 6:48