Sicherheit und Lizenzierung eigener Programme [Erledigt]

Zugriff, Engines, Konvertierung. Von ADS über DBF bis zu SQL.

Moderator: Moderatoren

Antworten
Benz
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 440
Registriert: Mo, 30. Mai 2011 15:06
Danksagung erhalten: 1 Mal

Sicherheit und Lizenzierung eigener Programme [Erledigt]

Beitrag von Benz »

Hi,
1. gibt es eine Möglichkeiten dbf-Datenbanken vor Fremdzugriff zu schützen? Und auch so zu schützen, dass man als Programmierer nicht hineinkommt und Daten auslesen kann ?
2. Kann man z.B. Passwörter in der Datenbank codieren und beim Abruf decodieren um einen Vergleich zu ermöglichen ?
3. Gibt es einfache Möglichkeiten ein Programm z.B. ein Jahr lang zu lizenzieren, sodass die Lizenz nach einem Jahr abläuft ? Wie funktioniert sowas überhaupt?
4. Wenn ich per include auf prgs Zugreife können diese ja von anderen genaus eingelesen und verändert werden. Wie verhindere ich das ? Soll ich die Prgs einfach linken und den Include entfernen ? Hat das Nachteile?
5. Wie kann ich ein Installationsskript schreiben ? Wie kann ich verhindern, dass man das Programm einfach von einem auf den anderen Rechner kopiert? Funktioniert das mit der Registry ? Und wenn ja, wie kann ich da einen sinnvollen Eintrag reinschreiben, der mir diesen Effekt verhindert?
6. Wenn ich das Programm vom Compiler und Linker abkopple muss ich ja eigentlich nur die .ch-Dateien dazu kopieren oder? Gibt es da einen bestimmten Pfad, in welchen diese rein müssen ? Welche .ch-Dateien muss ich kopieren? Nur die die ich per include einfüge oder auch noch andere ?

Liebe Grüße und danke schonmal im voraus
Benz
(Mir reicht es auch schon, wenn ein einzelner nur einen Teil einer Frage beantwortet ich versuch dann alels zusammenzusetzen, aber je mehr, desto besser :wink: )
Zuletzt geändert von Benz am Do, 28. Jul 2011 10:33, insgesamt 1-mal geändert.
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14662
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 88 Mal
Kontaktdaten:

Re: Sicherheit und Lizenzierung eigener Programme

Beitrag von Jan »

Benz,

1) Nein. Es gibt Tricks, die Datenbanken in der DBESYS zu modifizieren, das da niemand mehr mit einem normalen Programm rankommt. Aber das ist teilweise eher gefährlich. Und mit einem Hexeditor sieht man doch wieder alles.
2) Ja. Verschlüsseln. Alaska hat da eine Bibliothek für.
3) Klar. Abfrage nach dem Systemdatum in das Programm einbauen. Und dazu eine Lizenzdatei stellen, in der das Ablauf- oder Startdatum verschlüsselt drin steht.
4) Wie bitte? Die includes sind eine Programmierhilfe für Dich. Du könntest das meiste davon auch direkt im Code machen, oder ganz weglassen. Aber dann wird die Arbeit für Dich komplizierter.
5) Versuch mal InnoSetup. Geniales Programm zur Erstellung von Setup-Routinen. Und kostenlos.
6) Siehe 4)

Nur mal eben so auf die Schnelle...

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benz
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 440
Registriert: Mo, 30. Mai 2011 15:06
Danksagung erhalten: 1 Mal

Re: Sicherheit und Lizenzierung eigener Programme

Beitrag von Benz »

Jan hat geschrieben: 4) Wie bitte? Die includes sind eine Programmierhilfe für Dich. Du könntest das meiste davon auch direkt im Code machen, oder ganz weglassen. Aber dann wird die Arbeit für Dich komplizierter.
Klar sind sie ne Programmierhilfe, aber ich frage mich, wie ich die prgs auf die manche zugreifen vor Fremdeinfluss schützen kann. Weil der zugriff auf eine obj - Datei per include funktioniert ja nicht.
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14662
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 88 Mal
Kontaktdaten:

Re: Sicherheit und Lizenzierung eigener Programme

Beitrag von Jan »

??? Wie bitte? Was ist?

Was willst Du denn eigentlich machen?

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Rolf Ramacher
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1931
Registriert: Do, 09. Nov 2006 10:33
Wohnort: Bergheim
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: Sicherheit und Lizenzierung eigener Programme

Beitrag von Rolf Ramacher »

Hi Benz,

also ich habe die Lizensierung in einer sep. datenbank abgelegt. die felder sind selbstverständlich verschlüsselt. darin enthalten ist auch das Ablaufdatum - dieses wird beim start der programme abgefragt. ist das datum drüber wird der satz aus der datenbank entfernt und nicht mehr gefunden. also startet das programm nicht merhr.

in der datenbank ist ebenfalls die festplatte mit verschlüsselt - stimmt diese oder der computername usw. nicht überein - feierabend.
Gruß Rolf

Mitglied der Gruppe XUG-Cologne
www.xug-cologne.de
Benz
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 440
Registriert: Mo, 30. Mai 2011 15:06
Danksagung erhalten: 1 Mal

Re: Sicherheit und Lizenzierung eigener Programme

Beitrag von Benz »

Naja, wenn ich jetzt beispielsweise ein Programm mit XppFD.exe mache, dann werden ja 2 Dateien generiert.
name.prg ruft dabei per include "_name.prg" auf.

Wie kann ich jetzt z.B. die _name.prg vor Fremdzugriff schützen ?

@Rolf: Wie verschlüssle ich die Datensätze ?
@Jan: Kannst du mir sagen wie die Bibliothek zur Verschlüsselung heißt?
georg
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2833
Registriert: Fr, 08. Feb 2008 21:29
Hat sich bedankt: 99 Mal
Danksagung erhalten: 13 Mal

Re: Sicherheit und Lizenzierung eigener Programme

Beitrag von georg »

Hallo, Benz -


das include wird zur Compile-Zeit verwendet, danach sind die Dateien "nutzlos", weil alle erforderlichen Informationen in der .OBJ abgelegt sind, und auch diese wird durch den Linklauf "überflüssig", weil die .OBJ Dateien dann zu einer .EXE oder .DLL zusammengefasst wurden.

Wenn Du z.B. nur eine .EXE Datei erstellst, reicht es, diese auszuliefern (zuzüglich der Alaska- und Drittanbieter-DLLs).


Gruss,

Georg
Liebe Grüsse aus der Eifel,

Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
Benutzeravatar
Rolf Ramacher
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1931
Registriert: Do, 09. Nov 2006 10:33
Wohnort: Bergheim
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: Sicherheit und Lizenzierung eigener Programme

Beitrag von Rolf Ramacher »

Hi Benz

hier mein code beispielt

Code: Alles auswählen

	   cKey :=aVol[i][5] // alles in ANSI
	   cCrypt := crypt(cKey,"XXXX",.t.)      // enhanced Security, falls nur Xbase++ 
	   *** hier könnten wieder problematische Zeichen enthalten sein.
	   cHex := StrToHex(cCrypt)                        // nun nur noch 0-F
		Schl->KVP:=cHex
bei "XXXX" gibst du dein gewünschtes Passwort rein.

zum entschlüsseln mußt du den umgekerhten weg gehen.

Code: Alles auswählen

			cHex := rtrim(Schl->KVP)       // falls das Feld länger war (nie verkehrt !) abschneiden
			cCrypt := HexToStr(cHex)              // Hex -> crypt String
			cKey := crypt(cCrypt,"XXXX",.t.)      // entschlüsseln

wie lang dein Passwort ist , bestimmst du selber. ich habe einfachheithalber XXXX dargestellt.
Gruß Rolf

Mitglied der Gruppe XUG-Cologne
www.xug-cologne.de
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14662
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 88 Mal
Kontaktdaten:

Re: Sicherheit und Lizenzierung eigener Programme

Beitrag von Jan »

Benz,

wegen der Verschlüsselungsklasse mußt Du Dich direkt an Alaska wenden. Die haben die inzwischen aus der Artikelliste des Bestellsystems rausgenommen.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
urbi
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 142
Registriert: So, 26. Mär 2006 18:47
Wohnort: 76185 Karlsruhe
Kontaktdaten:

Re: Sicherheit und Lizenzierung eigener Programme

Beitrag von urbi »

Hallo und guten Tag an Alle,

zu Veschlüsselung verwende ich Heute noch eine in Clipper geschriebene Funktion

1. Aufruf ccrypt(PADR("test",20),7) = "4fnsajfkhfj vrhfwjhfjfh"

2. Aufruf ccrypt("4fnsajfkhfj vrhfwjhfjfh",7) = "test "

zweiter Parameter numerisch 0-9

Code: Alles auswählen

FUNCTION CCRYPT(CRYPT1,CRYPT2)
//|
//|-----------------------------
LOCAL crypt3,crypt4,crypt5
IF crypt2>9
   crypt2=crypt2-INT(crypt2/10)*10
ENDIF
crypt3:=""
crypt4:=0
DO WHILE CRYPT4<LEN(crypt1)
   crypt2:=CRYPT2*(-1)
   crypt4:=crypt4+1
   crypt5:=ASC(SUBSTR(crypt1,crypt4,1))
   crypt5:=255-crypt5+crypt2-(crypt4-INT(crypt4/7)*7)
   crypt3:=crypt3+CHR(crypt5)
ENDDO
RETURN(crypt3)
Gruss
Rainer
urbi
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15710
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 73 Mal
Danksagung erhalten: 38 Mal
Kontaktdaten:

Re: Sicherheit und Lizenzierung eigener Programme

Beitrag von brandelh »

Hi,

das AES Verschlüsselungssystem der Prof Sub ist sehr sicher und es liegen zu keiner Zeit unverschlüsselte Dateien auf der Platte,
leider ist das Gesamtsystem etwas umständlich in der Umsetzung und wehe der Key geht verloren ;-)
Wer für offizielle Stellen die Verschlüsselung und deren Sicherheit nachweisen muss, kommt kaum an AES vorbei.
Die internen CRYPT() etc. Befehle taugen nur gegen leichte Angriffe (ich könnte sie nicht knacken).
Die DBF als solche zu verschlüsseln und vor Ort zu entschlüsseln ist für den Transport von CD, eMail etc. möglich,
aber im laufenden Betrieb nicht sicher (Programmabsturz, Zugriff wärend das Programm offen ist etc.)

Eine PRG kann man natürlich überhaupt nicht schützen, aber warum willst du Quellcode herausgeben ?
PS: für den Transport kann man ein ZIP erstellen, das seinerseits z.B. mit PGP verschlüsselt wird.
Gruß
Hubert
Benz
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 440
Registriert: Mo, 30. Mai 2011 15:06
Danksagung erhalten: 1 Mal

Re: Sicherheit und Lizenzierung eigener Programme

Beitrag von Benz »

Danke an alle. In meinem ermessen sind die Frage 1-5 jetzt abgehandelt. Kann mir jemand noch etwas zur sechsten Frage sagen?
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14662
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 88 Mal
Kontaktdaten:

Re: Sicherheit und Lizenzierung eigener Programme

Beitrag von Jan »

Was willst Du mit Frage 6 sagen? Ich versteh die nicht.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benz
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 440
Registriert: Mo, 30. Mai 2011 15:06
Danksagung erhalten: 1 Mal

Re: Sicherheit und Lizenzierung eigener Programme

Beitrag von Benz »

Beispiel:
Ich will das Programm lauffähig beim Kunden installieren. Es reicht ja nicht einfach nur die .exe rüber zu kopieren.
Wenn ich meine Umgebungsvariablen auf dem Entwicklungspc alle auf N: setze und dann versuche das Programm zu starten, ohne den Alaskaordner vorher N: zugewiesen zu haben bringt er die Fehlermeldung die dll xxxxx.dll würde fehlen.
Deswegen meine Frage: Was muss ich wie zu meinem Programm hinzufügen, dass es ohne den Compiler beim Kunden lauffähig ist?
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21248
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 211 Mal
Danksagung erhalten: 71 Mal

Re: Sicherheit und Lizenzierung eigener Programme

Beitrag von Manfred »

Moin,

es gibt nach der Installation von xbase++ einen Unterordner, der heißt xppw32/runtime. Die DLL, die da drin sind werden auf jeden Fall benötigt und sollte auch mit ausgeliefert und ins EXE Verzeichnis kopiert werden. Alles zusätzliche entscheidest Du, indem Du halt das dazu packst, was an DLL usw. von Dir erzeugt wird.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benz
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 440
Registriert: Mo, 30. Mai 2011 15:06
Danksagung erhalten: 1 Mal

Re: Sicherheit und Lizenzierung eigener Programme

Beitrag von Benz »

okay :-) genau das, was ich wissen wollte, danke!
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14662
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 88 Mal
Kontaktdaten:

Re: Sicherheit und Lizenzierung eigener Programme

Beitrag von Jan »

Manfred,

so ganz stimmt das aber nicht. Nicht alle dll im Runtime-Ordner werden unbedingt benötigt. Da sind ja z. B. auch alle DBE-dll oder der Debugger mit drin, und wer baut schon alle Datenbanktrieber in sein Programm ein oder verteilt sein Programm inkl. Debugging-Infos? Ich gebe jedenfalls nur die dll mit, die wirklich zum Programm gehören, der Rest bleibt zu Hause :-)

Benz,

wie Manfred ganz richtig schrieb, mußt Du nur die runtime-dll mitgeben, die für Dein Programm benötigt werden (und natürlich eventuell von Dir selber erstellte). Du findest die Angaben, was gebraucht wird, z. B. in der Onlinehilfe. Da wird zu jeder Funktion angegeben, in welcher dll die untergebracht ist. Ein kleiner Trick, um vor der Auslieferung auf Nummer sicher zu gehen, ist, das Alaska-Verzeichnis umzubenennen. Dann ist der Pfad gebrochen, und die dll darin werden nicht mehr gefunden. Wenn Du dann Dein Programm aufrufst, meckert das die fehelden dll an. Die kopierst Du alle in Dein Programmverzeichnis, bis es läuft.

Mich hatte in Deiner 6. Frage die Bemerkung der ch irritiert. Denn wie schon in diesem Thread bemerkt wurde, werden die ausschließlich zum kompilieren benötigt. Beim Kunden haben die nichts zu suchen. Dem gibst Du nur die dll, die benötigt werden.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benz
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 440
Registriert: Mo, 30. Mai 2011 15:06
Danksagung erhalten: 1 Mal

Re: Sicherheit und Lizenzierung eigener Programme

Beitrag von Benz »

okay. Ja habs ein wenig missverständlich geschrieben, weil mir das erst im Nachhinein klar wurde, dass die Dateien ja wegfallen können, sobald das Programm compiliert ist. Sorry.
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14662
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 88 Mal
Kontaktdaten:

Re: Sicherheit und Lizenzierung eigener Programme

Beitrag von Jan »

Benz,

kein Problem. Fragen sind dazu da, gestellt zu werden. Und glaub mir - als ich mit Xbase++ angefangen habe, da stand ich als alter Clipperianer wie Ochs vorm Berge. Ohne das Forum und die Treffen der XUG wäre ich sang und klanglos untergegangen!

Ganz was anderes: Vielleicht kannst Du die Gelegenheit nutzen, Dich in dieser Rubrik http://www.xbaseforum.de/viewforum.php?f=9 kurz vorzustellen? Wir lesen ja nun etwas mehr von Dir, da wäre es schön, Dich ein wenig kennen zu lernen.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benz
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 440
Registriert: Mo, 30. Mai 2011 15:06
Danksagung erhalten: 1 Mal

Re: Sicherheit und Lizenzierung eigener Programme

Beitrag von Benz »

okay mach ich ;)
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15710
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 73 Mal
Danksagung erhalten: 38 Mal
Kontaktdaten:

Re: Sicherheit und Lizenzierung eigener Programme [Erledigt]

Beitrag von brandelh »

Hi,

grundsätzlich wird bei Xbase++ nur EXE, DLL und eventuelle Daten/Einstellungsdateien ausgeliefert, nie der Quellcode.
Im Quellcode muss man aber alle direkt eingetragenen fixen Pfade gegen Variablen tauschen (der XppFD macht sowas gerne ;-))
schließlich kann man keinem Anwender vorschreiben wo was zu liegen hat.
Ab Win Vista bzw. 7 muss man auch noch beachten, dass im EXE Verzeichnis nur der Admin Schreibrechte hat,
es gibt umgebungsvariablen für das Datenstammverzeichnis (User und Öffentlich) ... aber das ist eine Besonderheit der neueren Windows versionen.

getenv("xxx") wird benutzt um solche Infos abzufragen,
die Liste der gesetzten erhält man in einer CMD Box mit

Code: Alles auswählen

SET > SetVar.txt
Gruß
Hubert
Benz
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 440
Registriert: Mo, 30. Mai 2011 15:06
Danksagung erhalten: 1 Mal

Re: Sicherheit und Lizenzierung eigener Programme [Erledigt]

Beitrag von Benz »

Jetzt hab ich noch ne Frage an alle die InnoSetup benutzen:

1.Es gibt ja irgendwie die Möglichkeit da was in die Registry zu schreiben. Ich nehme an, dass dadurch verhindert werden kann, dass man das Programm einfach auf einen anderen Rechner kopiert und es trotzdem funkioniert.

Wie benutze ich das richtig ? Weil wenn ich jetzt irgendetwas ausprobiere und nachher die Registry zusammengeschossen wird wär das nicht so gut.

2.Gibt es außerdem die Möglichkeit einen Lizenzschlüssel beim Setup schon eingeben zu lassen ? Und wenn ja, wie ? Kann ich den dann irgendwie hinterlegen?
Antworten