| Autor |
Beitrag |
Hybrid
      
Beiträge: 112
Win XP Pro
D7 Ent
|
Verfasst: Mi 04.08.04 14:58
Ich hab hier mal im Forum etwas rumgesucht (wer hätte das gedacht  ) und folgendes von Peter Lustig gefunden:
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]); for i := 1 to Length(Result) do EncodeChar(Result[i], Value, Decode); 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:
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!
Zuletzt bearbeitet von Hybrid am Mi 04.08.04 15:33, insgesamt 4-mal bearbeitet
|
|
jaenicke
      
Beiträge: 19346
Erhaltene Danke: 1754
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: 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? 
|
|
Hybrid 
      
Beiträge: 112
Win XP Pro
D7 Ent
|
Verfasst: Mi 04.08.04 15:10
OK, es gibt auch dumme Menschen und einer davon bin ich
Dennoch danke.
_________________ Hallo, ich bin eine Signatur!
|
|
Johannes Maier
      
Beiträge: 173
Win XP
D7 Prof
|
Verfasst: 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?  |
Ein Mod vll?  Oder hatte er es falsch geschrieben und editiert ... 
_________________ MfG
Johannes ehem. jbmaier
|
|
Hybrid 
      
Beiträge: 112
Win XP Pro
D7 Ent
|
Verfasst: Mi 04.08.04 15:20
Ich habs jetzt editiert, es sollte Peter Lustig heißen.
_________________ Hallo, ich bin eine Signatur!
|
|
Hybrid 
      
Beiträge: 112
Win XP Pro
D7 Ent
|
Verfasst: Mi 04.08.04 15:23
Also, so langsam glaub ich verblöde ich total. Was ist denn hierdran falsch?
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!
|
|
jaenicke
      
Beiträge: 19346
Erhaltene Danke: 1754
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: 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 
      
Beiträge: 112
Win XP Pro
D7 Ent
|
Verfasst: Mi 04.08.04 15:32
Ich meinte damit Zeile 3 vom geposteten Code.
_________________ Hallo, ich bin eine Signatur!
|
|
Hybrid 
      
Beiträge: 112
Win XP Pro
D7 Ent
|
Verfasst: 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!
|
|
Hybrid 
      
Beiträge: 112
Win XP Pro
D7 Ent
|
Verfasst: 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!
|
|
Hybrid 
      
Beiträge: 112
Win XP Pro
D7 Ent
|
Verfasst: 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!
|
|
jaenicke
      
Beiträge: 19346
Erhaltene Danke: 1754
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: 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 
      
Beiträge: 112
Win XP Pro
D7 Ent
|
Verfasst: 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!
|
|
|