Question

Question: Je dois venir avec ID unique pour chaque client en réseau, tel que:

  • (ID) devrait persister une fois le logiciel client est installé sur l'ordinateur cible, et devrait continuer à persister si le logiciel est réinstallé sur un même ordinateur et même tranche OS,
  • il ne devrait pas changer si la configuration matérielle est modifiée dans la plupart des moyens (sauf changer la carte mère)
  • Lorsque le disque dur avec le logiciel client installé est cloné à un autre ordinateur avec une configuration matérielle identique (ou, aussi proche que possible), le logiciel client doit être au courant de ce changement.

Un peu d'explication et quelques arrière-histoire:

Cette question est essentiellement vieille question qui touche aussi l'âge du sujet du logiciel protection contre la copie, comme certains des mécanismes utilisés dans ce domaine sont mentionnés ici. Je devrais être clair à ce moment que je ne suis pas à la recherche d'un système de protection contre la copie. S'il vous plaît, continuez à lire. :)

Je travaille sur un logiciel client-serveur qui est censé fonctionner dans un réseau local. L'un des problèmes que je dois résoudre est d'identifier chaque client unique dans le réseau (pas tant d'un problème), de sorte que je peux appliquer certains attributs à chaque client spécifique, conserver et appliquer ces attributs pendant la durée de vie de déploiement d'un particulier client.

Alors que je cherchais une solution, je le savais ce qui suit:

  • système d'activation de Windows utilise une sorte de mécanisme d'empreintes digitales lourd qui est extrêmement sensible aux modifications matérielles,
  • copies de logiciels d'imagerie de disque le long de tous les ID de volume (liés à chaque partition au moment du formatage), et sur mesure, ID unique généré pendant le processus d'installation, lors de la première course, ou de toute autre manière, qui est strictement logiciel dans sa nature, et stocké dans le registre ou sur le disque dur, il est donc très facile de confondre deux.

Le choix évident pour ce genre de problème serait de trouver des identificateurs BIOS (pas à 100% sûr que ce qui est unique grâce à des modèles de cartes mères identiques, cependant), comme c'est la seule chose que je peux compter sur ce qui est pas dupliquées, transférés par clonage, et qui ne peut être changé (au moins pas à l'aide d'un certain programme de l'espace utilisateur). Tout le reste ne soit comme étant pas fiables (clonage MAC, anyone?), Ou trop exigeant (en termes qu'il est trop sensible aux changements de configuration).

Sous-question que je voudrais poser est, je le fais correctement, sage-architecture? Peut-être il y a un meilleur outil pour la tâche que je dois accomplir ...

Une autre approche que j'avais à l'esprit est quelque chose de semblable à un mécanisme de prise de contact, où un serveur maintient une table de consultation interne des ID clients connectés (qui peut même être complètement logiciels basés et non unique à un moment donné), et dit le client à venir avec un autre ID lors de poignée de main, si une pièce d'identité en double est fourni lors de la connexion. Cette approche, malheureusement, ne joue pas bien avec l'une des exigences de lier les attributs au client spécifique au cours de la vie.

Était-ce utile?

La solution

Il me semble que vous devez construire l'ID unique correspondant à vos besoins. Cet ID peut être construit comme un hachage (comme MD5, SHA1 ou SHA512) à partir des informations qui est important pour vous (des informations sur les logiciels et composants matériels).

Vous pouvez rendre votre solution plus sécurisée si vous signez ce hachage avec votre clé privée et votre logiciel vérifier pendant le démarrage, que la clé (valeur de hachage signé ) est signé (seule clé publique doit être installé avec votre logiciel). On peut étendre ce genre de solution avec les différents services en ligne, mais les clients des entreprises pourrait trouver des services en ligne pas si agréable.

Autres conseils

Qu'est-ce que vous cherchez est le de Windows WMI . Vous pouvez obtenir l'ID de la carte mère (qui est unique sur le même type de carte mère) ou beaucoup d'autres types d'identifiants uniques et venir avec une fonction intelligente tête de série pour générer un UHID. Whoa Je ne fais que créer un acronyme?

Et si vous êtes à la recherche spécifiquement pour obtenir la carte mère (BIOS) ID:

WMI class: Win32_BIOS
Namespace: \Root\Cimv2

Documentation: http://msdn.microsoft.com /en-us/library/aa394077(VS.85).aspx
Exemple de code: http://msdn.microsoft.com/ fr-fr / bibliothèque / aa390423% 28VS.85% 29.aspx

Modifier :. Vous n'avez pas spécifié une langue (et je supposais C ++), mais cela peut être fait en Java (avec un pilote COM), et tout langage .NET, ainsi

De nombreux programmes utilisent le HOSTID afin de construire un code de licence (comme celles basées sur FlexLM). Jetez un oeil à ce que Matlab ne en fonction du système d'exploitation:

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

Aussi jeter un oeil à cette question:

Obtenir un identifiant unique d'un système unix

Une fois que j'ai vu aussi quelques programmes Fondant leur licence sur le numéro de série du disque dur, peut-être un qui est la chose moins susceptible de changer. Certains suggèrent d'utiliser le MAC de votre carte Ethernet, mais qui peut être reprogrammé.

MAC NE PAS COMPTER SUR MAC! DÉJÀ. Il n'est pas permanent. L'utilisateur peut facilement changer ( de moins de 30 secondes ).

Volume ID Ne pas se fier ID du volume! DÉJÀ. Il n'est pas permanent. L'utilisateur peut facilement changer. Il modifie également simplement le formatage du disque.

WMI WMI est un service. Peut être facilement désactivé. En fait, j'ai essayé et je trouve que sur de nombreux ordinateurs est désactivé ou cassé (oui, bien souvent cassé).

serveur de licences La connexion à un serveur de validation peut vous causer aussi beaucoup de problèmes parce que:
 * Vos clients ne peuvent pas toujours être connecté à Internet.
 * Vos clients peuvent se connecter avec des paramètres spéciaux (routeur / NAT / proxy / passerelle) dont ils ont besoin pour entrer dans votre programme afin de le laisser se connecter au serveur de validation.
 * Ils peuvent être derrière un pare-feu qui bloque tous les programmes sauf quelques (mon cas). Dans certains cas, le pare-feu ne peut pas être sous leur contrôle (valable pour la plupart des utilisateurs de l'entreprise)!
 * Il est super facile pour rediriger votre programme à un serveur Web faux local qui émule votre serveur de licences.

données matérielles Si vous avez besoin de protection forte, vous devez compter sur le matériel. Quelque chose qui ne peut pas être modifié par l'utilisateur. Quelque chose comme l'instruction ID CPU disponible dans les CPU Intel / AMD et le numéro de série écrit dans l'interface IDE du lecteur.
L'ID du processeur et du disque dur ID sont permanents. Ils ne changeront jamais, même pas après avoir formaté l'ordinateur et réinstaller Windows.

Il est faisable. Par exemple cette bibliothèque lit le matériel ID d'un ordinateur. Il y a une démo compilé et aussi sourcecode / DLL . Avertissement:. Le lien conduit à un produit commercial (19 € / non redevances)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top