IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 Delphi Discussion :

Générer un GUID (n° unique) par machine sur tous les OS


Sujet :

Delphi

  1. #1
    Débutant
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    886
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 886
    Points : 330
    Points
    330
    Par défaut Générer un GUID (n° unique) par machine sur tous les OS
    salut

    quand je dis tous les Os c'est windows XP- Vista

    ce que je cherche a déjà été posté par moi même ici :

    http://www.developpez.net/forums/sho...d.php?t=586052

    mais on ne me répond plus labà et comme les modo n'aiment pas qu'on remonte de vieux topic, j'en ai recréé un

    si je relance le sujet, c'est que la réponse donnée n'ai pas satisfaisante

    trop de personne ont eu "mac not found" c'est qu'ils n'ont donc pas de carte réseau ?

    alors il me faut un autre GUID, mais qui ne se base pas sur la carte mac

    merci d'avance

  2. #2
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 430
    Points
    28 430
    Par défaut
    et que fais tu de la fonction CoCreateGUID ?
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  3. #3
    Expert confirmé

    Profil pro
    Leader Technique
    Inscrit en
    Juin 2005
    Messages
    1 756
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Leader Technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 756
    Points : 4 170
    Points
    4 170
    Par défaut
    Comme l'a indiqué Paul TOTH, pour générer un GUID c'est CoCreateGUID.

    Par contre, vu ton post d'origine n'espère pas identifier une machine de manière unique de cette façon.
    On te l'as déjà dit dans ton autre post, il n'y a pas de solution miracle. Même Microsoft n'a pas trouvé de solution pour l'activation de Windows.

    Il faudra faire des compromis et accepter que la solution ne sera pas parfaite. Après le choix de la solution dépend de l'usage que tu veux faire de cet identifiant.

  4. #4
    Débutant
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    886
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 886
    Points : 330
    Points
    330
    Par défaut
    dans la faq j'ai trouvé :

    http://www.developpez.com/delphi/faq...DDynamiquement

    mais à chaque fois il me génère un string différent alors que je suis sur le meme pc

    apparemment cette fonction ne fait pas ce que je recherche; moi je veux une fonction qui génère un nombre / string unique par pc

    Citation Envoyé par Franck SORIANO Voir le message
    Il faudra faire des compromis et accepter que la solution ne sera pas parfaite. Après le choix de la solution dépend de l'usage que tu veux faire de cet identifiant.
    ok je suis d'accord, mais il dois quand même bien y avoir un moyen assez tranquille pour le faire

    en faite c'est pour mon tchat, je veux pouvoir bannir un user sans bannir l'ip, donc j'ai pensé à bannir son matériel

    avant j'utilisais le n° de disque dur, mais je me susi rendu compte, que plusieurs personnes avaient le même et qu'il changeait au format

    j'ai aussi pensé à une combinaison genre : n° disque + marque carte graphique + ram + process + nom de ssion

    là ce sera un peu plus à trouver quelqu'un qui à le même, mais le moindre changement de pièce, changera le string retourné ...

    alors je vous demandez votre avis, sans pour autan exiger un truc de ouf, c'est juste une manière de différencier un pc connecté sur mon server

  5. #5
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 430
    Points
    28 430
    Par défaut
    ah ok, j'avais pas compris la question.

    alors soit tu as affaire a un débutant et il suffit qu'au premier lancement ton programme génère un GUID qu'il stock et voila un client identifié.

    soit tu as affaire un quelqu'un qui s'y connait un peu plus et tu ne pourras pas l'identifier. même le n° se série des processeurs Intel est désactivable.
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  6. #6
    Membre expérimenté

    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    685
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 685
    Points : 1 608
    Points
    1 608
    Par défaut
    alors je vous demandez votre avis, sans pour autan exiger un truc de ouf, c'est juste une manière de différencier un pc connecté sur mon server
    Adresse MAC de la carte réseau... Qui n'a pas de carte réseau ?... De plus, l'adresse ne change pas en général (on en revient à la solution originale !)
    "It's more fun to compute !"

  7. #7
    Rédacteur/Modérateur
    Avatar de ero-sennin
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    2 965
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 2 965
    Points : 4 935
    Points
    4 935
    Par défaut
    Citation Envoyé par Reisubar Voir le message
    Adresse MAC de la carte réseau... Qui n'a pas de carte réseau ?... De plus, l'adresse ne change pas en général (on en revient à la solution originale !)
    Qui plus est, pour utiliser un programme de tchat, c'est indispensable, sinon ... heu, faudra se partager le clavier


  8. #8
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 430
    Points
    28 430
    Par défaut
    Citation Envoyé par Reisubar Voir le message
    Adresse MAC de la carte réseau... Qui n'a pas de carte réseau ?... De plus, l'adresse ne change pas en général (on en revient à la solution originale !)
    moi si je veux absolument venir sur ce chat dont j'ai été bannis, j'installe VMWare et hop, me voila avec une nouvelle adresse MAC
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  9. #9
    Membre expérimenté

    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    685
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 685
    Points : 1 608
    Points
    1 608
    Par défaut
    Je crois donc qu'il reste plus qu'à faire comme tout le monde fait sur Internet : bannir à partir de l'IP
    "It's more fun to compute !"

  10. #10
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 430
    Points
    28 430
    Par défaut
    Citation Envoyé par Reisubar Voir le message
    Je crois donc qu'il reste plus qu'à faire comme tout le monde fait sur Internet : bannir à partir de l'IP
    le seul hic avec cette méthode c'est le cas des réseaux d'entreprise (ou de particulier mais c'est moins grave) ou la même @IP est utilisée pour tous les PC du réseau..
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  11. #11
    Membre expérimenté

    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2004
    Messages : 897
    Points : 1 561
    Points
    1 561
    Par défaut
    Citation Envoyé par Reisubar Voir le message
    Je crois donc qu'il reste plus qu'à faire comme tout le monde fait sur Internet : bannir à partir de l'IP
    Et si le petit malin passe par un proxy ?
    Pensez à utiliser les tags dans le titre.
    Avant de poser une question reportez-vous à la FAQ Delphi
    Respectez les règles du forum.

  12. #12
    Membre expérimenté

    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    685
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 685
    Points : 1 608
    Points
    1 608
    Par défaut
    Et si le petit malin passe par un proxy ?
    Quoi qu'on fasse, il n'y a pas de solution miracle, de toute façon. Il y aura toujours des "petits malins" qui contourneront les protections des autres :-)
    "It's more fun to compute !"

  13. #13
    Débutant
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    886
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 886
    Points : 330
    Points
    330
    Par défaut
    ça fait super plaisir de voir tant de reply, tant de participation

    c'est que le sujet est intéressant, j'en remercie tous ceux qui y ont contribué

    j'ai analysé vos réponses et je vous donne mes impressions :

    _ par ip : il n'en est pas question, car : on peut passer par un proxy ou un sock, comme l'a dit paul, si on bannit une ip d'un réseau tous les pc seront bannis, mais l'inconvénient le plus important, c'est que beaucoup de pc se connectent avec des fai n'ayant pas d'ip fixe, donc on bannis une range, d'autres personnes sont touché

    _ par adresse mac : c'est ce que j'utilise en ce moment et je vous explique pourquoi je dois changer : déjà j'ai souvent lu que "c'est facile de changer son adresse mac" mais bon ça ne me dérange pas, car, déjà on s'adresse à des utilisateurs un peu plus avancé (et encore); ce qui m'a le plus poussé au changement est que BEAUCOUP n'avaient pas de carte réseau OU ALORS, la fonction utilisé / trouvé dans la faq n'est pas efficace :

    http://www.developpez.com/delphi/faq...eau#adressemac

    je retrouve pas mal de "mac not found"

    _ solution de Paul, générer un GUID à la première exécution : ça me semble bien intéressant, si la génération est vraiment unique, ça peut être bien efficace (je dis si, car je ne sais pas si cette fonction est puissante); donc en faite c'est comme si j'utilisais le n° de série "unique" d'un autre matériel

    dans ce cas j'aimerais votre avis sur la fonction que j'ai posté plus haut, si c'est qu'il n'y aura pas de doublons

    après c'est sur qu'en utilisant une machine virtuel, on pourra passer, mais là encore c'est quelqu'un qui sera vraiment acharné lol, et là encore je pense que je peux faire en sorte que mon prog ne fonctionne pas sur les machine virtuel mais j'irai pas jusqu'à là

    _ pour finir, je donne une idée que j'ai eu : j'utilisais avant le n° du disque dur, mais il y avait des doublons et donc je suis passé aux adresse MAC; mais j'ai entendu dire qu'il y a 2 type de n° de disque dur, physique et logique, et que l'un d'entre eux est vraiment unique, mais là encore les fonction trouvé sur le net ne fonctionnent pas toujours, mais si vous en savez un peu,ça peut être une meilleur option ?


    merci encore vous votre contribution

  14. #14
    Expert éminent sénior

    Avatar de sjrd
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2004
    Messages
    4 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Suisse

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2004
    Messages : 4 517
    Points : 10 154
    Points
    10 154
    Par défaut
    Les GUID ne s'appellent pas Globally Unique IDentifier pour rien. C'est qu'ils sont vraiment uniques. Ils sont générés sur base du n° de série de la carte mère, de la date/heure, et d'un nombre aléatoire.

    Par contre, il faut encore empêcher l'utilisateur de modifier ce GUID
    sjrd, ancien rédacteur/modérateur Delphi.
    Auteur de Scala.js, le compilateur de Scala vers JavaScript, et directeur technique du Scala Center à l'EPFL.
    Découvrez Mes tutoriels.

  15. #15
    Débutant
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    886
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 886
    Points : 330
    Points
    330
    Par défaut
    Citation Envoyé par sjrd Voir le message
    Les GUID ne s'appellent pas Globally Unique IDentifier pour rien. C'est qu'ils sont vraiment uniques. Ils sont générés sur base du n° de série de la carte mère, de la date/heure, et d'un nombre aléatoire.

    Par contre, il faut encore empêcher l'utilisateur de modifier ce GUID
    merci ta réponse me rassure

    pour modifier, il faut déjà que l'utilisateur sache ce que j'utilise :p

    j'ai pensé à faire une entré dans la bdd propre, mais a risque peut être de déclencher un anti spyware ? alors je me disais qu'un simple .ini dans windir serait plus efficace ?

  16. #16
    Rédacteur/Modérateur
    Avatar de ero-sennin
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    2 965
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 2 965
    Points : 4 935
    Points
    4 935
    Par défaut
    Ou alors une entrée registre encore ... Ca sera déjà plus discret qu'un fichier ini qu'on peut supprimer

  17. #17
    Expert confirmé

    Profil pro
    Leader Technique
    Inscrit en
    Juin 2005
    Messages
    1 756
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Leader Technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 756
    Points : 4 170
    Points
    4 170
    Par défaut
    Que ce soit avec un ini ou la base de registre, ça se repère en 30s avec un RegMon ou un FileMon.

    Et maintenant, il y a Process Monitor qui réunit les deux en un seul utilitaire :
    http://technet.microsoft.com/fr-fr/s...45(en-us).aspx

  18. #18
    Débutant
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    886
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 886
    Points : 330
    Points
    330
    Par défaut
    oui mais création d'un fichier non exécutable, sans lancement, c'est moins suspect qu'une entrée dans la bdd non ?

  19. #19
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 455
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 455
    Points : 24 867
    Points
    24 867
    Par défaut
    Je vais revenir à la source du problème :
    Bannir un membre d'un TChat

    On peut supposer que tu développes le client installé !
    Si non,
    La solution du Numéro de Série (DD, CPU, ...) c'est surement une des seules solutions autre que le GUID, l'IP ou le Adresse MAC, à toi de pondre un algo ... mais l'erreur d'adresse Mac, étrange, comment un programme de chat en réseau pourrait-il fonctionner sans adresse MAC, problème de carte intégrée à la carte mère donc numéro irrecupérable ? BIOS tout pourri ? étrange ... passons ...

    Si oui,
    Tu fais un système de licence comme l'avait proposé SergioMaster dans l'autre sujet, et en reprenant les idées de stockages du GUID Paul TOTH

    Alors on part sur le GUID, en fait ce n'est pas le client qui le calculera mais le serveur ! bidouille un truc pour avoir un ID TRES LONG (basé sur un GUID du client, son IP, le GUID du Serveur, ... le tout encodé à ta sauce sur 255 octets)
    Ton programme lors de son premier lancement, elle vérifie une constante, si la globale est vide (la valeur par défaut genre 00 00 00 00 00 00 00 00, une très grande valeur ça sera mieux disons sur 255 octets par exemple) ,tu lance une demande de récupération d'ID auprès du serveur (tu lui envoie au passage un GUID par exemple), tu recopie l'exe, tu modifie la copie en remplaçant les 00 00 par la nouvelle valeur (disons cette valeur est dans une ressource avec un nom pas trop parlant pour éviter que ça se devine ou entourer par d'autres constantes pour remplacer comme un sauvage dans le binaire), évidemment, tu stockes c'est ID dans une table sur le serveur,
    Si un banni se connecte, il se fera jeté car lorsque le programme se connecte, il lit la constante et l'envoi au serveur, ce dernier décide de laisser ouvert ou non la connexion
    Si un numéro non existant se connecte, il sera jeté car non présent dans la table
    Si par hazard, quelqu'un trouve une combinaison d'un autre utilisateur parmis les 256 puissance 256 arrangements possibles, c'est qu'avec autant de chance il mérité bien de se connecter

    euh, ou en étais-je, oui, tu viens de récupérer l'ID, tu as fait une copie de l'instance, tu génère un bat, celui-ci va renommer l'instance en cours, puis la supprimer, puis renommer la copie avec le nom réelle, et la lancer, ... voir ICI..., d'ailleurs, dans ce sujet, la même méthode tordue est utilisée mais conjointe avec un serveur d'autorisation c'est imparrable non, car même si l'on tente de modifier le binaire (il y a toujours des malins), le serveur coupant de lui-même la connexion, ...

    Imaginons, Actuellement, tu as un parc de 1000 clients, tu proposes à tes utilisateurs de télécharger la dernière version (d'ailleurs inclure la mise à jour automatique comme ICI), et comme, il n'envoit pas leur code à leur connexion, il se font déconnecter avec un message du serveur réclamant la dernière version ...

    Allez, c'est une solution à la con, ... mais ça doit être marrant à tenter ...
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  20. #20
    Expert confirmé

    Profil pro
    Leader Technique
    Inscrit en
    Juin 2005
    Messages
    1 756
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Leader Technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 756
    Points : 4 170
    Points
    4 170
    Par défaut
    heu, j'ai pas tout compris mais si tu réinstalles l'appli ?

    La globale va repasser à 0 et le prog va simplement demander un nouvel ID non ?

Discussions similaires

  1. [XL-2013] Modifier largeur plusieurs colonnes par vba sur toutes les feuilles d'un classer=ur
    Par bidochon34800 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 06/02/2015, 08h36
  2. Récupérer un identifiant unique par machine ?
    Par [ZiP] dans le forum Débuter
    Réponses: 18
    Dernier message: 17/02/2009, 07h36
  3. [MySQL] Faire une recherche sur tous les champ commencant par ..
    Par bullrot dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 31/10/2008, 11h45
  4. optimiser code sql access par boucle sur tous les chkbox
    Par thiefer dans le forum Requêtes et SQL.
    Réponses: 8
    Dernier message: 25/09/2008, 21h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo