Seite 2 von 6

Verfasst: 26.04.2009 17:39
von mk-soft
Im englischen forum gefunden
http://www.purebasic.fr/english/viewtop ... =mainboard

Ein freischaltcode damit generieren

Code: Alles auswählen

;
; Get Hardware Fingerprint
;
#HW_PROFILE_GUIDLEN = $27
#MAX_PROFILE_LEN = $50

Structure HW_PROFILE_INFO
  DockInfo.l
  szHWProfileGUID.c[#HW_PROFILE_GUIDLEN]
  szHwProfileName.c[#MAX_PROFILE_LEN]
EndStructure

Procedure.s HardwareFingerprint()
  Protected hwp.HW_PROFILE_INFO
  GetCurrentHwProfile_(@hwp)
  Debug PeekS(@hwp\szHwProfileName[0]) + " -> " + PeekS(@hwp\szHWProfileGUID[0])
  ProcedureReturn PeekS(@hwp\szHWProfileGUID[0])
EndProcedure

Debug HardwareFingerprint()
FF :wink:

Code-Tags korrigiert - Andesdaf

Verfasst: 26.04.2009 18:07
von Joel
Nein!!!

Machs doch so, du schickst ihnen das Programm und wenn sie es das erste mal ausführen läd es vin einem Server eine zusätzliche Datei. Wenn auf den Rechnern deiner Freunde das programm läuft, löschst du die Datei. wenn jemand anders die Datei ausführt stürzt sie ab, weil die Datei weder auf HDD noch duch FTP Downloadbar ist.

Verfasst: 26.04.2009 18:23
von Little John
Joel hat geschrieben:Machs doch so, du schickst ihnen das Programm und wenn sie es das erste mal ausführen läd es vin einem Server eine zusätzliche Datei. Wenn auf den Rechnern deiner Freunde das programm läuft, löschst du die Datei. wenn jemand anders die Datei ausführt stürzt sie ab, weil die Datei weder auf HDD noch duch FTP Downloadbar ist.
Das lässt sich dadurch knacken, dass man den Download der betreffenden Datei "abschaltet" ...

Gruß, Little John

Verfasst: 26.04.2009 18:56
von cxAlex
Du willst das Programm doch nur 1. Freund schenken oder? Dann programmier eben einen fixen Hardware-Key direkt in die Software, Beispielsweise seine MAC in Verbindung mit der Prozessor-Seriennummer usw. sei kreativ :D . Die Datei dann weiterzugeben dürfte dann sinnlos sein außer er patcht den Key raus, und das sollte ein Laie eher nicht schaffen.

Verfasst: 26.04.2009 19:04
von mk-soft
Jeder PC hat seine eigene HWProfile GUID
Habs mal erweitert

Code: Alles auswählen

;
; Get Hardware Fingerprint
;
#HW_PROFILE_GUIDLEN = $27
#MAX_PROFILE_LEN = $50

Structure HW_PROFILE_INFO
  DockInfo.l
  szHWProfileGUID.c[#HW_PROFILE_GUIDLEN]
  szHwProfileName.c[#MAX_PROFILE_LEN]
EndStructure

Procedure.s HardwareFingerprint()
  Protected hwp.HW_PROFILE_INFO
  Protected result.s
  
  GetCurrentHwProfile_(@hwp)
  result = PeekS(@hwp\szHWProfileGUID[0])
  result = UCase(result)
  result = Mid(result, 2, Len(result) - 2)
  result = RemoveString(result, "-")
  
  ProcedureReturn result
EndProcedure


Procedure.s CreateCode(HW_Code.s)
  Protected Code.s, Result.s
  Code = "Schlüssel:" + HW_Code
  Result = MD5Fingerprint(@Code, StringByteLength(Code))
  ProcedureReturn Result
EndProcedure

Procedure CheckCode(freigabe.s)
  Protected Code.s, Result.s
  Code = "Schlüssel:" + HardwareFingerprint()
  Result = MD5Fingerprint(@Code, StringByteLength(Code))
  If result = freigabe
    ProcedureReturn #True
  Else
    ProcedureReturn #False
  EndIf
EndProcedure


; Anwendung - Code für Freigabe anfordern
hw.s = HardwareFingerprint()
Debug "Anfordercode: " + hw
; Hotline - Freigabe erstellen
code.s = createcode(hw)
Debug "Freischalt Code: " + code

; Anwendung - Code Ok
Debug "Freigabe: " + Str(Checkcode(code))
P.S. Auch wenn das Programm mit gespeicherten Freischaltcode weiter geben wird ist dann der gespeicherte freischaltcode ungültig

Verfasst: 26.04.2009 19:08
von cxAlex
Gute Lösung find ich :allright: .

Aber die einfachste hab ich vergessen: Du schreibst im About einfach groß und fett den Namen deines Freundes rein "Für ......", und wenn so eine Version irgendwo auftaucht weist du ja wenn du einen Kopf kleiner machen musst. Kommt jetzt ganz auf deinen Freund an ob das machbar ist :mrgreen: .

Verfasst: 26.04.2009 19:24
von Sauer-RAM
Das mit dem hardware key will ich ja machen, ich weis nur nicht wie das geht.

Verfasst: 26.04.2009 19:46
von X360 Andy
Guckst du 2 Beiträge über dir....

Verfasst: 26.04.2009 19:54
von Kaeru Gaman
damit isses ja nit getan...
man muss den ja auch irgendwie in den code einbaun um zu vergleichen.

also müsste er praktisch ein vorab-programm schreiben, das den hardware-key ermittelt und ihm zuschickt,
dann kann er ihn in seinen code reinschreiben und das eigentliche programm compilieren.

Verfasst: 26.04.2009 19:58
von mk-soft
Der Freischaltcode kann auch telefonisch angefordert werden. Das Programm so schreiben das erst nach der eingabe des freischaltcode erst alle funktionen verfügbar sind.
Werde mal was basteln.