Einzelnen Beitrag anzeigen

Fukiszo
(Gast)

n/a Beiträge
 
#28

AW: Externes Programm Teil 2

  Alt 28. Jan 2018, 11:08
mein tipp wäre das die memo box etwas mit deinem text anstellt (Umcodiert/Umformatiert)
wenn du etwas verschlüsselt hast, besteht die verschlüsselung aus lesbaren zeichen?
falls dort nicht lesbare zeichen vorkommen kann es sein das die memo box sie verschluckt (inkompatibel)
evtl vorher noch mit base64 en-/dekodieren, da kommen nur zahlen raus die jede memobox drucken kann/du problemlos weiternutzen kannst.

also:
Code:
var
  Txt: String;
begin
if SDialog.Execute then
 begin
   txt:=Verschluesseln1(Memo1.Lines.Text,true,true); // hier ist dein text jetzt in txt verschlüsselt
   txt:=Base64Enc(Txt); // hier wird daraus ein lesbarer string
   Memo1.Lines.Clear; // memo leeren
   Memo1.Lines.Text := Txt; // memo füllen
   Memo1.SaveToFile(); // <<-- da es lesbare zeichen sind, kannst du diesen befehl nutzen
  end;
end;

andersrum:
 Memo1.LoadFromFile(); // <<-- da es lesbare zeichen sind, kannst du diesen befehl nutzen (dein delphi kann anderen befehl haben)
 txt:=Memo1.Lines.Text; // <<-- hier memo in txt speichern
 txt:=Base64Dec(Txt); // hier wird daraus dein verschlüsselter string
 txt:=Entschluesseln1(txt,true,true); // <-- aufruf überprüfen, hab nur dein verschluesseln1 umbenannt
 Memo1.Lines.Clear; Memo1.Lines.Text := txt; // hier müsste nun dein verschlüsselter string wieder lesbar sein

hier siehst du einen meiner erster startversuche um lizenzinformationen zu verschlüsseln.
wie du vielleicht erkennst, nutz ich alles nur intern und gut verschachtelt.
mir war damals lediglich bewusst das ich nicht alle zeichen ($00 - $FF) als text schreiben und lesen kann, deswegen der umweg per Base64.
tja, so fing ich mal an....

Delphi-Quellcode:
procedure TRegUnit.btnApplyClick(Sender: TObject);
var
 Ini: TIniFile;
begin
{
MessageBox(GetDesktopWindow,'Registration Data is correct. Please Restart.','Success! Please Restart.',MB_ICONINFORMATION);
MessageBox(GetDesktopWindow,'Wrong Key!','Error!',MB_ICONHAND);
}

// only continue if some data is present
 if Length(edUser.Text+edCompany.Text) > 0 then
// check for valid DES
 TRY
  if ( (DESEncrypt(edUser.Text+edCompany.Text,GiveIt(PassKey)) = edKey.Text) and (edValid.Text = GiveIt(edKey.Text)) ) then
  begin
   Ini := TIniFile.Create(ChangeFileExt(Application.ExeName,'.ini'));
// Save Userdata Base64 scrambled and DES protected
   Ini.WriteString('Registration','Name',DESEncrypt(Base64Enc(edUser.Text),GiveIt(PassKey)));
   Ini.WriteString('Registration','Company',DESEncrypt(Base64Enc(edCompany.Text),GiveIt(PassKey)));
   Ini.WriteString('Registration','Serial',DESEncrypt(Base64Enc(edKey.Text),GiveIt(PassKey)));
   Ini.WriteString('Registration','Key',DESEncrypt(Base64Enc(edValid.Text),GiveIt(PassKey)));
   Ini.WriteString('Registration','CRC',DESEncrypt(Base64Enc(MD5Print(MD5StringA(edUser.Text+edCompany.Text+edKey.Text+edValid.Text))),GiveIt(PassKey)));
   Ini.Free;
  end;
 EXCEPT // bei irgendeiner unstimmigkeit oben einfach weitermachen, so macht man es cracker etwas schwerer da null rückmeldung kommt
 END;
{
  edKey.Text := DESEncrypt(edUser.Text+edCompany.Text,GiveIt(PassKey));
  edValid.Text := GiveIt(edKey.Text);
}

// clean up, no later usage wanted
 edUser.Text := '';
 edCompany.Text := '';
 edKey.Text := '';
 edValid.Text := '';
 RegUnit.Close;
// RegUnit.CloseModal;
end;
Angehängte Dateien
Dateityp: 7z Base64.7z (2,6 KB, 3x aufgerufen)

Geändert von Fukiszo (28. Jan 2018 um 11:58 Uhr)
  Mit Zitat antworten Zitat