Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: siliconplus en 25 Abril 2012, 18:41 pm



Título: SOS Leer Serie Procesador
Publicado por: siliconplus en 25 Abril 2012, 18:41 pm
Amigos... Llevo tiempo programando y no he podido encontrar la dll para leer la serie  EXACTA del procesador...     

Existen sequencias en VB tales como

Set swService = GetObject("winmgmts:")
   Set swCpuSet = swService.ExecQuery("Select * from Win32_Processor")
   Set swMemSet = swService.ExecQuery("Select * from Win32_PhysicalMemory")

que dan la serie del procesador o de la placa madre que ha sido grabada en el registro de Windows al momento de instalarse.   El problema surge cuando se clona el disco del PC a otro PC, por ende, se clona el registro.  Por lo tanto el segundo PC no arroja la verdadera serie del procesador ni menos la serie de la placa madre.   

Otro ejemplo similar es cuando llegan 20 PC nuevos, y todos vienen clonados y son similares pero ID.de procesador diferentes , y al ejecutar los comando  de VB WIN32_Processor.. todos me devuelven el mismo ID de procesador...
 :-\

¿Como podría leer la serie del procesador actual? ( y no el clon).
Sé que se podia usando assembler (pero soy ignorante de ese lenguaje) y el tiempo apremia... :-(

De antemos gracias a todos...





Título: Re: SOS Leer Serie Procesador
Publicado por: Miseryk en 26 Abril 2012, 16:19 pm
Hola, me interesa ese tema, me podrías decir a qué te refieres exactamente?; y si es posible un ejemplo con resultado, a ver si puedo ayudar en algo. (Y)


Título: Re: SOS Leer Serie Procesador
Publicado por: siliconplus en 26 Abril 2012, 17:04 pm
Aqui te envio la funcion propiamente tal...


   Dim BiosSet As Object
   Dim bios As Object

'   
' LEEMOS LA IDENTIFICACION DE LA PLACA MADRE
'
   Set BiosSet = GetObject("winmgmts:{impersonationLevel=impersonate}").InstancesOf("Win32_BIOS")
   
   On Local Error Resume Next

'
'  ARCHIVO QUE CONTENDRÁ LA INFORMACION QUE LEEREMOS
'
   open "DatosBios.txt" for output as  #1

   
   For Each bios In BiosSet
      Print #1, "PrimaryBIOS  :  " & bios.PrimaryBIOS & vbLf &  "Status;   " & bios.Status & vbLf

      For cnt = LBound(bios.BIOSVersion) To UBound(bios.BIOSVersion)
         Print #1, " BiosVersion:  " & bios.BIOSVersion(cnt) & vbLf
      Next
     
      Print #1, "Caption:  "; bios.Caption & vbLf
      Print #1, "Description:  "; bios.Description; vbLf
      Print #1, "Name:  "; bios.Name; vbLf
      Print #1, "Manufacturer:  "; bios.Manufacturer; vbLf
      Print #1, "ReleaseDate:  "; bios.ReleaseDate; vbLf
      Print #1, "SerialNumber:  "; bios.SerialNumber; vbLf
      Print #1, "SMBIOSBIOSVersion:  "; bios.SMBIOSBIOSVersion; vbLf
      Print #1, "SMBIOSMajorVersion:  "; bios.SMBIOSMajorVersion; vbLf
      Print #1, "SMBIOSMinorVersion:  "; bios.SMBIOSMinorVersion; vbLf
      Print #1, "SMBIOSPresent:  "; bios.SMBIOSPresent; vbLf
      Print #1, "SoftwareElementID:   "; bios.SoftwareElementID; vbLf
      Print #1, "Version;  "; bios.Version; vbLf
      Print #1, "InstallableLanguages; "; bios.InstallableLanguages; vbLf
      Print #1, "CurrentLanguage:  "; bios.CurrentLanguage; vbLf
     
   Next  'For Each bios



    Dim cpuSet As Object
    Dim cpu As Object

'
'  LEEMOS LOS PROCESADORES QUE TIENE ESTE PC
'   
   
    Set cpuSet = GetObject("winmgmts:\\.\root\cimv2").ExecQuery("Select * from Win32_Processor")

    For Each cpu In cpuSet
        Print #1, "Processor Id: " & cpu.ProcessorId
        Print #1, "Maximum Clock Speed: "; cpu.MaxClockSpeed
        Print #1, "Availability: " & cpu.Availability
        Print #1, "AddressWidth: " & cpu.AddressWidth
        Print #1, "CpuStatus: " & cpu.CpuStatus
        Print #1, "CurrentClockSpeed: " & cpu.CurrentClockSpeed
        Print #1, "MaxClockSpeed: " & cpu.MaxClockSpeed
        Print #1, "L2CacheSize: " & cpu.L2CacheSize
        Print #1, "L2CacheSpeed: " & cpu.L2CacheSpeed
        Print #1, "VoltageCaps: " & cpu.VoltageCaps
        Print #1, "Name: " & cpu.Name
    Next
   
    close #1

'****************************************************

Despues al revisar el archivo DatosBios.txt me encuentro que dos o mas PC tiene la misma identificacion, es decir, un disco duro fue clonado y a cada uno le pusieron la imagen de otro PC. Talvez estos datos no son los reales en ningun PC, quizás a todos los pusieron la misma imagen de disco...
 :rolleyes:

Entonces surge la pregunta... En algun momento de la historia, al instalar el SO, se debio leer los datos del HW original.. ¿Como lo hizo?.  ¿Con que f(x)?..

Esto lo necesito para poder restringir el uso de programas en ciertos PC
de modo que cada vez que se ejecute el programa vaya leer el HW del equipo  y NO LA INFORMACION del hw que esta guardada en el disco (porque puede ser falsa o clonada)...  ¿Me explico?...

Espero que sirva de algo..


Título: Re: SOS Leer Serie Procesador
Publicado por: Elemental Code en 26 Abril 2012, 21:34 pm
        Print #1, "Processor Id: " & cpu.ProcessorId
        Print #1, "Maximum Clock Speed: "; cpu.MaxClockSpeed
        Print #1, "Availability: " & cpu.Availability
        Print #1, "AddressWidth: " & cpu.AddressWidth
        Print #1, "CpuStatus: " & cpu.CpuStatus
        Print #1, "CurrentClockSpeed: " & cpu.CurrentClockSpeed
        Print #1, "MaxClockSpeed: " & cpu.MaxClockSpeed
        Print #1, "L2CacheSize: " & cpu.L2CacheSize
        Print #1, "L2CacheSpeed: " & cpu.L2CacheSpeed
        Print #1, "VoltageCaps: " & cpu.VoltageCaps
        Print #1, "Name: " & cpu.Name


Nada de eso es "Unico"
Busca el numero de serie del disco duro, o la direccion MAC de la tarjeta de red.
Esos son mas "unicos"


Título: Re: SOS Leer Serie Procesador
Publicado por: siliconplus en 26 Abril 2012, 23:07 pm
la serie del disco duro se repite si es una imagen clonada  (idem de ejercicio anterior)
 :xD

Por lo general la serie del disco no se utiliza porque si se quema o se cambia el disco por uno de mayor capacidad, el programa no se podra ejecutar en ese PC
 :-[

  Print #1, "Processor Id: " & cpu.ProcessorId
  y
  Print #1, "Name: " & cpu.Name

son UNICOS...  un tipo de CPU tiene su ID unica dentro de su nombre  (los dos campos van de la mano), pero si es una imagen clonada (el disco)... no me dá el procesador actual...
 :-(


Título: Re: SOS Leer Serie Procesador
Publicado por: siliconplus en 26 Abril 2012, 23:11 pm
No me queda mas que leer la MAC...  (por el momento).

La idea es tener dos variables fijas del PC por si falla una, es decir.  Si se quemó la tarjeta madre, el procesador se mantiene.. aunque a estas alturas, cambiar la placa es sinonimo de cambiar todo... cpu, socket.,etc, etc...   Lo mismo que si se quema el procesador...  mmm nueva placa madre...
 :D

¿Algun link para leer la MAC?...
 :silbar:


Título: Re: SOS Leer Serie Procesador
Publicado por: Elemental Code en 27 Abril 2012, 17:46 pm
si le hay

http://foro.elhacker.net/programacion_visual_basic/mgetmymac_posiblemente_la_peor_manera_de_obtener_la_mac_address-t314975.0.html

Esta el mio que es feo arriba.
Y mas abajo el de karcrack que se la banca.

http://foro.elhacker.net/programacion_visual_basic/mgetmymac_posiblemente_la_peor_manera_de_obtener_la_mac_address-t314975.0.html;msg1560283#msg1560283


Título: Re: SOS Leer Serie Procesador
Publicado por: siliconplus en 27 Abril 2012, 19:50 pm
Gracias.. !!!
 ;-)

Antes yo igual usaba batch...  y como se detallan en los post siguientes tambien tenia ciertos problemitas..   pero servía igual.   En todo caso era el inicio hacia el hackeo y crackeo leyendo resultados de otros comando y enlazandolos.. etc, etc.

Queda pendiente.. si seria posible leer la serie del procesador
jejeje

Gracias...


Título: Re: SOS Leer Serie Procesador
Publicado por: DarkMatrix en 29 Abril 2012, 06:57 am
Yo intente eso de leer el ID del procesador, creo que con WMI es la peor forma, algunas veces me devolvia nulo y otras tambien me devolvia Seriales repetidos en pcs diferentes, tambien probe el serial del disco, funciona pero algunos devuelven ID nulo no se porq :S, hasta ahora no he encontrado otra forma de obtener un identificador unico para cada pc :S