Pregunta

Pregunta: Tengo que llegar a la identificación única para cada cliente en red, de tal manera que:

  • (ID) debe persistir una vez que el software cliente se instala en el ordenador de destino, y debe seguir existiendo si el software está instalado en re mismo equipo y la misma instalación del sistema operativo,
  • no debe cambiar si se modifica la configuración de hardware en la mayoría de formas (excepto el cambio de la placa base)
  • Cuando el disco duro con el software de cliente instalado se clona a otro equipo con la configuración de hardware idéntico (o, lo más similar posible), el software de cliente debe ser consciente de que el cambio.

Un poco de explicación y un poco de historia de fondo:

Esta pregunta es cuestión de edad, básicamente, la edad, que también toca el tema de la protección de copia de software, ya que algunos de los mecanismos utilizados en esa zona se mencionan aquí. Debería estar claro en este punto que no estoy en busca de un esquema de protección de copia. Por favor, siga leyendo. :)

Estoy trabajando en un software cliente-servidor que se supone que funciona en una red local. Uno de los problemas que hay que resolver es la identificación de cada cliente único en la red (no tanto de un problema), por lo que puedo aplicar ciertos atributos a cada cliente específico, retener y hacer cumplir esos atributos durante la vida despliegue de una específica cliente.

Mientras yo estaba buscando una solución, yo era consciente de lo siguiente:

  • Sistema de activación de Windows utiliza algún tipo de mecanismo de toma de huellas dactilares pesado que es extremadamente sensible a modificaciones de hardware,
  • disco copias de software de imagen a lo largo de todos los ID de volumen (vinculados a cada partición cuando el formato), y la costumbre, los identificadores generados de forma única durante el proceso de instalación, durante la primera ejecución, o de cualquier otra manera, que es estrictamente el software en su naturaleza, y se almacena en el registro o en el disco duro, así que es muy fácil confundir dos.

La elección obvia para este tipo de problema sería encontrar a cabo identificadores de BIOS (no 100% seguro de si esto es aplicable sólo a través de modelos de placa idénticos, sin embargo), ya que es la única cosa que puedo confiar en que no se duplica, transferidos por clonación, y que no se puede cambiar (al menos no mediante el uso de un programa de espacio de usuario). Todo lo demás falla, ya sea como siendo no confiable (clonación de MAC, alguien?), O demasiado exigentes (en términos de que es demasiado sensible a los cambios de configuración).

Sub-pregunta que me gustaría preguntar es, ¿estoy haciendo correctamente, la arquitectura-sabia? Tal vez hay una mejor herramienta para la tarea que tengo que lograr ...

Otro enfoque que tenía en mente es algo similar a un mecanismo de apretón de manos, donde un servidor mantiene una tabla interna de consulta de los ID de cliente conectados (que puede ser incluso completamente basada en software y no único en un momento dado), y le dice el cliente para llegar a un ID diferente durante el apretón de manos, si se proporciona un ID duplicado después de la conexión. Este enfoque, por desgracia, no juega bien con uno de los requisitos para atar atributos al cliente específico durante toda la vida.

¿Fue útil?

Solución

Me parece que se debe construir el identificador único correspondiente a sus necesidades. Este ID se puede construir como un de hash (como MD5, SHA1 o SHA512) a partir de la información que es importante para usted (alguna información sobre el software y componentes de hardware).

Se puede hacer que su solución más segura si se suscribe tales hash con su clave privada y su software verifica durante la partida, que la clave ( valor hash firmado ) está firmado (sólo la clave pública debe estar instala junto con el software). Se puede ampliar este tipo de solución con diferentes servicios en línea, pero los clientes corporativos podría encontrar servicios en línea no es tan agradable.

Otros consejos

Lo que estamos buscando es la WMI de Windows . Usted puede obtener el ID de la placa base (que es único a través del mismo tipo de placa base) o muchos muchos otros tipos de identificadores únicos y llegar a alguna función inteligente cabeza de serie para generar una UHID. Whoa Qué acabo de hacer hasta un acrónimo?

Y si usted está buscando específicamente para conseguir el (BIOS) Identificación Placa base:

WMI class: Win32_BIOS
Namespace: \Root\Cimv2

Documentación: http://msdn.microsoft.com /en-us/library/aa394077(VS.85).aspx
Código de ejemplo: http://msdn.microsoft.com/ en-us / library / aa390423% 28VS.85% 29.aspx

Editar . No se especificó un lenguaje (y asumí C ++), pero esto se puede hacer en Java (con un conductor COM), y cualquier lenguaje .NET, así

Muchos programas utilizan el identificador de anfitrión con el fin de construir un código de licencia (como los basados ??en FlexLM). Echar un vistazo a lo que Matlab no en función del sistema operativo:

http://www.mathworks.com /support/solutions/en/data/1-171PI/index.html

También echar un vistazo a esta pregunta:

Conseguir un identificador único de un sistema de tipo Unix

Una vez vi también algunos programas que basan sus licencias en el número de serie del disco duro, un tal vez eso es lo menos probable que el cambio. Algunos sugieren utilizar el MAC de su tarjeta Ethernet, pero que puede ser reprogramado.

Mac
No confíe en MAC! NUNCA. No es permanente. El usuario puede cambiarlo fácilmente ( menos de 30 segundos ).

ID de volumen
No confíe en los ID de volumen! NUNCA. No es permanente. El usuario puede cambiar fácilmente. También cambia simplemente formatear el disco.

WMI
WMI es un servicio. Se puede desactivar fácilmente. En realidad, lo he intentado y me entero de que en muchos ordenadores está deshabilitado o roto (sí, muy a menudo roto).

servidor de licencias
La conexión a un servidor de validación que también puede causar muchos problemas porque:
 * Sus clientes no siempre pueden ser conectados a Internet.
 * Sus clientes pueden conectar con una configuración especial (router / NAT / proxy / gateway) que necesitan para introducir en su programa con el fin de dejar que se conecte al servidor de validación.
 * Que pueden estar detrás de un firewall que bloquee todos los programas excepto unos pocos (mi caso). En algunos casos, el servidor de seguridad puede no estar bajo su control (válido para la mayoría de los usuarios corporativos)
 * Es super fácil de redirigir su programa a un servidor web falsa local que emula el servidor de licencias.

datos Hardware
Si necesita una fuerte protección, se debe confiar en el hardware. Algo que no puede ser editado por el usuario. Algo así como la instrucción de identificación de CPU disponible en las CPUs AMD Intel / y el número de serie escrito en la interfaz IDE de la unidad.
El ID de CPU y HDD ID son permanentes. Ellos nunca van a cambiar, ni siquiera después de formatear el equipo y reinstalar Windows.

Es factible. Por ejemplo esta biblioteca lee el identificador de hardware de un ordenador. Hay una demo compilado y también código fuente / DLL . Exención de responsabilidad:. Su enlace lleva a un producto comercial (19 € / no hay regalías)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top