ABCHola ¿Es tu primera visita?
Registro
Mostrando resultados 1 de 8 de un total de 8
  1. #1
    Analista Avatar de aguantefriends
    Fecha de registro:
    15 de enero de 2009
    Mensajes:
    98
    Dispositivo móvil:
    samsung i617
    Sistema operativo:
    Windows Mobile 6.0 Phone Edition

    Obtener ID del PDA, ¿como?

    Hola foro, como les va??
    Estoy en vias de crear como una "licencia" para mi aplicacion, debido a que no quiero que una vez instalado en una PDA se vayan pasando el .cab por distintas pdas.
    Utilizo VB 2003, y estuve leyendo diferentes hilos en este foro, y me quede con el siguiente:
    http://foro.todopocketpc.com/showthr...light=licencia
    Y me intereso especificamente lo expuesto por Jarogo:
    Cita textual Publicado originalmente por jarogo Ver mensaje
    Hola, montrove!

    yo controlo eso mediante licencias: según el id de la pda, genero un archivo con el id encriptado que ha de estar a la altura del ejecutable. Si el archivo no está, la aplicacion no arranca. Y si el archivo está, comprueba que el contenido sea correcto. Si no lo es, pues tampoco arranca.

    Asi, aunque instalen el cab en otra pda y sepan su id, no sabrán la nomenclatura que usas para generar la licencia y la aplicacion no arrancará.

    Saludos!
    Lo que me gustaria saber es si me pueden ayudar a realizar esta idea, comenzando en como obtener el ID de la PDA, despues lo del encriptado seria sencillo porque reutilizaria el que use en el Login de la aplicacion.
    Desde ya agradezco...
    Saludos.

  2. #2
    Infinito Avatar de jarogo
    Fecha de registro:
    16 de octubre de 2006
    Desde:
    Galicia - España
    Mensajes:
    2.388
    Dispositivo móvil:
    Impresionante emulador
    Sistema operativo:
    No tengo nada

    Por defecto

    Hola!

    pues mira, lo de obtener el id será algo como esto. Copia y pega en un nuevo proyecto y te debería funcionar. Lo que hace es guardar el id en un archivo de texto a la altura del ejecutable:

    Código:
    Imports System.ComponentModel
    Imports System.Runtime.InteropServices
    Imports System.Text
    Imports System.IO
    
    
    Public Class Form1
    
        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            Me.Visible = False
            Dim PATH As String = System.IO.Path.GetDirectoryName(Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase.ToString())
            Dim archivo As New StreamWriter(PATH & "\id.txt")
    
            Dim deviceID As String = GetDeviceID()
            archivo.WriteLine(deviceID)
            archivo.Close()
    
            Me.Close()
        End Sub
    
    
        Private Shared Function GetDeviceID() As String
    
            ' Initialize the output buffer to the size of a 
            ' Win32 DEVICE_ID structure 
            Dim outbuff(50) As Byte
            Dim dwOutBytes As Int32
            Dim done As Boolean = False
    
            Dim nBuffSize As Int32 = outbuff.Length
    
            ' Set DEVICEID.dwSize to size of buffer.  Some platforms look at
            ' this field rather than the nOutBufSize param of KernelIoControl
            ' when determining if the buffer is large enough.
            BitConverter.GetBytes(nBuffSize).CopyTo(outbuff, 0)
            dwOutBytes = 0
    
            ' Loop until the device ID is retrieved or an error occurs.
            While Not done
                If KernelIoControl(IOCTL_HAL_GET_DEVICEID, IntPtr.Zero, _
                    0, outbuff, nBuffSize, dwOutBytes) Then
                    done = True
                Else
                    Dim errnum As Integer = Marshal.GetLastWin32Error()
                    Select Case errnum
                        Case ERROR_NOT_SUPPORTED
                            Throw New NotSupportedException( _
                                "IOCTL_HAL_GET_DEVICEID is not supported on this device", _
                                New Win32Exception(errnum))
    
                        Case ERROR_INSUFFICIENT_BUFFER
    
                            ' The buffer is not big enough for the data.  The
                            ' required size is in the first 4 bytes of the output 
                            ' buffer (DEVICE_ID.dwSize).
                            nBuffSize = BitConverter.ToInt32(outbuff, 0)
                            outbuff = New Byte(nBuffSize) {}
    
                            ' Set DEVICEID.dwSize to size of buffer.  Some
                            ' platforms look at this field rather than the
                            ' nOutBufSize param of KernelIoControl when
                            ' determining if the buffer is large enough.
                            BitConverter.GetBytes(nBuffSize).CopyTo(outbuff, 0)
    
                        Case Else
                            Throw New Win32Exception(errnum, "Unexpected error")
                    End Select
                End If
            End While
    
            ' Copy the elements of the DEVICE_ID structure.
            Dim dwPresetIDOffset As Int32 = BitConverter.ToInt32(outbuff, &H4)
            Dim dwPresetIDSize As Int32 = BitConverter.ToInt32(outbuff, &H8)
            Dim dwPlatformIDOffset As Int32 = BitConverter.ToInt32(outbuff, &HC)
            Dim dwPlatformIDSize As Int32 = BitConverter.ToInt32(outbuff, &H10)
            Dim sb As New StringBuilder
            Dim i As Integer
    
            For i = dwPresetIDOffset To (dwPresetIDOffset + dwPresetIDSize) - 1
                sb.Append(String.Format("{0:X2}", outbuff(i)))
            Next i
    
            sb.Append("-")
    
            For i = dwPlatformIDOffset To (dwPlatformIDOffset + dwPlatformIDSize) - 1
                sb.Append(String.Format("{0:X2}", outbuff(i)))
            Next i
    
            Return sb.ToString()
        End Function
    
        Private Shared METHOD_BUFFERED As Int32 = 0
        Private Shared FILE_ANY_ACCESS As Int32 = 0
        Private Shared FILE_DEVICE_HAL As Int32 = &H101
        Private Const ERROR_NOT_SUPPORTED As Int32 = &H32
        Private Const ERROR_INSUFFICIENT_BUFFER As Int32 = &H7A
    
        Private Shared IOCTL_HAL_GET_DEVICEID As Int32 = _
            (&H10000 * FILE_DEVICE_HAL) Or (&H4000 * FILE_ANY_ACCESS) _
            Or (&H4 * 21) Or METHOD_BUFFERED
    
        Declare Function KernelIoControl Lib "CoreDll.dll" _
           (ByVal dwIoControlCode As Int32, _
           ByVal lpInBuf As IntPtr, _
           ByVal nInBufSize As Int32, _
           ByVal lpOutBuf() As Byte, _
           ByVal nOutBufSize As Int32, _
           ByRef lpBytesReturned As Int32) As Boolean
    
    End Class
    Ya contarás si te valió. Saludos!!
    -Estas gorda, ehh!!!
    -Si, como una tapia...

  3. #3
    Analista Avatar de aguantefriends
    Fecha de registro:
    15 de enero de 2009
    Mensajes:
    98
    Dispositivo móvil:
    samsung i617
    Sistema operativo:
    Windows Mobile 6.0 Phone Edition

    Por defecto

    Jarogo!! Mil gracias!!
    Muy bueno tu codigo!! Y funciona a la perfeccion en la PDA, no se porque no funciona en el emulador en la pc, pero eso no interesa, en la PDA anda de lujo y me re sirve.
    Muchisimas Gracias!!!

    Saludos!!

  4. #4
    Infinito Avatar de jarogo
    Fecha de registro:
    16 de octubre de 2006
    Desde:
    Galicia - España
    Mensajes:
    2.388
    Dispositivo móvil:
    Impresionante emulador
    Sistema operativo:
    No tengo nada

    Por defecto

    Me alegro, hombre!
    -Estas gorda, ehh!!!
    -Si, como una tapia...

  5. #5
    Analista Avatar de aguantefriends
    Fecha de registro:
    15 de enero de 2009
    Mensajes:
    98
    Dispositivo móvil:
    samsung i617
    Sistema operativo:
    Windows Mobile 6.0 Phone Edition

    Por defecto

    Ahora bien, otra consulta y que estamos...
    Sabes si esto mismo funciona o si hay algo similar para Aplicaciones de PC de escritorio??
    No es de urgencia, pero ya que estamos...
    Gracias y Saludos!!

  6. #6
    Infinito Avatar de jarogo
    Fecha de registro:
    16 de octubre de 2006
    Desde:
    Galicia - España
    Mensajes:
    2.388
    Dispositivo móvil:
    Impresionante emulador
    Sistema operativo:
    No tengo nada

    Por defecto

    ¿el número de serie del disco duro, por ejemplo?

    sería algo como esto:

    Código:
    Imports System.IO
    
    Public Class Form1
    
        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            'NÚMERO DE SERIE DEL DISCO DURO
            'hay que agregar referencia al Microsoft Scripting Runtime
            Dim fso As New Scripting.FileSystemObject
            Dim selected_drive As Scripting.Drive = fso.GetDrive(Application.ExecutablePath.Substring(0, 3))
    
            Me.Visible = False
            Dim PATH As String = Directory.GetCurrentDirectory.ToString
            Dim archivo As New StreamWriter(PATH & "\id.txt")
            Dim deviceID As String = selected_drive.SerialNumber.ToString()
            archivo.WriteLine(deviceID)
            archivo.Close()
    
            Me.Close()
    
        End Sub
    End Class
    Saludos!
    -Estas gorda, ehh!!!
    -Si, como una tapia...

  7. #7
    Goofy Avatar de pmaicas
    Fecha de registro:
    9 de diciembre de 2004
    Mensajes:
    1.480
    Dispositivo móvil:
    Acer N10
    Sistema operativo:
    Windows Mobile 2003

    Por defecto

    El el PC es más chungo, primero que 'el numero de serie del volumen' se cambia facilmente, y el numero de serie físico del HD no es facil de obtener, que yo sepa solo se obtiene con permisos de administrador y en discos IDE (y ahora muchos son SATA y mucha gente trabaja con un usuario sin derechos administrador). En mi web encontrarás algun programa relacionado con eso.

    Segundo que en el PC los debugers son mejores que en el pocket, de modo que ese sistema de proteccion le dura a una cracker cinco minutos. Si tu mismo no te has dedicado a crackear programas, no puedes hacerte a la idea de cómo (de facil) lo hacen.
    Última edición por pmaicas 11 de marzo de 2009 a las 11:58
    Saludos :)
    -Pedro-
    http://www.maicas.net/ (desarrollo de software)
    http://www.mancuentro.com/ (localización GPS)

  8. #8
    Intermitente
    Fecha de registro:
    20 de octubre de 2004
    Mensajes:
    105
    Dispositivo móvil:
    Ipag 1940
    Sistema operativo:
    Windows Mobile 5.0

    Por defecto

    He visto que funciona correctamente. Pero habéis mirado si en Windows Mobile 6 da serials diferentes para pockets diferentes?

    Yo tenia un código parecido y me he encontrado que con 2 pockets diferentes da el mismo serial. Quería saber si con este pasa lo mismo.

    El codigo que tengo para WM6 es 50006F0063006B006 .. y algunos números más.

    Saludos


 

Información del tema

Users Browsing this Thread

Hay actualmente 1 usuarios viendo este tema. (0 usuarios registrados y 1 usuarios sin registrar)

Temas similares que te pueden interesar

  1. Como Obtener Informacion De La Pocket
    Por fedevin en el foro Programación en Windows Mobile
    Respuestas: 1
    Último mensaje: 28 de agosto de 2007, 09:10
  2. ¿Cómo obtener más memoria?
    Por bdo.jofre en el foro Otros
    Respuestas: 14
    Último mensaje: 18 de febrero de 2007, 15:05
  3. Como puedo obtener el Manual de mi H5550
    Por Jimmy Guitarr en el foro Otros
    Respuestas: 1
    Último mensaje: 26 de abril de 2006, 13:48
  4. Como obtener el Id de la Pocket
    Por Zechner en el foro Programación en Windows Mobile
    Respuestas: 2
    Último mensaje: 09 de febrero de 2006, 21:12
  5. como obtener dns
    Por jatono en el foro Foro de wireless
    Respuestas: 0
    Último mensaje: 26 de junio de 2005, 22:02

Comparte este hilo en:

Comparte este hilo en:

Pautas del foro

  • No puedes publicar nuevos temas
  • No puedes publicar respuestas
  • No puedes publicar ficheros adjuntos
  • No puedes editar tus mensajes
  •  
Twitter Facebook You Tube RSS