Question

Je développe un logiciel de bureau pour un client à revendre. Le client veut limiter le logiciel afin que le code d'enregistrement sera propre à un et un seul ordinateur.

En plus d'utiliser la MAC de la carte réseau, quelqu'un at-il d'autres techniques (que le travail sur Windows et Mac OS X) pour identifier de manière unique un ordinateur?

Était-ce utile?

La solution

Une autre solution consiste à utiliser une technologie de licence avec un dongle . Ceci est un petit appareil qui se branche dans le port USB ou d'une autre d'E / S sur l'hôte, et sert de clé unique physique pour activer le logiciel.

Une troisième solution est de fournir un gestionnaire de licences . Autrement dit, lorsque le logiciel démarre, il interroge un serveur sur le réseau (sur réseau local ou consulté d'autre dans votre entreprise du client via Internet) qui valide le fait que l'utilisation du logiciel du client est légitime. Ceci est une bonne solution pour « licences simultanées » afin que les clients peuvent installer le logiciel sur de nombreux hôtes, mais vous licence pour une utilisation simultanée sur un nombre limité d'hôtes. FLEXnet Publisher est un exemple d'une solution de gestion des licences.

L'adresse MAC de la carte réseau est la solution je dernière fois que je travaillais pour une entreprise qui sous licence logiciel pour fonctionner sur un hôte spécifique.

Cependant, je veux offrir une mise en garde: si vous faites ce type de licence, vous devez prévoir que ça va devenir une corvée administrative en cours pour suivre les licences de vos clients. Une fois que vous avez quelques centaines de clients, vous serez étonné de voir à quelle fréquence vous recevez des appels téléphoniques avec les demandes de modification des clés

  

"Nous avons amélioré notre serveur à un gigabit   carte réseau, et maintenant la licence   ne fonctionnera pas parce que le nouvel adaptateur a   une adresse MAC différente. "

Ou bien les clients peuvent remplacer leur machine entière, et ont besoin d'une licence mise à jour pour lancer votre logiciel sur la nouvelle machine. Nous avons obtenu ces appels pratiquement tous les jours à l'entreprise où je travaillais.

Vous devez également faire confiance au client de cesser d'utiliser votre logiciel sur l'ancien ordinateur (ou carte réseau) si vous leur donnez une nouvelle clé. Si vous ne pouviez pas leur faire confiance pour obéir à la licence en premier lieu, comment pouvez-vous faire confiance qu'ils vont jeter l'ancienne clé?

Si vous ne prévoyez pas comment vous allez soutenir cette activité administrative, ne délivre pas de licence de votre produit de cette façon. Vous incommodant vos bons clients, qui aurait coopéré de toute façon.

Autres conseils

Je vais jouer l'avocat du diable ici et vous dire que quelque chose comme cela est probablement pas la meilleure chose à discuter en « public ».

Cela dit, regardez ce que les autres ont fait et peut-être améliorer (ou prendre une partie) il. adresse MAC, comme vous l'avez dit, est peut-être acceptable d'utiliser. Je l'ai entendu dire que Windows et d'autres programmes utilisent des informations sur le disque dur (numéro de série) - selon ce site , vérifie l'activation de Windows 10 articles différents et les rend dans une clé unique.

meilleure façon est de prendre l'UUID en utilisant C # dans Windows

La meilleure façon de A identifier de manière unique de Windows machines

public string GetUUID()
{
    var procStartInfo = new ProcessStartInfo("cmd", "/c " + "wmic csproduct get UUID")
    {
        RedirectStandardOutput = true,
        UseShellExecute = false,
        CreateNoWindow = true
    };

    var proc = new Process() { StartInfo = procStartInfo };
    proc.Start();

    return proc.StandardOutput.ReadToEnd().Replace("UUID", string.Empty).Trim().ToUpper();
}

Je voudrais simplement utiliser l'adresse MAC pour générer une clé de demande, puis demander aux utilisateurs d'enregistrer avec votre client. Votre client aura une application spéciale qui prend cette clé de demande et produit une clé d'activation que l'utilisateur peut ensuite utiliser pour activer le logiciel. Une fois activé, le logiciel fonctionne, tout fonctionne -. Pas téléphoner de temps en temps à la maison pour la vérification et comme

C'est si elle était une véritable exigence. Ma première tâche serait d'essayer de convaincre le client que c'était une mauvaise idée.

La raison en est que ces régimes pratiquement jamais empêcher votre code d'être fissuré. Ils ne permettent cependant la vie de vos véritables clients plus difficiles. Je trouve qu'il est difficile de penser à toute autre industrie qui sort de sa façon d'agacer ses véritables clients des systèmes qui n'atteindre leurs objectifs (autres que les services gouvernementaux, bien sûr: -).

Si vous doit ce faire, je venais de faire un effort symbolique pour répondre à l'obligation contractuelle (ne dites pas cela, cependant votre client). En prenant l'adresse MAC (ou un nombre aléatoire si, interdire $DEITY, l'ordinateur n'a pas de carte réseau) comme la clé de la demande et à l'aide d'un programme juste avec une XOR chaîne ASCII pour obtenir la clé d'activation, semble être une approche viable. Je voudrais également stocker les clés puisque vous ne voulez pas le logiciel pour désactiver si elles changent simplement leur carte réseau (ou même carte mère) - ils voient encore que le même ordinateur et ne sera pas heureux si le logiciel cesse de fonctionner.

Votre code va se fissurer peu importe (à moins que le programme est des ordures que je suis sûr est pas le cas) - cette méthode donnera à vos véritables clients une avenue pour déplacer leur logiciel vers une autre machine si l'entreprise de votre client ne répond en quelque sorte (gouttes soutien, se retire des affaires, etc.).

Le principal problème avec tous régimes qui reposent sur l'unicité d'un peu de matériel est que le client peut choisir de changer que peu de matériel:

  • ghosting leur contenu du disque sur un disque dur plus grand fait changer de série numéros HD.
  • à l'aide des numéros de série CPU signifie mise à niveau vers la dernière CPU Intel bigmutha tuer votre logiciel.
  • en utilisant l'adresse MAC signifie qu'ils ne peuvent pas changer leur carte réseau.

Ceux-ci peuvent tous être résolus en utilisant ces valeurs pour créer une clé lors de l'installation et ne vérifiez contre cette clé, pas la valeur modifiée six mois sur la piste. Cela signifie que vous devez stocker les valeurs de demande et d'activation, mais les mises à jour ne nécessitera pas vos utilisateurs à passer par le processus de ré-activer leur logiciel. Croyez-moi, ils vous méprisent pour avoir à le faire.

L'idée que je suis en train de jouer avec est en utilisant quelques numéros de série ou identifiant unique est lié au matériel et les hachant ensemble.

Les choses qui se valorisables: -Mémoire -MACs (peut être usurpée, adaptateurs USB se branchés, etc.)

Les choses qui ne ont pas souvent mis à niveau: -CPU -BIOS -Carte mère

L'utilisation WMIC peut être un excellent moyen de saisir quelques informations, je commencerais en saisissant les choses qui ne changent pas souvent que le choix premier et préféré, je voudrais être en mesure d'empreintes digitales au moins 2 numéros de série ou de dispositifs utiliser pour générer une clé d'enregistrement.

wmic cpu get DeviceId /format:value

qui saisira l'ID du processeur, vous pouvez exécuter cette commande pour:

1 - CPU (unité centrale de traitement: DeviceID) 2 - Carte mère (plinthe: serialnumber) 3 - BIOS (bios: SerialNumber)

si vous ne recevez pas au moins 2 valeurs peuplées, puis saisissez

4 - Adaptateur réseau - (nic: MACAddress) 5 - RAM - (memphysical: SerialNumber)

En fonction de votre logique métier, vous pouvez utiliser les deux premiers numéros de série disponibles pour créer votre numéro d'enregistrement, et si vous suivez toujours le même ordre puis réinstalle le numéro d'enregistrement fonctionne toujours, si un changement d'appareil ou un utilisateur tente d'installer sur un ordinateur secondaire de changement de l'identifiant invalidant le numéro d'enregistrement. Pour réduire la quantité de support technique appelle le moins de matériel que vous empreintes digitales donnera le moins de maux de tête et si vous essayez d'empreintes digitales les moins les éléments susceptibles d'être mis à niveau qui réduit encore plus les maux de tête. Ma préférence est de l'ordre ci-dessus.

Vous pouvez utiliser un système d'échange de clés Diffie-Hellman pour que l'utilisateur génère une paire de clés privée / Pulic avec leurs id matériel est comme une charge utile, passer ensuite ces informations à un serveur d'enregistrement où le serveur d'enregistrement utiliserait un partenariat public / clé privée pour décrypter la charge utile et calculer la clé d'enregistrement pour revenir à l'utilisateur final. J'aime utiliser JWT passer des choses avant et en arrière witht il les clés publiques incluses dans la charge utile du JWT. Hope qui aide.

UUID a été mentionné ci-dessus et est une excellente idée que vous pouvez obtenir en utilisant la commande ci-dessous à partir de vos fenêtres cmd.exe:

wmic csproduct get UUID /format:value      

Avertissement ces commandes ne fonctionne que pour Windows 2000 et je pense que ci-dessus mais vous devez vérifier, ils peut-être disponibles pour les systèmes ci-dessous 2000, mais à ce moment-là j'essaie vraiment de ne pas soutenir ces dispositifs. Bonne chance.

Sur Mac:

system_profiler | grep "Serial Number (system)"

Sur Linux (debian):

sudo dmidecode -t system | grep "Serial Number"

dmidecode et system_profiler a d'autres composants, il peut saisir des numéros de série de similaire à wmic dans les fenêtres. Je ne travaille pas sur macs donc je ne peux pas confirmer la liste des spécifications exactes, mais la création d'une liste des LCD (dénominateur commun) les numéros de série pour les pièces que les trois commandes peuvent accéder est mis en place et damée au moins probable pièces à être mis à jour ou modifiées. Ensuite, une combinaison des 2-3 premiers numéros hachurées peut faire pour un identifiant unique de la machine qui est un peu plus robuste et permet une application multi-plateforme à activer même sur un appareil avec son système d'exploitation mis à jour.

Il n'y a pas moyen sûr d'identifier un ordinateur, si vous supposez un ordinateur est construit avec de nombreuses pièces qui peuvent être remplacées par la suite.

Certaines parties de matériel - adresse MAC, le disque dur numéro de série, même série carte mère, etc - sont quelques bonnes sources de « caractère unique », mais comme vous pouvez savoir si un client décide de mettre à niveau la partie la licence dépend ... être préparé pour un soutien à la clientèle. Aussi garder à l'esprit est que certaines parties peuvent être usurpées (MAC étant l'un d'entre eux).

Une vérification de licence en ligne est une autre bonne façon d'aller - vous pouvez tout gérer sur le côté serveur et même définir vos propres règles pour elle (le nombre de licences par client / installer, concurrence, etc.), mais la grande chose à noter est ce qui se passe lorsque la connexion ne peut être établie?

Comment l'utilisation MotherBoard numéro de série unique?

Ouvrez Registre et accédez à

HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Cryptography

Trouver la clé appelée « MachineGUID » cette clé est générée uniquement lors de l'installation de Windows et il ne changera pas indépendamment de tout échange de matériel (hormis le remplacement du disque dur de démarrage en mesure où le système d'exploitation sont installés sur). Cela signifie que si vous voulez garder l'installation de suivi par OS ceci est une autre alternative. Il ne changera pas à moins que vous faites une nouvelle réinstallation de Windows.

Il y avait un numéro de série imprimé dans de l'unité centrale de traitement, pour autant que je l'ai vu bien; ces informations (PSN, Pentium numéro de série) a été dépréciée. Les informations peuvent éventuellement exister encore, mais au moins dans le monde P3 il a disparu. De plus, je pense que le choix évident d'adresse MAC de la carte réseau pour l'interface principale utilisée pour l'hôte doit être considérée comme une réelle possibilité. À moins que votre client ne s'y attend pas des interfaces Ethernet pour être présents sur les hôtes qu'ils vendent.

Vous pourriez envisager un utilitaire de licence tiers qui plus probablement obtenir ce « droit » et également vous fournir (ou votre client) avec des options supplémentaires devraient modifier les exigences (et ne pas qu'ils toujours?). Je mentionne certains par les particuliers nom, mais je ne suis vraiment pas les connaissent très bien.

J'ai une certaine expérience à ce sujet. Dans ma solution nous émettons clé de service lorsque nous vendons le produit au client.

Au client le temps d'installer l'application, il génère une clé en lisant la série de la carte mère de la machine cliente. Le client est censé envoyer un courriel la clé de service et la clé générée à l'installation de notre organisation pour activer le produit.

Nous maintenons une application d'administration à l'organisation à des clés d'activation d'émission. Nous offrons seulement une clé d'activation pour la clé d'une clé de service particulier.

Nous avons vendu nombre de copies et il fonctionne sans problème. Mais nous avons découvert certains ordinateurs qui ne fournissent pas un numéro de série mère. Ces machines renvoient la valeur NULL comme le numéro de série mère. encore nous essayer de résoudre ce problème.

Que diriez-vous hachant tout ce qui a un rémanentes AN, disque dur, proc, ram, etc ... ce hachage restera avec l'ordinateur jusqu'à ce qu'il a ses pièces remplacées.

On peut créer une clé de série que l'utilisateur doit entrer une fois. Il devrait inclure l'adresse e-mail de l'utilisateur (quelque chose comme someuser@mailprovider.com-9828372-398232). Cela empêchera beaucoup de gens d'essayer de falsifier ou de le donner à d'autres personnes. Lors de l'activation, le logiciel doit vérifier contre une db en ligne si la clé existe en série.

Ou vous pouvez simplement avoir aucun code d'activation et vérifiez que vous disposez des droits d'audit écrit dans le contrat de licence et exercer votre droit de vérifier de temps en temps.

fait des merveilles pour Oracle.

HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Cryptography

touche "MachineGuid » est générée uniquement lors de l'installation de Windows et il ne changera pas indépendamment de tout échange de matériel (hormis le remplacement du disque dur de démarrage en mesure où le système d'exploitation sont installés sur). Je ne suis pas sûr à ce sujet .

MY SUGGESTION

Vous pouvez utiliser ce MachineGuid, numéro de série du disque dur, Carte mère Numéro de série et UUID. Ensemble de hachage, il utilisant SHA 256 ou toute autre fonction de hachage.

UUID - wmic csproduct obtenir UUID

MachineGuid - HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Cryptography

Numéro de série du disque dur - wmic diskdrive get serialnumber

BIOS Numéro de série - bios wmic obtenir serialnumber

Carte mère Numéro de série - Plinthe wmic obtenir serialnumber

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