# Rechner eindeutig identifizieren



## benhaze (6. November 2008)

Hallo liebe Entwicklergemeinde!
Ich hätte da mal eine Frage zum Identifizieren eines Rechners.

Was kann man machen, wie macht's man am Besten?

Es sollte möglichst (aber nicht zwangsweise) Platformunabhängig bleiben.
d.h mit JNI die Festplatten-Seriennummer auslesen, würd ich erst ziemlich zuletzt anstreben.

Danke!
-Ben


----------



## Leroux (6. November 2008)

Ich denk das wir schwer, denn wenn könnte man es bestimmt leicht cracken sprich JNI = ASM(Schwiriger)
Bytecode = Java(Leichter)

Würde dann gerne dein Schutz testen (Wenn du einen hast) =) Wenn interesse besteht PM 

mfg

//EDIT Mir ist grad noch eingefallen auf Softwareebene wäre es vllt nicht gerade richtig, denn wenn der User das System neu installiert könnte das Programm blocken.


----------



## benhaze (6. November 2008)

Antworten auf meine Fragen sind sehr sehr selten!
Also danke schonmal dafür!

Also mir geht es nur darum den *Rechner* irgendwie zu identifizieren.

Am einfachsten wäre es, beim 1. Start meiner Anwendung eine Datei zu erstellen, die z.B eine (G)UID enthält.
Das man diese Datei manipulieren/oder austauschen kann ist mir zweitrangig.
(Hierbei ist das Problem, *schreibend* kann ich nur auf das UserVerzeichnis zugreifen)



> wenn der User das System neu installiert könnte das Programm blocken


das wäre nicht so schlimm...
man könnte sich problemlos nach einer *neuaktivierung* wieder einloggen...


----------



## Leroux (6. November 2008)

Du könntest den einen SystemKey(z.b Registrationsnr) Auslesen(Da bleibt es bei der Plattform wieder hängen) und diesen mit md5 verschlüsselt in eine Datei packen.
Oder in ein Bild =)


----------



## benhaze (6. November 2008)

> Du könntest den einen SystemKey(z.b Registrationsnr) Auslesen


der Ansatz ist schonmal ganz gut, aber


> Da bleibt es bei der Plattform wieder hängen



deswegen dachte ich auch an sowas wie die festplatten seriennummer oder die cpu seriennummer oder die mac-adresse...


----------



## Leroux (6. November 2008)

Ja ^^ aber da kommt man dummerweiße wieder nicht an JNI vorbei was auch wieder nicht Plattform unabhänig ist.
Außer du legst beide mitbei und unterscheidest dann einfach bei der Laufzeit welche DLL du aufrufst je nach OS.


----------



## benhaze (6. November 2008)

habe mal nach mac-adresse und java gegoogelt...
und was gefunden (geht aber erst seit java 6...welches ich aber nutze!)


```
public static String getMacAddress() throws SocketException 
{ 
  String result = ""; 
 
  for ( NetworkInterface ni : Collections.list(  
        NetworkInterface.getNetworkInterfaces() ) ) 
  { 
    byte[] hardwareAddress = ni.getHardwareAddress(); 
 
    if ( hardwareAddress != null ) 
    { 
      for ( int i = 0; i < hardwareAddress.length; i++ ) 
        result += String.format( (i==0?"":"-")+"%02X", hardwareAddress[i] ); 
 
      return result; 
    } 
  } 
 
  return result; 
}
```

werde ich mal testen...


----------



## Leroux (6. November 2008)

Genau hab ich nicht dran gedacht.

Könntest ja dann bericht geben wie du es gelöst hast.


----------

