Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Programm mit Passwort schützen (https://www.delphipraxis.net/206683-programm-mit-passwort-schuetzen.html)

himitsu 19. Jan 2021 12:32

AW: Programm mit Passwort schützen
 
Es gibt auch Varianten mit einem Hardwareschlüssel, wie z.B. einem kleinen USB-Stick, anstatt einer Serial/Lizenzdatei.
Bei Google suchenusb security dongle / Bei Google suchenusb license dongle / ...



Ist das Passwort nur für den sicheren Start, oder reicht eine Lizenzprüfung bei Installation?
* also z.B. bei Installation wird ein Key aus Hardware, Passwort und/oder Lizenz generiert, der wird gespeichert (Registry oder Datei) und beim Start wird nur noch geprüft, ob der gespeicherte Key zum aktuellen Hardware-Key gültig ist.
* alternativ kann man diesen Key auch ohne Hardware berechnen, aber dann kann man auch den einmal berechneten Key kopieren und der Raubkopie Sicherheitskopie des Installers beilegen und weitergeben


Du hast auch erstmal grundsätzlich mehrere Möglichkeiten
* [OK ist blöd] festes Passwort, ohne Abhängigkeiten (also Passwort immer und überall gleich)
* Passwort wird berechnet (oder kommt von extern, z.B. in Lizenzdatei verschlüsselt gespeichert) und wird bei Programmstart abgefragt
* * z.B. Passwort ist in einem Lizenz-Key (Serial-Number) oder einer Lizenz-Datei verschlüsselt (bzw. Diese wird zur Berechnung des Passwortes benutzt)
* * oder Passwort wird aus einem Hardware-Key generiert (CPU-ID, HDD-Serial, oder wer weiß was sonst noch)
* Key wird berechnet (oder kommt von extern) und wird bei Programmstart gegen die Hardware geprüft

* Lizenz-Dateien könnte man weitergeben (könnte aber eventuell auffallen, wenn Kunde X eine Lizenz nutzt, die "Kunde Z" heißt)
* oder man könnte einen Hardware-Key generieren lassen, zu euch übermitteln, und damit die Lizenzdatei oder eine Serial generieren

* beim Hardware-Key aufpassen, denn wird der PC getauscht, upgegraded oder repaiert, dann kann/wird sich der berechnete Key ändern (siehe letzter Absatz) und man braucht eine neue Lizenzdatei


* und dann kommt noch dazu, wie "sicher" es sein soll ... falls jemand versucht die Prüfung im Programm zu patchen/deaktivieren oder das Passwort auszulesen (bzw. abgucken wie es berechnet wird)
Hast du ein
Delphi-Quellcode:
if not LizenzIstOK then Exit;
oder
Delphi-Quellcode:
if PasswortDialog <> 'geheimes passwort' then Exit;
, dann reicht es oft aus nur ein Bit zu ändern,
und schon entsteht ein
Delphi-Quellcode:
if {not} LizenzIstOK then exit;
:stupid:
* * darum gibt es auch "viele" billige/teure Passwort-/Lizenzschutzkomponenten




Und bedenkt bitte auch, wie "wichtig" diese Software für einen (legalen) Käufer in 40 Jahren noch sein könnte.
Ich hatte vor einer Weile eine Software in den Händen, welche eine "uralte" Hardware steuert. (aus Nostalgie und als Backup aufgehoben, wenn/falls die moderne Maschine nicht will)
Der Hersteller/Programmierer gestorben, dessen Frau hatte alle Unterlagen inzwischen entsorgt, auch die gefundenen Nachbesitzer der Nachbesitzer der Firma und auch ein paar Vertriebler waren nicht mehr auffindbar und wenn doch, dann hatten sie nichts mehr.
Die Serials waren an einen Hardware-Key gebunden und der Steuer-PC musste ersetzt werden. (mehrere Serials, je für einen gekauften Teil/Module in der/den EXEen)
Software mit aus Hardware-Key generierter Serial, über eine fremde kommerzielle SerialPrüfKomponente, deren Firma aber auch nicht mehr existierte.
Zum Glück sind wir an eine Vertriebler-CD gekommen, wo eine passwortgeschützte Serial-Generator-EXE mit drauf war, deren Passwort aber niemand mehr kannte,
aber wo glücklicher Weise die Passwort-Prüfung echt schlampig gemacht wurde. (das Passwort wurde für die Serialgenerierung benutzt, also ließ sich nicht auskommentieren, aber am Anfang wurde es Zeichen für Zeichen mit Hardcodierten einzelnen Chars verglichen, damit das Passwort nicht als Ganzes in der EXE steht)
In diesem Fall wurden die Passwörter/Serials nur zur Freischaltung von Modulen benutzt, da alles immer in der EXE drin ist, auch wenn etwas nicht gekauft wurde,
denn ohne Hardware wäre diese Sorftware eh nutzlos und die Hardware lässt sich nicht so "leicht" kopieren. (daher auch oben siehe "dongle")
Witzig: Auch das Hauptmodul mit Serial, was man aber eh immer braucht, also wo es garnicht möglich ist, dass man es nicht gekauft hätte.

Andreas13 19. Jan 2021 12:57

AW: Programm mit Passwort schützen
 
Zitat:

Zitat von himitsu (Beitrag 1481186)
Es gibt auch Varianten mit einem Hardwareschlüssel, wie z.B. einem kleinen USB-Stick, anstatt einer Serial/Lizenzdatei.
Bei Google suchenusb security dongle / Bei Google suchenusb license dongle /

Ich habe mit dem Matrix-Dongle http://www.matrixlock.de/techndat.htm gute Erfahrungen gemacht. Die bereitgestellte Zusatzsoftware ermöglicht auch die komplette Verschlüsselung von .Exe oder .DLL, welche ohne angeschlossenen Dongle dann verschlüsselt bleiben nicht debugbar und nicht ausführbar sind.
Gruß, Andreas

Kegasetu 19. Jan 2021 13:12

AW: Programm mit Passwort schützen
 
Wie wäre es denn mit einer Überprüfung, ob das richtige Medium eingelegt ist? Es braucht keinen großen Schutz, ich glaube kaum, dass jemand sich da so viel Mühe macht. und wenn doch, dann hat er halt eine Kopie. Das heißt ja nicht, dass gleich der "Markt" damit überschwemmt wird.

himitsu 19. Jan 2021 13:37

AW: Programm mit Passwort schützen
 
Also diese Dongles sind so, dass darauf ein Mikroprozessor ist, welcher eine Verschlüsselung macht.
Entweder um damit einfach/billig einen SerialKey/Lizenzdaten zu prüfen oder z.B. Programmcode/Daten sind verschlüsselt und kurz vor Ausführung wird das darüber entschlüsselt.
Im Prinzip gibt es auch programmierbare Dongles, da kann man "wichtigen" Programmcode/Berechnungen/Daten direkt in den Dongle einbauen, welches sich dann praktisch auch nicht (einfach) kopieren lässt.

Aber ja, man kann auch vom USB-Stick/CD/Festplatte die Serial auslesen, sie für den Installer verwenden und dort darauf prüfen.
* bei USB-Stick die Serial der Hardware (der USB-Schnittselle/Firmware)
* die Serial der Partition bzs. von einer CD, die kann kopiert werden, aber im einfachten/billigsten Fall "kann" man auch Diese nehmen


Und ja, es geht mit viel oder wenig Aufwand Vieles zu machen.
Kommt halt drauf an wie "sehr" man etwas schützen will/muss.



An irgendeine Hardware gebunden, da lässt es sich einfacher schützen, da Diese (meistens) nicht einfach kopiert werden kann.
Ansonsten kann man bei
Delphi-Quellcode:
if PasswortDialog <> 'geheimes passwort' then Exit;
anfangen und muß einen immer größeren/komplexeren Aufwand betreiben, je mehr man verzweifelt versuchen will es zu schützen. (effektiv ist aber praktisch ALLES knackbar, mit entsprechend ausreichend Aufwand/Zeit)

Im Falle der oben erwähnten Software wurde schon vor mir zuerst versucht die komplette Festplatte zu kopieren, also installiertes Programm inkl. Win95 und der Treiber,
da Anfangs nichtmal mehr ein funktionierender Installer vorlag ... CD war teilweise nicht mehr lesbar, in vielen CD-Laufwerken.
Aber da die Serials an die Hardware des PCs gebunden waren, anstatt an die Hardware der Maschiene, lief es natürlich nicht, auf dem neuen PC.

Kegasetu 19. Jan 2021 14:15

AW: Programm mit Passwort schützen
 
Das mit der Hardware liest sich nicht schlecht. Der Aufwand zum Schützten muss wirklich nicht so weit ausgelegt werden. Im Grunde muss nur verhindert werden, dass das Ding wie eine Minecraft.exe weitergereicht wird :)

Alallart 19. Jan 2021 14:49

AW: Programm mit Passwort schützen
 
Vielleicht sollte man ein oder zwei Schritte zurücktreten, und sich das Ganze genauer angucken.

Um was für eine Software handelt es sich? Ist es eine Massensoftware wie MS Office oder Photoshop, dann lohnt es sich in den Schutz zu investieren. Was ist da sbesondere an dieser Software? Sie ist begeht, also erden Keys auch im Internet weitergegeben.

Kommen wir aber zu einen kleinen Software, die nur paar Dutzend Furmen nutzen werden. Solche Keys findet man nicht im Internet, weil sich kaum einer interessiert. Warum sollte einer in einem Warez-Board Software oder Keys für das korrekte justieren einer Glühbirne, in einer Arbeitsumgebung anbieten? Solche Software interessiert keinen, höhstens paar Firmen.

Worauf ich hinauswill - ist der perfekte Schutz tatsächlich nötig? Der perfekte Schutz ist nur für Massensoftware wichtig. Keine Firma setzt einen Hacker für paar Stunden an einen Software, um die zu hacken, wenn die Software einen bruchteil davon kostet.

himitsu 19. Jan 2021 18:36

AW: Programm mit Passwort schützen
 
Die "billigste" Variante:
* HardwarKey berechnen (z.B. ID/Serial von CPU/MainBoard/... zuammenfassen und als Hash darstellen > CRC32 oder z.B. die ersten X Zeichen eines MD5)
* * oder z.B. die SID des Windows-Benutzers oder die ID/ProduktKey des Windows als HardwareKey SoftwareKey verwenden
* Kunde sagt euch den Key und ihr könnt den mit einem Key neu verschlüsseln (etwas anhängen und neuer Hash erstellt) ... das ist dann die Serial für die Installation
* Bei Programmstart wird wieder der HardwarKey berechnet, mit dem "geheimen" Zusatz neu gehasht und das Ergebnis wird mit der gespeicherten Serial verglichen

Das kann auch der Installer automatisch machen, also HardwareKey mit den Kundenlogindaten zu eurem Server und der rückt dann entsprechend den CheckKey/Serial raus und speichert ihn, welchen dann das Programm beim Start mit dem HardwareKey vergleichen kann. (hier müsste dann in euren Server noch was rein, was z.B. die Installationen zählt und bei zuviel sperrt ... siehe Delphiinstallationen, da ist auch nach X-Mal erstmal Schluss)

Kegasetu 20. Jan 2021 07:25

AW: Programm mit Passwort schützen
 
Zitat:

Zitat von himitsu (Beitrag 1481236)
Die "billigste" Variante:
* HardwarKey berechnen (z.B. ID/Serial von CPU/MainBoard/... zuammenfassen und als Hash darstellen > CRC32 oder z.B. die ersten X Zeichen eines MD5)
* * oder z.B. die SID des Windows-Benutzers oder die ID/ProduktKey des Windows als HardwareKey SoftwareKey verwenden
* Kunde sagt euch den Key und ihr könnt den mit einem Key neu verschlüsseln (etwas anhängen und neuer Hash erstellt) ... das ist dann die Serial für die Installation
* Bei Programmstart wird wieder der HardwarKey berechnet, mit dem "geheimen" Zusatz neu gehasht und das Ergebnis wird mit der gespeicherten Serial verglichen

Das kann auch der Installer automatisch machen, also HardwareKey mit den Kundenlogindaten zu eurem Server und der rückt dann entsprechend den CheckKey/Serial raus und speichert ihn, welchen dann das Programm beim Start mit dem HardwareKey vergleichen kann. (hier müsste dann in euren Server noch was rein, was z.B. die Installationen zählt und bei zuviel sperrt ... siehe Delphiinstallationen, da ist auch nach X-Mal erstmal Schluss)

Der Server ist vor allem für innere Angelegenheiten. Dort darf auf keinen Fall was drankommen, deswegen lasse ich da lieber die Finger von.

Ich glaube ich mache das so, ich erstelle eine Demoversion die für alle frei ist und dann noch eine Version die auf einem Harddrive ist. Das kostet zwar mehr, aber bei den wenigen Kopien die benötigt werden ist das verkraftbar.

Nun meine Frage, wie kann ich sicherstellen, dass auch wirklich meine CD eingelegt ist und nicht eine Kopie?

Danke für den ganzen Input!

Jasocul 20. Jan 2021 07:33

AW: Programm mit Passwort schützen
 
Zitat:

Zitat von Kegasetu (Beitrag 1481263)
Nun meine Frage, wie kann ich sicherstellen, dass auch wirklich meine CD eingelegt ist und nicht eine Kopie?

Das kann man nicht sicherstellen. Was machst du eigentlich bei Usern, die kein CD/DVD-Laufwerk haben? Das kommt immer häufiger vor.

Bernhard Geyer 20. Jan 2021 08:04

AW: Programm mit Passwort schützen
 
Zitat:

Zitat von Jasocul (Beitrag 1481265)
Zitat:

Zitat von Kegasetu (Beitrag 1481263)
Nun meine Frage, wie kann ich sicherstellen, dass auch wirklich meine CD eingelegt ist und nicht eine Kopie?

Das kann man nicht sicherstellen. Was machst du eigentlich bei Usern, die kein CD/DVD-Laufwerk haben? Das kommt immer häufiger vor.

Theoretisch gibt es Möglichkeiten auch für CD/DVD einen Kopierschutz zu realisieren.
Aber in 2021 ist das ein Ausschlußkriterium für eine Software.


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:33 Uhr.
Seite 2 von 3     12 3      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz