Autor Beitrag
Hybrid
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 112

Win XP Pro
D7 Ent
BeitragVerfasst: Mi 04.08.04 14:58 
Ich hab hier mal im Forum etwas rumgesucht (wer hätte das gedacht :D ) und folgendes von Peter Lustig gefunden:

ausblenden volle Höhe 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:
 
procedure EncodeChar(var C: Char; Value: Cardinal; Decode: Boolean = False);  
var Temp: Integer;  
begin  
  if Decode then  
  begin  
    Temp := Ord(C) - Value;  

    while Temp < 0 do  
      Temp := Temp + 255;  
  end  
  else  
  begin  
    Temp := Ord(C) + Value;  

    while Temp > 255 do  
      Temp := Temp - 255;  
  end;  

  C := Char(Temp);  
end;  

 
function EncodeText(Text: String; Key: String; Decode: Boolean = False): String;  
var Value, i: Cardinal;  
begin  
  Result := Text;  
  Value := 0;  

  for i := 1 to Length(Key) do  
    Value := Value + Ord(Key[i]);  //Summe der ASCII-Zeichenwerte in Key berechen  
 
  for i := 1 to Length(Result) do  
    EncodeChar(Result[i], Value, Decode);  //Einzelnes Zeichen verschlüsseln  
end;  

 
procedure TForm1.Button1Click(Sender: TObject);  
var S: String;  
begin  
  S := InputBox('String?', 'Schlüsselzeichenfolge:', 'Test');  
  Memo1.Lines.Text := EncodeText(Memo1.Lines.Text, S);  
end;  

 
procedure TForm1.Button2Click(Sender: TObject);  
var S: String;  
begin  
  S := InputBox('String?', 'Schlüsselzeichenfolge:', 'Test');  
  Memo1.Lines.Text := EncodeText(Memo1.Lines.Text, S, True);  
end;


Ich dachte mir, wenn das mit nem memo geht, muss das doch auch mit ner stringlist gehen, also hab ich folgenden Code erstellt:

ausblenden volle Höhe 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:
 randomize;
 if FileExists(ExtractFilePath(paramstr(0))+'\settings.ini') then
  begin
   sl:=tstringlist.Create;
   sl.LoadFromFile(ExtractFilePath(paramstr(0))+'\settings.ini');
   EncodeText(sl.Text,'test',true);
   ini:=tinifile.Create(ExtractFilePath(paramstr(0))+'\settings.ini');
   try
    id:=ini.ReadInteger('Main','ID',strtoint((copy(TimeToStr(now),1,2)+copy(TimeToStr(now),4,2)+copy(TimeToStr(now),7,2))+IntToStr(random(10))+IntToStr(random(10))));
    ep:=ini.ReadInteger('Main','EXP',100);
    level:=ini.ReadInteger('Main','Level',1);
    nam:=ini.ReadString('Main','Name','Player 1');
    mail:=ini.ReadString('Mail','Mail','your@mail.com');
    host:=ini.ReadString('Mail','Host','your.host.com');
    user:=ini.ReadString('Mail','User','user');
    pass:=ini.ReadString('Mail','Pass','pass');
   finally
    ini.Free;
   end;
   sl:=tstringlist.Create;
   sl.LoadFromFile(ExtractFilePath(paramstr(0))+'\settings.ini');
   EncodeText(sl.Text,'test');
   sl.SaveToFile(ExtractFilePath(paramstr(0))+'\settings.ini');
  end
 else
  begin
   ini:=tinifile.Create(ExtractFilePath(paramstr(0))+'\settings.ini');
  try
   ini.Writeinteger('Main','ID',strtoint((copy(TimeToStr(now),1,2)+copy(TimeToStr(now),4,2)+copy(TimeToStr(now),7,2))+IntToStr(random(10))+IntToStr(random(10))));
   ini.Writeinteger('Main','Level',1);
   ini.Writeinteger('Main','Exp',0);
  finally
   ini.Free;
  end;
   sl:=tstringlist.Create;
   sl.LoadFromFile(ExtractFilePath(paramstr(0))+'\settings.ini');
   EncodeText(sl.Text,'test');
   sl.SaveToFile(ExtractFilePath(paramstr(0))+'\settings.ini');
  end;
 if paramstr(1)='' then
  game:=false
   else
    game:=true;


Natürlich habe ich auch die beiden Prozeduren von oben verwendet, ich wollte den Code hier nur nicht unnötig vergrößern.

Das Problem ist nur, dass die INI Datei nicht verschlüsselt wird! Sie bleibt in ihrem unverschlüsseltem Zustand.

Woran mag das liegen?

Schonmal im vorraus Danke!

mfG Hybrid

_________________
Hallo, ich bin eine Signatur! :D


Zuletzt bearbeitet von Hybrid am Mi 04.08.04 15:33, insgesamt 4-mal bearbeitet
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19346
Erhaltene Danke: 1754

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mi 04.08.04 15:05 
Ähh, der String, der von der Codierfunktion geliefert wird, der muss auch in S1.Text rein...
(Zeile 6, 22, ...)

Außerdem: Wer ist Peter Lusig? :lol:
Hybrid Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 112

Win XP Pro
D7 Ent
BeitragVerfasst: Mi 04.08.04 15:10 
OK, es gibt auch dumme Menschen und einer davon bin ich :oops:
:lol:

Dennoch danke.

_________________
Hallo, ich bin eine Signatur! :D
Johannes Maier
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 173

Win XP
D7 Prof
BeitragVerfasst: Mi 04.08.04 15:13 
jaenicke hat folgendes geschrieben:
Ähh, der String, der von der Codierfunktion geliefert wird, der muss auch in S1.Text rein...
(Zeile 6, 22, ...)

Außerdem: Wer ist Peter Lusig? :lol:


Ein Mod vll? ;) Oder hatte er es falsch geschrieben und editiert ... :?:

_________________
MfG
Johannes ehem. jbmaier
Hybrid Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 112

Win XP Pro
D7 Ent
BeitragVerfasst: Mi 04.08.04 15:20 
Ich habs jetzt editiert, es sollte Peter Lustig heißen.

_________________
Hallo, ich bin eine Signatur! :D
Hybrid Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 112

Win XP Pro
D7 Ent
BeitragVerfasst: Mi 04.08.04 15:23 
Also, so langsam glaub ich verblöde ich total. Was ist denn hierdran falsch?
ausblenden volle Höhe 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:
  sl:=tstringlist.Create;
  sl.LoadFromFile(ExtractFilePath(paramstr(0))+'\settings.ini');
  sl.Text:=EncodeText(sl.Text,'test',true);
  sl.SaveToFile(ExtractFilePath(paramstr(0))+'\settings.ini');
  ini:=tinifile.create(ExtractFilePath(paramstr(0))+'\settings.ini');
 try
  ini.WriteString('Mail','Mail',edit1.Text);
  ini.WriteString('Mail','Host',edit2.Text);
  ini.WriteString('Mail','User',edit3.Text);
  ini.WriteString('Mail','Pass',edit4.Text);
  ini.WriteString('Main','Name',edit5.Text);
 finally
  ini.Free;
 end;
 sl:=tstringlist.Create;
 sl.LoadFromFile(ExtractFilePath(paramstr(0))+'\settings.ini');
 sl.Text:=EncodeText(sl.Text,'test');
 sl.SaveToFile(ExtractFilePath(paramstr(0))+'\settings.ini');
 combobox1.Items.SaveToFile(ExtractFilePath(paramstr(0))+'\list.dat');
 form3.Close;
end;

procedure TForm3.FormCreate(Sender: TObject);
var ini:tinifile;
    sl:tstringlist;
begin
  sl:=tstringlist.Create;
  sl.LoadFromFile(ExtractFilePath(paramstr(0))+'\settings.ini');
  sl.Text:=EncodeText(sl.Text,'test',true);
  sl.SaveToFile(ExtractFilePath(paramstr(0))+'\settings.ini');

  ini:=tinifile.create(ExtractFilePath(paramstr(0))+'\settings.ini');
 try
  edit1.Text:=ini.ReadString('Mail','Mail','');
  edit2.Text:=ini.ReadString('Mail','Host','');
  edit3.Text:=ini.ReadString('Mail','User','');
  edit4.Text:=ini.ReadString('Mail','Pass','');
  edit5.Text:=ini.ReadString('Main','Name','');
 if FileExists(ExtractFilePath(paramstr(0))+'\list.dat') then
  combobox1.Items.LoadFromFile(ExtractFilePath(paramstr(0))+'\list.dat');
 finally
  ini.Free;
 end;
 sl:=tstringlist.Create;
 sl.LoadFromFile(ExtractFilePath(paramstr(0))+'\settings.ini');
 sl.Text:=EncodeText(sl.Text,'test');
 sl.SaveToFile(ExtractFilePath(paramstr(0))+'\settings.ini');


Die datei ist nach dem angeblichen Entschlüsseln in z.B. Zeile 3 immernoch verschlüsselt und kann somit nicht ausgelesen werden!

_________________
Hallo, ich bin eine Signatur! :D
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19346
Erhaltene Danke: 1754

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mi 04.08.04 15:31 
Willst du die Datei nach Zeile 3 nicht lesen???

Ich meine, da du danach die Datei wieder verschlüsselt speicherst, ist die natürlich wieder verschlüsselt
Hybrid Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 112

Win XP Pro
D7 Ent
BeitragVerfasst: Mi 04.08.04 15:32 
Ich meinte damit Zeile 3 vom geposteten Code.

_________________
Hallo, ich bin eine Signatur! :D
Hybrid Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 112

Win XP Pro
D7 Ent
BeitragVerfasst: Mi 04.08.04 15:38 
Das Script soll ja folgendes tun:

Datei laden
Text entschlüsseln
Datei speichern
Datei als ini laden
Neue Werte eintragen
Datei als ini speichern
Datei laden
Text verschlüsseln
Datei speichern

Stattdessen macht es folgendes:

Datei laden
(verschlüsselten) Text verschlüsseln
Datei speichern

_________________
Hallo, ich bin eine Signatur! :D
Hybrid Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 112

Win XP Pro
D7 Ent
BeitragVerfasst: Mi 04.08.04 15:53 
Kann es sein dass der Code den Text nach dem Speichern nicht mehr entschlüsseln kann?

_________________
Hallo, ich bin eine Signatur! :D
Hybrid Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 112

Win XP Pro
D7 Ent
BeitragVerfasst: Mi 04.08.04 15:55 
OK, ich hab's!
Ich habe in der ersten Unit, in der die Datei entschlüsselt wird vergessen sie nach dem entschlüsseln zwischen zuspeichern, weshalb sie ein zweitesmal verschlüsselt wurde.

_________________
Hallo, ich bin eine Signatur! :D
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19346
Erhaltene Danke: 1754

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mi 04.08.04 16:01 
Nur noch ein kleiner Tipp: Sowas ist sehr einfach zu knacken, du solltest deine Einstellungen statt in einer INI-Datei aus vorsintflutlichen Zeiten in der Registry o.ä. speichern, wo du die einzelnen Einträge dann einzeln verschlüsseln und entschlüsseln kannst...
Hybrid Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 112

Win XP Pro
D7 Ent
BeitragVerfasst: Mi 04.08.04 16:06 
Danke für den Tipp, für die Settings überlege ich mir das noch, aber an einer anderen Stelle muss ich das per ini machen, geht bei dem Prog leider nicht anders. Das ganze ist ja eigentlich nur eine zusätzliche Sicherheitsmaßnahme, da diese andere ini datei nach jedem zugriff gelöscht wird und somit für den user ohnehin unsichtbar ist.

_________________
Hallo, ich bin eine Signatur! :D