¿Cuál es la mejor manera de generar una ID única de hardware en Microsoft Windows con C++ que no es fácilmente falsificable (con, por ejemplo, cambiar la dirección MAC)?Generación de un ID de hardware en Windows
Respuesta
Windows almacena un GUID único para cada máquina en el registro en:
HKEY_LOCAL_MACHINE\Software\Microsoft\Cryptography\MachineGuid
Hay varios identificadores asignados a los equipos que se pueden leer y combinarse para formar una clave de equipo. Por ejemplo, podría obtener la ID del disco duro donde está almacenado el software, la identificación del proceso, etc. Algunos de estos pueden establecerse más fácilmente que otros, pero parte de la fortaleza está en combinar varias piezas juntas que no son necesariamente lo suficientemente fuerte por sí mismos.
Utilice Win32 System HDS API. No lea el registro, no tiene ningún sentido.
¿Quiere compartir un enlace? HDS no aparece nada. –
Aquí hay un programa (también disponible como DLL) que puede leer y mostrar su ordenador/identificador de hardware: http://www.soft.tahionic.com/download-hdd_id/index.html
Este solía ser el número de serie de la CPU, pero hoy en día hay muchos tipos de placas base y este factor es no es correcto. La dirección MAC se puede falsificar fácilmente. Eso nos deja con el número de serie del disco duro interno. Ver también: http://www.codeproject.com/Articles/319181/Haephrati-Searching-for-a-reliable-Hardware-ID
Hay una variedad de "trucos", pero la única "respuesta física" real es "no, no hay solución".
Una "máquina" no es más que un bus pasivo con algo de hardware. Aunque cada pieza de hierro puede proporcionar un identificador de alguna manera utilizable, cada pieza de hierro puede ser reemplazada por un usuario por cualquier razón mala o buena de la que usted nunca pueda estar al tanto (por lo que si basa su funcionalidad en esto, crea problemas para su usuario, y por lo tanto -como consecuencia- cada vez que un hardware tiene que ser reemplazado/reinicializado/reconfigurado etc., etc.).
Ahora, si su problema es identificar una máquina en un contexto donde muchas máquinas tienen que interoperar juntas, esta es una función bien jugada por las direcciones MAC o IP o los nombres de host. Pero prepárese para la idea de que no son necesariamente constantes en un período de tiempo prolongado (así que evite codificarlos en lugar de "descubrir luego" en cualquiera de su puesta en marcha)
Si su problema es -en su lugar- identifique una instancia de software o una licencia, probablemente sea mejor que se concentre en otro tipo de solución: vende licencias a "usuarios" (¡es el usuario que tiene el dinero, no su computadora!), no a sus "máquinas" (que los usuarios deben ser libres de cambiar cuando lo necesiten sin su permiso, ya que no licenciaron el hardware o el sistema operativo ...), por lo tanto, su problema no es identificar una máquina, sino un USUARIO (considere que es igual la máquina puede ser un host para muchos usuarios y que un mismo usuario puede trabajar en una variedad de máquinas ..., no se puede asumir/imponer una relación 1: 1, sin encontrar tarde o temprano algún tipo de problema, cuando esta expresión idiomática encontrado a no más en forma).
La idea debería ser registrar a los usuarios en un sitio accesible, darles claves que genere y verificar que un mismo par de usuario/llave no se use temporalmente más de un número acordado de veces en un tiempo determinado período. Cuando las violaciones exceden, o las claves se vuelven viejas, solo bloquea y espera a que el usuario renueve.
Como puede ver, la respuesta depende principalmente del motivo de su pregunta, más que de la pregunta en sí.
- 1. ¿Cómo obtener rápidamente Hardware-ID en C#?
- 2. ID de hardware único en Mac OS X
- 3. Hardware de ID de computadora único basado en Java
- 4. minúscula generación de ID de aspecto aleatorio
- 5. Id. De evento de Windows
- 6. C# Creación de un ID único basado en los identificadores de hardware
- 7. ¿Cómo obtener información de hardware en Windows usando C++?
- 8. ¿Cómo obtener la dirección MAC de hardware en Windows
- 9. Generación única de ID PHP corta usando auto_increment?
- 10. QGL ¿Aceleración de hardware y hardware?
- 11. ¿Hardware recomendado para el desarrollo Metro de Windows 8?
- 12. ¿Windows Live ID es un proveedor de OpenID?
- 13. Generación de identificación único para un equipo determinado
- 14. Windows Live ID en ASP.NET MVC
- 15. JavaScript ID de navegador único
- 16. ¿Conocimiento de hardware en informática?
- 17. ¿Obtiene ID de archivo único en Windows con Java?
- 18. Generación de un producto clave
- 19. numpy en hardware multinúcleo
- 20. SVN, TeamCity requisito virtualización/hardware
- 21. Propiedades de hardware de Android
- 22. Generación de ComponentGroups de ComponentRefs
- 23. Generación .afm de .ttf
- 24. Hardware de estado de compilación
- 25. Cómo obtener una firma única de hardware/software desde una PC de Windows en c/C++
- 26. Convertir ID de mensaje de Windows a texto
- 27. ¿Es RNGCryptoServiceProvider tan bueno como un RNG de hardware?
- 28. Vídeo acelerado por hardware en DirectShow/WinForms
- 29. Hardware Simulation
- 30. ¿Cómo consultar la resolución de hardware NATIVE del monitor principal en Windows?
Define "fácilmente spoofable", es decir, ¿podría hacerlo tu abuela, solo la hacker de élite, o nadie en absoluto? – GalacticCowboy