Entwickler-Ecke

Off Topic - Datei schützen - Wie?


Moritz M. - Do 13.11.03 21:49
Titel: Datei schützen - Wie?
Hallo

Ich will meinem Programm Sprachdateien beilegen. Diese sind jedoch in einem Format, dass jeder sie abändern und damit das komplette Programm ändern kann.
Wie könnte ich diese Dateie schützen?
Ich habe mir folgende Möglichkeiten überlegt:
-Sie mit einem Kennwort Zippen
-Den MD5-Hash im Programm speichern (Wird komplizierter, wenn man eigene Sprachen hinzufügen will)
-Die Sprachdateien irgendwie zertifizieren - Aber wie?

Die Möglichkeit mit dem ZIP-Dateien erscheint mir bis jetzt die Beste.
Problem 2:
Ich will mein Programm auch vertreiben. Mit welcher Einschränkung darf ich Komponenten benutzen?

Würde mich über andere Vorschläge freuen.

Gruß


maze2k - Do 13.11.03 21:53

Hmm, also die Komponenten darfst du nutzen, wenn du
a: entweder die anfallende Lizenzgebühr bezahlst oder
b: den Programmierer der Komponenten um Erlaubnis fragst.

Für deine Sprachdateien würde ich irgendeine Standard-Verschlüsselung nehmen...
Passwortgeschützte Zips find ich unprofessionel (du willst das Prog ja verkaufen)


Moritz M. - Do 13.11.03 21:55

Hallo

Ok, Verschlüsselung. Welche würdet ihr mir empfehlen?

Gruß


BungeeBug - Do 13.11.03 21:57

Hi,

da alles andere der totale Overkill wär würd ich sagen XOR ...


Moritz M. - Do 13.11.03 21:59

Hallo

Kann mir wer bei der Verschlüsslung helfen? Ich will ja nicht viel verschlüsseln, halt etwas.

Gruß


BungeeBug - Do 13.11.03 22:02

Hi,

guckst du in den FAQ's da steht der ganze Code für ne XOR Verschlüsselung drin ... mit Erklärung usw.


Moritz M. - Do 13.11.03 22:02

Ok, Danke


Moritz M. - Do 13.11.03 22:23

Hallo

Hab den Beitrag nicht gefunden.... :?
Bin ich Blind oder Doof oder beides oider gibt es ihn nicht?

Gruß Onz, will doch nur eine Datei ver- und entschlüsseln ;)


BungeeBug - Do 13.11.03 22:51

http://www.krumsiek.com/artikel/datenverschluesselung.html

Da hab ich noch was :)


Motzi - Fr 14.11.03 10:14

Und da steht wie man das ganze ganz einfach wieder entschlüsselt:
http://www.delphi-forum.de/viewtopic.php?t=13611 :roll: ;)

Ok, die Daten sind nicht so "sensibel", aber ein bisschen mehr als ein simples XOR würde ich ihnen schon gönnen.. ;)


patrick - Fr 14.11.03 10:20

ich würde dir einen schnelle verschlüsselung wie blowfish vorschlagen.
der schafft locker 10MB/sec und ist in sachen sicherheit einiges besser als ne X-OR verschlüsselung


Moritz M. - Fr 14.11.03 16:58

Hallo

Ihr werf mir hier Fremdwörter vor :)
Ok, mit XOr kann ich ncoh was Anfangen (Auch wenn ich die Funktion noch nicht verstehe ... ich glaube wir sind in Mathe einfach noch nicht weit genug.
Mit dem Namen Blowfish kann ich auch noch was anfangen...aber da hört es schon auf.
Ich muss nur auf etwas achten:
Ich will das Programm vetreiben, also auf die Lizenz aufpassen.

Gruß


patrick - Sa 15.11.03 00:24

wie jetzt, geht es um die sprachdateien oder um die Lizenz.

hier ist eine liste mit aktuellen verschlüsselungsverfahren und deren geschwindigkeit:
getestet auf meinem rechner (3Ghz, 512MB-DDR RAM);
Algorithm ---------- Ø Mb/sec

3Way---------- 21,204
Blowfish---------- 45,101
Gost ---------- 28,511
IDEA ---------- 19,015
Q128 ---------- 70,219
SAFER-K40 ---------- 12,904
SAFER-SK40 ---------- 13,062
SAFER-K64 ----------10,345
SAFER-SK64---------- 9,301
SAFER-K128 ---------- 6,787
SAFER-SK128 ---------- 6,530
SCOP ---------- 201,819
Shark ---------- 30,766
Square ---------- 39,512
TEA ---------- 48,149
TEA extended ---------- 33,674
Sample Cipher ---------- 111,204
Cast 128 ---------- 49,929
Cast 256 ---------- 33,652
DES Single 8byte ---------- 27,150
DES Double 8byte ---------- 10,137
DES Double 16byte ---------- 9,290
DES Triple 8byte ---------- 9,135
DES Triple 16byte ---------- 9,738
DES Triple 24byte ---------- 9,478
DESX ---------- 26,765
Diamond II ---------- 7,792
Diamond II Lite ---------- 10,226
FROG ---------- 15,318
Mars ---------- 30,330
Misty 1 ---------- 13,865
NewDES ---------- 16,687
RC2 ---------- 13,497
RC4 ---------- 36,202
RC5 ---------- 58,430
RC6 ---------- 29,500
Rijndael ---------- 38,249
Sapphire II ---------- 20,946
Skipjack ---------- 13,699


Delete - Sa 15.11.03 00:45

Wie hast du das gemessen? Mit getTickCount Start- und Endzeit genommen? Das ist mehr als ungenau, weil du dann auch die Zeit drinne hast, die dein Thread nicht zuteilungsfähig war. Und je nach dem wie lange das der fall ist, kann das das Ergebnis stark verfälschen.


JoelH - Sa 15.11.03 01:19
Titel: Re: Datei schützen - Wie?
Onz hat folgendes geschrieben:

-Den MD5-Hash im Programm speichern (Wird komplizierter, wenn man eigene Sprachen hinzufügen will)


Diesmal nix zum Thema 'Ich will freie Komponenten nutzen aber trotzdem dann Geld für mich haben', trotzdem versteh ich dich nicht. Man darf zwar bestehende Sprachdateienn nicht ändern aber man darf eigene erstellen dürfen ? Wo lieg da der Sinn ? Nehmen wir Spanisch oder Portugisisch, diese Sprachen würdest du schützen aber trotzdem dürfte ein Brasilianer seine eigenen Sprachdatei zufügen aber die Spanische ( oh Got ich bin nicht sicher) nicht ändern, obwohl sich da nur einige wenige Worte verändern !? Erklär mir dies .

Oder Oxford und American Englisch. Ändern ist nciht erlaubt aber neu anlegen !?

Komisch.


Delete - Sa 15.11.03 05:30

Ach sprachdateien will er schützen? :roll: Vielleicht hat er ja ein Copyright auf die Landessprachen angemeldet. :mrgreen:


Moritz M. - Sa 15.11.03 12:18

Luckie hat folgendes geschrieben:
Ach sprachdateien will er schützen? :roll: Vielleicht hat er ja ein Copyright auf die Landessprachen angemeldet. :mrgreen:


Schnell zum Patetntamt...er hat es erraten :beer:

Nein, es geht nur darum, dass wenn man die Sprachdateien verändern kann, dass man dann das ganze Programm verändern kann. Deswegen würde ich Sie gerne etwas schützen. Wer dann neu neue Sprache will fragt mich halt ob er die Orginaldatei bekommt, oder ich leg Sie direkt unverschlüsselt dazu.

Zitat:
wie jetzt, geht es um die sprachdateien oder um die Lizenz.

Es geht um Sprachdateien, die Lizenzfrage hat sich geklärt. Ich will sie, wie oben schon gesagt, nicht einfach so reinlegen. Man könnte dann das komplette Interface verändern,das wäre nicht so dolle.
Was würdet ihr da vorschlagen? Ich würde sie einfach Blowfish verschlüsseln und das Passwort ins Programm legen, etwas aufgesplittet usw.

Gruß


Raphael O. - Sa 15.11.03 12:21

Onz hat folgendes geschrieben:
Nein, es geht nur darum, dass wenn man die Sprachdateien verändern kann, dass man dann das ganze Programm verändern kann.

Wenn der Nutzer, der dein Programm gekauft hat das Programm so ändern will, das es ihm besser gefällt, dann solltest du es ihm nicht verbieten...
ist doch seine Entscheidung, ob er das Programm verändert... zur Not kann er sich ja von der Installationsdatei die originale wiederholen...


Moritz M. - Sa 15.11.03 12:26

Es geht halt darum, dass das Programm auch Freeware ist.


Anonymous - Sa 15.11.03 13:20
Titel: Re: Datei schützen - Wie?
Onz hat folgendes geschrieben:

Ich will mein Programm auch vertreiben.


Das hat sich aber bisher nicht so angehört...


Delete - Sa 15.11.03 14:34

Öhm, wie sind denn die Sprachdateien aufgebaut, dass amn mit ihnen den Compilierten Quellcode deines Programmes verändern kann? :shock: Ich glaube, da läuft etwas ein bisschen falsch bei dir.


patrick - Sa 15.11.03 17:29

Luckie hat folgendes geschrieben:
Öhm, wie sind denn die Sprachdateien aufgebaut, dass amn mit ihnen den Compilierten Quellcode deines Programmes verändern kann? :shock: Ich glaube, da läuft etwas ein bisschen falsch bei dir.

ich denke nicht das die sounddateien direkt in das programm implementiert sind.
ich denke es handelt sich um externe dateien die aus einem verzeichnis aufgerufen werden... :(


matze - Sa 15.11.03 17:46

meint er nicht eher eine multilinguale application, die menüs und button usw in unterschiedluichen sprechen anzeigen kann ?


Moritz M. - Sa 15.11.03 22:33

Matze trifft den Punkt :)
Den Quelltext an sich kann man nicht verändern, aber die Sprachdateien sind so aufgebaut:
Zitat:

[Formname]
Komponentenname.Eigenschaft=Wert


Damit kann man viel anstellen :)


Delete - So 16.11.03 05:55

Und was? :roll: Ich weiß wie du die Komponenten im Programm benannt hast, ja und?


matze - So 16.11.03 10:33

kann man denn mit dieser datei JEDE eigenschaft der komponenten verändern oder nur die für die du das programmiert hast. (ich wüsste nicht wie ich eigenschaften von kompos über einen string ansprechen kann, bei kompos selber geht das ja mit findcomponent).

das einfachste wäre eine xor verschlüsselung.

ich hab hier folgenden code aus dem EDH:

Delphi-Quelltext
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:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
procedure PwdDecodeFile(FileName : string; Key : string);
var
  I : Integer;
  Zeichen : Byte;
  mem : TFileStream;
  keylen : Integer;
  keypos : Integer;
begin
  mem := TFileStream.Create(Filename,fmOpenReadWrite or fmShareExclusive);
  keylen := length(key)-1;
  keypos := 0;
  for I := 1 to mem.Size do
  begin
    mem.Position := I;
    mem.Read(Zeichen,1);

    if keypos = keylen then
      begin
        Zeichen := Zeichen+ord(key[keypos]);
        keypos := 0;
      end
    else
      begin
        Zeichen := Zeichen+ord(key[keypos]);
        inc(keypos);
      end;

    Mem.Position := I;
    mem.Write(Zeichen,1);
  end;
  mem.free;
end;

procedure PwdEncodeFile(FileName : string; Key : string);
var
  I : Integer;
  Zeichen : Byte;
  mem : TFileStream;
  keylen : Integer;
  keypos : Integer;
begin
  mem := TFileStream.Create(Filename,fmOpenReadWrite or fmShareExclusive);
  keylen := length(key)-1;
  keypos := 0;
  for I := 1 to mem.Size do
  begin
    mem.Position := I;
    mem.Read(Zeichen,1);

    if keypos = keylen then
      begin
        Zeichen := Zeichen-ord(key[keypos]);
        keypos := 0;
      end
    else
      begin
        Zeichen := Zeichen-ord(key[keypos]);
        inc(keypos);
      end;

    Mem.Position := I;
    mem.Write(Zeichen,1);
  end;
  mem.free;
end;