[C#] Unieke identifier

Pagina: 1
Acties:

Onderwerpen


  • Rednas_N
  • Registratie: September 2010
  • Laatst online: 21:11
Beste Tweakers,

Ik moet een applicatie schrijven die zich moet melden bij de database. De applicatie zal over ongeveer 500 systemen gedistribueerd worden, op zich geen probleem. Wat wel een probleem is, is het id van een systeem. Ik wil graag een unieke identificatie van een Windows laptop/pc.

Nu ben ik erachter gekomen dat het Mac-adres van een computer uniek is, maar op het moment dat de gebruiker een netwerkkaart zal uitschakelen, denkt de database dat het om een nieuw systeem gaat, en voegt vervolgens het systeem opnieuw toe aan de database.

Ook heb ik gekeken naar een harddrive serial, maar op het moment dat de gebruiker een USB stick of een andere externe hardeschijf erbij plugt, moet ik gaan uitzoeken welke harddrive er nou werkelijk in de computer zit, en veranderd de key dus ook weer. Ik heb trouwens ook nog het processor id geprobeerd, maar deze bleek gelijk te zijn met een andere processor, geen optie dus.

Zijn er toevallig nog andere unieke id's waarmee ik een systeem kan identificeren?

Just do it.


  • Thralas
  • Registratie: December 2002
  • Laatst online: 23:26
System.Guid is wat je zoekt. Gebruikt onder water UuidCreate, denk ik.

  • Rednas_N
  • Registratie: September 2010
  • Laatst online: 21:11
Het is inderdaad uniek, het enige nadeel is, is dat het telkens veranderd bij het opnieuw opstarten van de applicatie. Ik moet eigenlijk iets hebben dat uniek is, en niet veranderd.

Just do it.


  • Ventieldopje
  • Registratie: December 2005
  • Laatst online: 17-09 10:59

Ventieldopje

I'm not your pal, mate!

Rednas_N schreef op donderdag 23 februari 2012 @ 18:36:
Het is inderdaad uniek, het enige nadeel is, is dat het telkens veranderd bij het opnieuw opstarten van de applicatie. Ik moet eigenlijk iets hebben dat uniek is, en niet veranderd.
Als het goed is niet, je applicatie heeft een unieke GUID ;)

www.maartendeboer.net
1D X | 5Ds | Zeiss Milvus 25, 50, 85 f/1.4 | Zeiss Otus 55 f/1.4 | Canon 200 f/1.8 | Canon 200 f/2 | Canon 300 f/2.8


  • Rednas_N
  • Registratie: September 2010
  • Laatst online: 21:11
Oke, dat is raar. ik heb voor het gemak even het voorbeeld gepakt dat op de Microsoft site staat;

code:
1
2
3
4
5
6
  Guid g;
// Create and display the value of two GUIDs.
    g = Guid.NewGuid();
    Console.WriteLine(g);
    Console.WriteLine(Guid.NewGuid());
    }


Ik krijg telkens andere waardes terug..

Just do it.


  • Herko_ter_Horst
  • Registratie: November 2002
  • Niet online
Volgens mij is er geen waterdichte unieke identificatie van een systeem mogelijk.

Ik zou gewoon een GUID genereren en opslaan op de PC. Als die er niet is, is het blijkbaar een nieuwe PC of een nieuwe installatie op dezelfde PC.

Edit:
System.NewGuid geeft al een beetje aan dat je elke keer iets anders krijgt :)

[ Voor 16% gewijzigd door Herko_ter_Horst op 23-02-2012 18:44 ]

"Any sufficiently advanced technology is indistinguishable from magic."


  • Ventieldopje
  • Registratie: December 2005
  • Laatst online: 17-09 10:59

Ventieldopje

I'm not your pal, mate!

Kijk eens in je assembly info voor de gein, daar kun je je GUID zien :)

www.maartendeboer.net
1D X | 5Ds | Zeiss Milvus 25, 50, 85 f/1.4 | Zeiss Otus 55 f/1.4 | Canon 200 f/1.8 | Canon 200 f/2 | Canon 300 f/2.8


  • Herko_ter_Horst
  • Registratie: November 2002
  • Niet online
Leuk en aardig, maar hoe gaat een applicatie GUID helpen om een PC te identificeren?

"Any sufficiently advanced technology is indistinguishable from magic."


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Helemaal niet ;)
Ventieldopje schreef op donderdag 23 februari 2012 @ 18:44:
Kijk eens in je assembly info voor de gein, daar kun je je GUID zien :)
Die is uniek voor je applicatie. TS wil het systeem (als in; de PC/machine) uniek identificeren.
Herko_ter_Horst schreef op donderdag 23 februari 2012 @ 18:42:
Ik zou gewoon een GUID genereren en opslaan op de PC. Als die er niet is, is het blijkbaar een nieuwe PC of een nieuwe installatie op dezelfde PC.
Zoiets is wel 't makkelijkst.

[ Voor 63% gewijzigd door RobIII op 23-02-2012 18:46 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • Ventieldopje
  • Registratie: December 2005
  • Laatst online: 17-09 10:59

Ventieldopje

I'm not your pal, mate!

RobIII schreef op donderdag 23 februari 2012 @ 18:45:
[...]

Die is uniek voor je applicatie. TS wil het systeem (als in; de PC/machine) uniek identificeren.
Ook heb ik gekeken naar een harddrive serial, maar op het moment dat de gebruiker een USB stick of een andere externe hardeschijf erbij plugt, moet ik gaan uitzoeken welke harddrive er nou werkelijk in de computer zit, en veranderd de key dus ook weer. Ik heb trouwens ook nog het processor id geprobeerd, maar deze bleek gelijk te zijn met een andere processor, geen optie dus.
Zelf de TS lezen is ook een kunst ;) .. Idd best een kunst :X

[ Voor 3% gewijzigd door Ventieldopje op 23-02-2012 18:47 ]

www.maartendeboer.net
1D X | 5Ds | Zeiss Milvus 25, 50, 85 f/1.4 | Zeiss Otus 55 f/1.4 | Canon 200 f/1.8 | Canon 200 f/2 | Canon 300 f/2.8


  • Rednas_N
  • Registratie: September 2010
  • Laatst online: 21:11
Het is zeg maar zo, de applicatie wordt gestart via een netwerkschijf, vervolgens verzamelt de applicatie wat gegevens over de pc. Deze gegevens worden naar een webservice toegestuurd, en die handelt het vervolgens allemaal af. Maar om het af te handelen moet de service wel weten over welke pc het gaat.

Just do it.


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Ventieldopje schreef op donderdag 23 februari 2012 @ 18:46:
[...]


[...]


Zelf de TS lezen is ook een kunst ;) .. Idd best een kunst :X
Euh; helemaal niet:
Rednas_N schreef op donderdag 23 februari 2012 @ 18:27:
Wat wel een probleem is, is het id van een systeem. Ik wil graag een unieke identificatie van een Windows laptop/pc.

...

Zijn er toevallig nog andere unieke id's waarmee ik een systeem kan identificeren?
Het stuk dat jij quote bewijst alleen dat het "unieke systeem id" dat je zou baseren op een HDD serial of Mac-adres zou wijzigen op 't moment dat je een HDD/NIC vervangt etc.

[ Voor 15% gewijzigd door RobIII op 23-02-2012 18:48 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • mrFoce
  • Registratie: Augustus 2004
  • Laatst online: 09-09 17:18
Volgens mij is dit niet mogelijk. Je kan wel een GUID maken op basis van enkele elementen, bijvoorbeeld het serie nummer van het moederbord, i.c.m. met wat andere hardware. Maar aangezien je application van de netwerk schrijf draait, gaat het lastig worden met rechten. Indien je applicatie naar de lokale computer kan schrijven, zou je een register entry kunnen aanmaken of een bestand ergens plaatsen en die uitlezen?
Als het bestand niet bestaat, is het een nieuwe computer?

Indien het om een nieuwe computer gaat, zou je een GUID kunnen genereren en wat extra informatie zoals computer naam, user, domain etc?

  • Herko_ter_Horst
  • Registratie: November 2002
  • Niet online
Rednas_N schreef op donderdag 23 februari 2012 @ 18:47:
Het is zeg maar zo, de applicatie wordt gestart via een netwerkschijf, vervolgens verzamelt de applicatie wat gegevens over de pc. Deze gegevens worden naar een webservice toegsetuurd, en die handelt het vervolgens allemaal af. Maar om het af te handelen moet de service wel weten over welke pc het gaat.
Zoals ik dus al zei:
Herko_ter_Horst schreef op donderdag 23 februari 2012 @ 18:42:
Volgens mij is er geen waterdichte unieke identificatie van een systeem mogelijk.

Ik zou gewoon een GUID genereren en opslaan op de PC. Als die er niet is, is het blijkbaar een nieuwe PC of een nieuwe installatie op dezelfde PC.

[ Voor 34% gewijzigd door Herko_ter_Horst op 23-02-2012 18:55 ]

"Any sufficiently advanced technology is indistinguishable from magic."


  • Arcesilaus
  • Registratie: Maart 2000
  • Laatst online: 16-09 10:26
Is dit iets?

Homo sum: humani nil a me alienum puto


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Het probleem zit 'm voornamelijk (denk ik) in wat er gebeurt wanneer je een machine cloned (wat nogal eens gebeurt in corporate omgevingen). Dus je wil eigenlijk niet iets in het register of op schijf ofzo opslaan want dat wordt gewoon meegecloned. En het baseren op hardware is lastig omdat (bijna?) alle ID's die in een machine zitten onbetrouwbaar zijn; MAC-adres(sen) is te clonen (of kan afwezig zijn zelfs), HDD serials gaan mee als je cloned (toch?), CPUID's kunnen uit staan enz.

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • frG
  • Registratie: Augustus 2004
  • Laatst online: 16-09 20:39

frG

Waarom kan je niet gewoon de computernaam zelf gebruiken? Het gaat om een intern netwerk neem ik aan?

  • Rednas_N
  • Registratie: September 2010
  • Laatst online: 21:11
Computernamen kunnen ook dubbel zijn, ondanks dat je dan fouten krijgt...

Just do it.


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Hier is 't ook al honderden keren besproken en echt een waterdichte oplossing heb ik er nog niet tussen gevonden so far (of je moet met donles o.i.d. gaan werken). Je moet jezelf ook even afvragen wat 't je waard is en wat het mag kosten in tijd (ontwikkeling e.d.) en centen en hoe betrouwbaar je de/een machine-ID wil hebben.

Wil je helemaal nuts gaan dan kun je een machine "fingerprinten"; met zo'n fingerprint kun je dan bepaalde (kleine) wijzigingen opvangen en daarmee een machine nog steeds identificeren. Als je, bij wijze van, een MAC adres, HDD serial, BIOS serial, Windows installatie UUID dinges en nog wat zaken zou opnemen in je fingerprint dan kun je, wanneer er bijvoorbeeld een netwerkkaart vervangen wordt toch nog de machine identificeren (en de fingerprint bijwerken). Zo werkt Windows' eigen activatie dinges ook: Je kunt best het een-en-ander vervangen zonder dat 'ie gaat zeuren maar vervang je in 1 klap (ik roep wat) de NIC, HDD en CPU dan moet je opnieuw activeren. Doe je het 1-voor-1 dan is er niets aan de hand (zover ik weet althans :P )
If the system is booted up with significant hardware changes, the application will likely require reactivation
Hou dan wel in je achterhoofd dat je geen (generieke) hash o.i.d. moet gaan trekken van die fingerprint want dan kun je de unieke onderdelen niet meer identificeren en is 1 kleine wijziging voldoende voor een compleet verschillende hash. Je zult dus uiteindelijk een soort "best match" (die dus niet 100% overeen hoeft te komen) moeten kunnen vinden tussen alle fingerprints. Hoe meer zaken je opneemt in je fingerprint hoe beter (over het algemeen).

Dit artikel mikt wel heel erg op browsers/web maar geeft wel een uitgangspunt denk ik en hier heb je een lijstje waar WGA de "fingerprint" op baseert.

[ Voor 77% gewijzigd door RobIII op 23-02-2012 19:32 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • Herko_ter_Horst
  • Registratie: November 2002
  • Niet online
De TS heeft nog niet gereageerd op het idee om een GUID op de machine op te slaan. Spelen daar inderdaad de issues die RobIII aankaart of is er een andere reden waarom dit het probleem niet oplost?

"Any sufficiently advanced technology is indistinguishable from magic."


  • Rednas_N
  • Registratie: September 2010
  • Laatst online: 21:11
GUID op de machine zelf opslaan nis in principe wel een optie, als de applicatie in deze situatie daar rechten voor heeft, dat zou ik even moeten onderzoeken.

Ik ga eens even verder zoeken naar oplossingen, en als ik een definitieve oplossing heb, laat ik het jullie zeker weten. Ik denk ook niet dat ik de enige ben, dus ik ga ervan uit dat er vast wel oplossingen zijn die goed werken.

Ik ben wel blij dat er serieus op mijn vraag is ingegaan! Dank jullie wel!

Just do it.


  • pedorus
  • Registratie: Januari 2008
  • Niet online
Moet het ook op virtuele machines werken? MAC-adressen zou dan toch het beste werken waarschijnlijk (worden uniek gemaakt normaal gesproken), de rest komt dan exact overeen... Afhankelijk van de toepassing lijkt het me niet zo heel erg dat bij het vervangen/wijzigen van de primaire kaart de boel wijzigt.

Vitamine D tekorten in Nederland | Dodelijk coronaforum gesloten


Acties:
  • 0 Henk 'm!

  • Rednas_N
  • Registratie: September 2010
  • Laatst online: 21:11
@RobIII

Ik denk dat ik begrijp wat je bedoelt. Ik heb nu een key die ik genereer aan de hand van de volgende systeemeigenschappen; CPU, moederbord, mac-adres en hardeschijfnummer.

Deze combineer ik en krijg ik uiteindelijk zoiets als dit eruit;
4656-4C44-3035-4A2E-2E43 etc...

Deze kan ik in de database stoppen, en als er een verandering is of iets anders, kan ik 'blokken' tellen, en de PC met de meeste blokken zouden we het over moeten hebben. Dit moet ik eerst nog verder onderzoeken, want ik weet niet precies hoe het zit met andere pc's in het desbetreffende netwerk, aangezien ik het wel op een ander PC heb getest, en ik best veel overeenkomsten kreeg.

Just do it.


Acties:
  • 0 Henk 'm!

  • epic007
  • Registratie: Februari 2004
  • Laatst online: 25-08 11:27
Kan je app niet gewoon een id aanvragen bij de database?

Acties:
  • 0 Henk 'm!

  • Megamind
  • Registratie: Augustus 2002
  • Laatst online: 10-09 22:45
Windows Product ID? Deze kan niet zomaar gewijzigd worden, de kans dat deze veranderd is klein..

Acties:
  • 0 Henk 'm!

  • Sebazzz
  • Registratie: September 2006
  • Laatst online: 16-09 15:42

Sebazzz

3dp

Megamind schreef op vrijdag 24 februari 2012 @ 18:10:
Windows Product ID? Deze kan niet zomaar gewijzigd worden, de kans dat deze veranderd is klein..
Bij volume license zijn de keys toch gelijk?

[Te koop: 3D printers] [Website] Agile tools: [Return: retrospectives] [Pokertime: planning poker]


Acties:
  • 0 Henk 'm!

  • MLM
  • Registratie: Juli 2004
  • Laatst online: 12-03-2023

MLM

aka Zolo

Het makkelijkste (one-liner) is om in je application configuration een GUID op te slaan, dat is waardeloos qua beveiliging, maar wel prima voor identificatie van goedwillenden.

Nogal afhankelijk van het doel waarmee je de identificatie wilt gebruiken, als het is om wat favoriete UI kleurtjes op te slaan, is het prima, voor betalingsverkeer niet :)

-niks-


Acties:
  • 0 Henk 'm!

  • Rednas_N
  • Registratie: September 2010
  • Laatst online: 21:11
@MLM
Ik weet niet of dat in dit geval de juiste optie is. De applicatie wordt gestart vanaf een netwerkschijf, en zal door diverse PC's gebruikt worden. Dus als ik het goed begrijp, krijgen al die pc's dan dezelfde GUID.

@Megamind
Hoe zit het dan met images, op het moment dat er een image teruggezet wordt, veranderd dan de product key?

Ik heb zelf ook nog even goed nagedacht. Ik denk dat ik toch mijn aandacht ga vestigen op het Mac adres/Mac adressen. Deze zullen wat er ook gebeurd uniek blijven. Mocht er een netwerkkaart vervangen worden, dan blijft de hostname (neem ik aan) van de PC nog gewoon bestaan, en kan ik vervolgens de PC in de database updaten aan de hand van de hostname, zie het als een soort van reserve identiteit.

De hostname moet alleen wel uniek blijven.

Ik denk dat dit tot nu toe de beste oplossing is.

[ Voor 5% gewijzigd door Rednas_N op 24-02-2012 20:37 ]

Just do it.


Acties:
  • 0 Henk 'm!

  • Megamind
  • Registratie: Augustus 2002
  • Laatst online: 10-09 22:45
Rednas_N schreef op vrijdag 24 februari 2012 @ 20:37:
Ik heb zelf ook nog even goed nagedacht. Ik denk dat ik toch mijn aandacht ga vestigen op het Mac adres/Mac adressen. Deze zullen wat er ook gebeurd uniek blijven. Mocht er een netwerkkaart vervangen worden, dan blijft de hostname (neem ik aan) van de PC nog gewoon bestaan, en kan ik vervolgens de PC in de database updaten aan de hand van de hostname, zie het als een soort van reserve identiteit.

De hostname moet alleen wel uniek blijven.

Ik denk dat dit tot nu toe de beste oplossing is.
Omdat het om een zakelijke omgeving valt lijkt mij dit wel veilig, maar een Mac adres wijzigen is nogal simpel, daarnaast moet je rekening houden met laptop gebruikers welke met wireless en wired geconnect kunnen worden.

Is een inlogscherm adv LDAP niet makkelijker (aangenomen dat er wel een domain controller is).

Acties:
  • 0 Henk 'm!

  • MLM
  • Registratie: Juli 2004
  • Laatst online: 12-03-2023

MLM

aka Zolo

Rednas_N schreef op vrijdag 24 februari 2012 @ 20:37:
@MLM
Ik weet niet of dat in dit geval de juiste optie is. De applicatie wordt gestart vanaf een netwerkschijf, en zal door diverse PC's gebruikt worden. Dus als ik het goed begrijp, krijgen al die pc's dan dezelfde GUID.

...
Ik ben niet zeker tbh, volgens mij zet .NET standaard de config in AppData, dus dan zou het per user zijn, maar daar wil ik van af zijn. Anders kan je het handmatig doen (gewoon zelf een file in AppData zetten met XMLSerializer oid)

-niks-


Acties:
  • 0 Henk 'm!

  • ReTechNL
  • Registratie: December 2008
  • Laatst online: 15-09 11:22
Je zou een MD5 hash kunnen maken van het volgende bestand:
code:
1
C:\Windows\ServiceProfiles\NetWorkService\AppData\Roaming\Microsoft\SoftwareProtectionPlatform\tokens.dat


code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
/// <summary>
/// method for getting a files MD5 hash, say for
/// a checksum operation
/// </summary>
/// <param name="file">the file we want the has from</param>
/// <returns></returns>
public string getFilesMD5Hash(string file)
{
    //MD5 hash provider for computing the hash of the file
    MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider();

    //open the file
    FileStream stream = new FileStream(file, FileMode.Open, FileAccess.Read, FileShare.Read, 8192);

    //calculate the files hash
    md5.ComputeHash(stream);

    //close our stream
    stream.Close();
    
    //byte array of files hash
    byte[] hash = md5.Hash;

    //string builder to hold the results
    StringBuilder sb = new StringBuilder();

    //loop through each byte in the byte array
    foreach(byte b in hash)
    {
        //format each byte into the proper value and append
        //current value to return value
        sb.Append(string.Format("{0:X2}", b));
    }
    
    //return the MD5 hash of the file
    return sb.ToString();
}

MD5 Calculator source: http://www.dreamincode.net/code/snippet4207.htm

Dit is slechts een suggestie. dit bestand zou uniek moeten zijn omdat hier je licentie informatie in wordt opgeslagen.

[ Voor 4% gewijzigd door ReTechNL op 24-02-2012 23:08 ]


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
ReTechNL schreef op vrijdag 24 februari 2012 @ 23:00:
Dit is slechts een suggestie. dit bestand zou uniek moeten zijn omdat hier je licentie informatie in wordt opgeslagen.
En wat pas 5 keer aangekaart is in dit topic: in corporate omgevingen met cloning en volume license keys ga je daar dus mee op je bakkes. Daarbij zul je je tool ook nog eens als admin moeten draaien om überhaupt die file te kunnen lezen ;) En als bonus: die file blijft niet hetzelfde maar wordt regelmatig gewijzigd waardoor je MD5 verandert :Y)

[ Voor 22% gewijzigd door RobIII op 24-02-2012 23:16 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • locke960
  • Registratie: November 2004
  • Laatst online: 15-09 13:31
Met 100% zekerheid een computer identificeren is onmogelijk. Alles kan vervalst worden, hetzij moedwillig door een aanvaller, hetzij toevallig door bijv HD cloning of machine reparatie oid.

Je zult dus of een zeker risico moeten accepteren, of randvoorwaarden moeten stellen.

Voorbeeld: Als het programma start kijken of een bepaalde registry sleutel aanwezig is. Indien niet, dan genereer je hem, bijvoorbeeld iets als <naampc>.<huidige-datum-en-tijd-op-de-milliseconde-nauwkeurig>. Dat is dan je unieke identificatie.
Je accepteerd het zeer kleine risico op een doublure.
randvoorwaarde: het werkt alleen als die sleutel niet in een diskimage terecht komt.

Eigenlijk moet je het andersom doen. Bepalen welke randvoorwaarden en risico's je bereid bent te accepteren en dan je oplossing bedenken.
In dit geval: Aangezien het programma van een netwerkschijf wordt opgestart en het om ongeveer 500pc's gaat, kan ik me voorstellen dat het altijd om PC's in een domein of eventueel een forest gaat.
In dat geval zou je dus de pc zijn SID in het domein kunnen gebruiken als unieke identificatie.

Alleen als iemand met de Active Directory gaat %%$#$#@% dan gaat jou programma ook vreemde dingen doen. Maar daar is dus de documentatie voor, om de randvoorwaarden en risico's te documenteren. ie "Deze software gebruikt de PC's SID in het domein voor unieke identificatie van de PC's. domein stuk -> software stuk. niet doen :) "

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
locke960 schreef op vrijdag 24 februari 2012 @ 23:42:
Voorbeeld: Als het programma start kijken of een bepaalde registry sleutel aanwezig is. Indien niet, dan genereer je hem, bijvoorbeeld iets als <naampc>.<huidige-datum-en-tijd-op-de-milliseconde-nauwkeurig>. Dat is dan je unieke identificatie.
Je accepteerd het zeer kleine risico op een doublure.
Of je neemt, zoals al eerder geopperd gewoon een Guid waarbij de kans op collisions nog kleiner is en nog minder code ook.
locke960 schreef op vrijdag 24 februari 2012 @ 23:42:
Eigenlijk moet je het andersom doen. Bepalen welke randvoorwaarden en risico's je bereid bent te accepteren en dan je oplossing bedenken.
Eens :)
locke960 schreef op vrijdag 24 februari 2012 @ 23:42:
In dit geval: Aangezien het programma van een netwerkschijf wordt opgestart en het om ongeveer 500pc's gaat, kan ik me voorstellen dat het altijd om PC's in een domein of eventueel een forest gaat.
In dat geval zou je dus de pc zijn SID in het domein kunnen gebruiken als unieke identificatie.

Alleen als iemand met de Active Directory gaat %%$#$#@% dan gaat jou programma ook vreemde dingen doen. Maar daar is dus de documentatie voor, om de randvoorwaarden en risico's te documenteren. ie "Deze software gebruikt de PC's SID in het domein voor unieke identificatie van de PC's. domein stuk -> software stuk. niet doen :) "
Ook het SID is gewoonweg veel te onbetrouwbaar als "unieke identifier" en here's why.

Tamper-proof lijkt me niet eens een requirement voor zover ik TS begrijp; machines uniek identificeren is hier key als ik het goed begrijp. Neem dan mee dat je in een corporate environment zit en met cloning e.d. te maken hebt, de applicatie vanaf een netwerkshare gestart wordt en je gebruikers (waarschijnlijk :P ) geen admin rechten hebben en dan heb je nog maar een beperkte set aan opties over. Het is dan maar net hoe ver je wil gaan (MAC-adres is een goed keuze, maar ook niet waterdicht) en hoeveel tijd/geld je er in wil investeren (fingerprinting, close maar nog niet waterdicht) en hoe betrouwbaar je de "uniciteit" van de machine wil hebben en dan een keuze maken op basis van kosten/baten.

[ Voor 9% gewijzigd door RobIII op 25-02-2012 01:48 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • GraveR
  • Registratie: Januari 2000
  • Laatst online: 22-08 19:26
Je wist dat je via, in ieder geval DMI, ook de UUID van de computer kunt uitlezen? 2 voorbeelden, 1 van een ASUS P5Q Pro Turbo mainboard en 1 van een Intel DQ67SW mainboard
Handle 0x0001, DMI type 1, 27 bytes
System Information
	Manufacturer: System manufacturer
	Product Name: System Product Name
	Version: System Version
	Serial Number: System Serial Number
	UUID: ECA0AA07-FED0-E011-BA53-2F5F787E3200
	Wake-up Type: Power Switch
	SKU Number: To Be Filled By O.E.M.
	Family: To Be Filled By O.E.M.

Handle 0x0001, DMI type 1, 27 bytes
System Information
	Manufacturer: Intel Corporation
	Product Name: DQ67SW
	Version: AAG12527-310
	Serial Number: BQSW136003TP
	UUID: F1967E1C-D502-11E0-916C-0013D4D07727
	Wake-up Type: Power Switch
	SKU Number: Not Specified
	Family: Not Specified

Acties:
  • 0 Henk 'm!

  • locke960
  • Registratie: November 2004
  • Laatst online: 15-09 13:31
RobIII schreef op zaterdag 25 februari 2012 @ 01:03:
[...]
Ook het SID is gewoonweg veel te onbetrouwbaar als "unieke identifier" en here's why.
Dit gaat over de Machine SID.
Ik heb het over de SID die de PC toegewezen krijgt door het domein tijdens het joinen. Die is binnen het domein gegarandeerd uniek.
Als je bereid bent je te beperken tot machines in een windows domein kun je de identificatie van de machine geheel aan het domein overlaten en daar op meeliften.
Rechten hoeft binnen een domein ook geen probleem te zijn. Kwestie van plannen en organiseren, maar ook dit is weer afhankelijk van wat die software precies moet doen.
Pagina: 1