Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Software-Projekte der Mitglieder (https://www.delphipraxis.net/26-software-projekte-der-mitglieder/)
-   -   DreamCatcher (https://www.delphipraxis.net/5784-dreamcatcher.html)

CalganX 19. Jun 2003 11:08


DreamCatcher
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hi,
ich habe mal angefangen ein Mini-Verschlüsselungssystem zu Programmieren. Was dabei bisher rausgekommen seht ihr im Anhang.

Derzeit läuft das alles noch mit Blowfish und einem SHA1-Hash, aber ich denke darüber nach, dass es möglich ist, dass man sich was aussuchen kann.

Das Codieren und das Decodieren laufen in einem eigenständigen Thread. Keine Ahnung, was das im Moment bringt, aber ich habe bisher noch keine großen Dateien verschlüsseln können.

Archiv einfach ausführen und fertig. Mit Hilfe der Reg-Datei könnt ihr Dateien direkt verschlüsseln. Ihr müsst allerdings die Pfade in dieser Datei mit Hilfe eines Texteditors ändern.
Näheres dazu steht auch in der Readme.

Sonst werden keine Registry-Einträge vorgenommen...

Über Feedback würde ich mich freuen.

Chris

PS: Geplant ist unteranderem mal eine integrierte bzip2-Funktion, um kodierte Dateien zu verkleinern.

sakura 19. Jun 2003 11:10

Re: DreamCatcher
 
Zitat:

Zitat von Chakotay1308
Das Codieren und das Decodieren laufen in einem eigenständigen Thread. Keine Ahnung, was das im Moment bringt, aber ich habe bisher noch keine großen Dateien verschlüsseln können.

Nichts ;-) Es bringt erst einen nennenswerten Vorteil bei mind. zwei Threads und mindestens zwei Prozessoren. Manchmal auch bei einem Prozessor, aber das ist eher unwahrscheinlich.

...:cat:...

OrallY 19. Jun 2003 13:26

Du scheinst ja eine direktes Konkurenzprodukt für mein Paranoia zu planen :wink: .

Folgendes ist mir bei deinem Programm noch aufgefallen: Wenn ich das Programm über das Kontextmenü starte, sind alle Felder schön ausgefüllt. Wenn ich nun aber zu dem anderen Reiter wechsle und wieder zurück, sind die Felder leer.
Außerdem würde ich dem User die Möglichkeit geben, eine Datei zu überschreiben und nicht einfach eine Nachricht ausgeben, dass die Datei bereits existiert.

CalganX 19. Jun 2003 13:32

Nö... einfach mal komfortabel selber coden... ;)

Chris

OrallY 19. Jun 2003 14:43

Und ich habe noch etwas zu kritisieren. Durch ausführen der begelegten *.reg-Datei wird ja in HKCU/*/shell ein Schlüssel erzeugt. Doch bewirkt dieser, wenn man eine Datei "doppelt anklickt" und es sich um einen ungekoppelten Dateityp handelt, dass sich dann auch dein Programm öffnet und nicht der Öffnen-mit Dialog. Ich hoffe du weißt was ich meine.

CalganX 19. Jun 2003 14:49

Hi,
dieses Problem tritt bei mir nicht auf.

Welches OS hast du denn?!

Chris

tommie-lie 19. Jun 2003 14:52

Re: DreamCatcher
 
Zitat:

Zitat von sakura
Zitat:

Zitat von Chakotay1308
Das Codieren und das Decodieren laufen in einem eigenständigen Thread. Keine Ahnung, was das im Moment bringt, aber ich habe bisher noch keine großen Dateien verschlüsseln können.

Nichts ;-) Es bringt erst einen nennenswerten Vorteil bei mind. zwei Threads und mindestens zwei Prozessoren. Manchmal auch bei einem Prozessor, aber das ist eher unwahrscheinlich.

Prinzipiell stimmt es, aber die Pentium4-Generationen haben Hyperthreading, da bringt es bei nicht allzu aufwändigen Rechnungen schon was ;-)

OrallY 19. Jun 2003 14:53

Ich habe WinXP.

CalganX 19. Jun 2003 14:54

Hm... habe ich auch...

Hättest du denn dafür eine Lösung parat?

Chris

Luckie 19. Jun 2003 15:13

Desweiteren dürfte sich der Benutzer freuen, wenn der Haupthread mit dem Fenster noch reagiert. :wink:

Stanlay Hanks 19. Jun 2003 15:19

Also ich find das Programm wirklich gut.
Was mir noch aufgefallen ist:
- Is zwar nix großartiges, aber zum auswählen des Output Files finde ich, solltest du statt dem OpenDialog einen SaveDialog verwenden. Ich will ja nix öffnen, sondern was speichern. :wink:

- Mehrsprachigkeit, sprich Englisch oder Deutsch fände ich klasse.

Sonst, Daumen hoch. :thuimb:

Man liest sich, Stanlay

CalganX 19. Jun 2003 15:27

Hi,
@Stanlay:
zu 1.: Gute Idee... ;) Ist schon so gut wie drin
zu 2.: hm... vielleicht, wenn ich mal mehr Zeit habe. Das ist meiner Meinung nach noch etwas schwierig (Beschriftung OpenDialog, ...)

@Luckie:
Hast du dafür eine Lösung? Ich habe bereits einige Application.ProcessMessages eingebaut, allerdings ist die Stream-Verschlüsselung in einer Funktion, auf die ich keinen Zugriff habe... :(

Chris

sakura 19. Jun 2003 15:29

Re: DreamCatcher
 
Zitat:

Zitat von tommie-lie
Prinzipiell stimmt es, aber die Pentium4-Generationen haben Hyperthreading, da bringt es bei nicht allzu aufwändigen Rechnungen schon was ;-)

Dafür brauchst Du, meines Wissens nach, aber keinen separaten Thread, das Hyperthreading unterstützt dabei auch den Hauptthread.

...:cat:...

Luckie 19. Jun 2003 15:29

So, ich habe es mal getestet.
  • Maximier das Fenster mal bitte und sag mir, was passiert. :wink:
  • Schön wäre, wenn gleich ein Ausgabeverzeichnis und ein Ausgabename der Datei vorgeschlagen würde, so spartr man sich das lästige selber aussuchen.
  • Lästig ist auch, dass das Passwort noch mal in einem zweiten Dialog abgefragt wird. Mach ein zweites Edit dafür, das kann man schnell per TAB erreichen.
  • Ver-/enschlüssele ich eine größere Datei reagiert das Programm nicht mehr. Ich dachte du würdest mit Threads arbeiten? :roll:
  • Eine Fortschrittsanzeige wäre eventuell keine schlechte Idee.

sakura 19. Jun 2003 15:32

Zitat:

Zitat von Luckie
Eine Fortschrittsanzeige wäre eventuell keine schlechte Idee.

Stimmt, aber wusstest Du schon, das es darauf ein Patent gibt und diese damit gegen bestehende Patentrechte verstößt. Lasse es nur noch zu diesem Gesetz in Europa kommen. :roll:

...:cat:...

OrallY 19. Jun 2003 15:53

Ich benutze bei meinem Programm eine Shell-Erweiterung (Eine ContextMenu-Extention). Da muss man dem Programm aber dann eine DLL beilegen und diese dann bei Windows registrieren. Ein Beispiel findest du im Demo Ordner unter Active X.

CalganX 19. Jun 2003 16:49

Zitat:

Zitat von Luckie
So, ich habe es mal getestet.

Das freut mich... :)

Zitat:

  • Maximier das Fenster mal bitte und sag mir, was passiert. :wink:

OK... Wird gefixt. Normalerweise mache ich das nicht und deswegen ist es mir nicht aufgefallen...

Zitat:

  • Schön wäre, wenn gleich ein Ausgabeverzeichnis und ein Ausgabename der Datei vorgeschlagen würde, so spartr man sich das lästige selber aussuchen.

Wird gemacht...

Zitat:

  • Lästig ist auch, dass das Passwort noch mal in einem zweiten Dialog abgefragt wird. Mach ein zweites Edit dafür, das kann man schnell per TAB erreichen.

ok...

Zitat:

  • Ver-/enschlüssele ich eine größere Datei reagiert das Programm nicht mehr. Ich dachte du würdest mit Threads arbeiten? :roll:

Mache ich ja auch, allerdings bringt ein paar Application.Processmessages; nichts, da die Codier-Funktion in einer mir nicht zugänglichen DCU liegt. :(
Wenn du einen Vorschlag hast, dann wäre ich darüber erfreut.

Zitat:

  • Eine Fortschrittsanzeige wäre eventuell keine schlechte Idee.

Stimmt... Allerdings kann ich nicht auf den aktuellen Fortschritt zugreifen. Mal sehen, wie ich das machen kann.

Chris

PS: Morgen abend werde ich vermutlich eine verbesserte Version hochladen.

Luckie 19. Jun 2003 16:54

Zitat:

Zitat von Chakotay1308
Zitat:

  • Ver-/enschlüssele ich eine größere Datei reagiert das Programm nicht mehr. Ich dachte du würdest mit Threads arbeiten? :roll:

Mache ich ja auch, allerdings bringt ein paar Application.Processmessages; nichts, da die Codier-Funktion in einer mir nicht zugänglichen DCU liegt. :(
Wenn du einen Vorschlag hast, dann wäre ich darüber erfreut.

Also liegt es doch nicht in einem separaten Thread. Application.ProcessMessages haben nichts mit einem Thread zu tun bzw. in selbigen verloren.
Zitat:

allerdings bringt ein paar Application.Processmessages; nichts
Ja und was hat das mit Threads zu tun? Ruf die Codier und decodier Routine in einem Thread auf.

CalganX 19. Jun 2003 17:41

1. Im Thread selbst sind auch keine Application.ProcessMessages;
2. Ich rufe ja auch die Routinen im Thread auf...

Chris

tommie-lie 19. Jun 2003 17:46

Re: DreamCatcher
 
Zitat:

Zitat von sakura
Dafür brauchst Du, meines Wissens nach, aber keinen separaten Thread, das Hyperthreading unterstützt dabei auch den Hauptthread.

Dann enthält dein Wissen lücken...
HyperThreading emuliert zwei Prozessoren (Windows zeigt AFAIK auch zwei an) und so müssen zwei Threads vorhanden sein. Wie soll den Windows oder gar Intel entscheiden, welcher Teil eines Programmes in welchem Prozessor ausgeführt werden soll?
Es bringt aber was, wenn man mehrere Programme öffnet, ohne daß diese für scih mehrere Threads benutzen, weil dann Windows wieder Kontrolle über die beiden Prozesse hat und sie jeweils auf die beiden Prozessoren verteilt, wie es es auch bei zwei echten Prozessoren machen würde.

Luckie 19. Jun 2003 17:48

Der Taskmanager zeigt mir 6 Threads an. Aber irgendwas mußt du falsch gemacht haben. Wie hast du denn den Code für den Thread erstellt? Mit der Vorlage von Delphi und dem TThread-Objekt oder hast du direkt auf die WinAPI zurückgegriffen?

Stell mal die Thread-Priorität auf tpIdle oder tpLow. das Problem hatte ich mit meinem Game of Life auch. Die Priorität tpNormal ist schon zu hoch, um das Hauptfenster reagieren zu lassen.

CalganX 19. Jun 2003 18:09

@Luckie: dann weiß ich, was ich vergessen habe... :roll: Ich habe es mit einem TThread-Objekt (abgeleitet davon) gemacht.

Chris

CalganX 20. Jun 2003 11:51

Neue Version
 
Liste der Anhänge anzeigen (Anzahl: 1)
Neue Version: DreamCatcher v0.53

So... habe noch einiges geändert und verkleinert.

ChangeLog:
  • Bugfixes
  • integrierte Registryeintrags-Erstellung/-Löschung (:roll:)
  • (hoffentlich) schneller
  • ...

Über weitere Ideen, Verbesserungsvorschläge, Feedbacks usw. wäre ich sehr erfreut.

Chris

PS: Wenn jemand eine Lösung hat, warum ich große Dateien nicht codieren kann, bzw. das Programm dann nicht mehr reagiert, dann wäre ich ebenfalls sehr erfreut!

CalganX 20. Jun 2003 12:01

Falls die Datei nicht funktioniert gibt es noch zwei Mirrors:

Download #1: http://www.n-digital.info/Chris/DreamCatcher.sfx.exe
Download #2: http://pwcjd.sytes.net/~chris/DreamCatcher.sfx.exe (ggf. des Öfteren offline)

Chris

CalganX 29. Jun 2003 14:18

DreamCatcher v0.6

DreamCatcher v0.6 ist nun fertig und kann heruntergeladen werden.
Viel wurde nicht geändert, nur einige kleine Bugfixes.

Große Dateien sollten nun auch funktionieren.

Download-URL: http://n-digital.info/Chris/DreamCatcher%20v0.6.sfx.exe

Chris

mirage228 29. Jun 2003 15:53

zu den threads:

ich hatte das problem bei meinem "AlphaCode Crypter" auch. Ich hab es folgendermaßen gelöst:

Deklaration des Threads
Delphi-Quellcode:
type
  TCryptThread = class(TThread)
  private
    Mode: Boolean;
    OverwriteFiles: Boolean;
    Source, Target: String;
    P1,P2: String;
  protected
    procedure Execute; override;
  public
    constructor Create(bMode, bOverwriteFiles: Boolean; strSource, strTarget, PW1, PW2: String);
end;
Implementierung
Delphi-Quellcode:
///////////////////

constructor TCryptThread.Create(bMode, bOverwriteFiles: Boolean; strSource, strTarget, PW1, PW2: String);
begin
  Mode := bMode;
  OverwriteFiles := bOverwriteFiles;
  Source := strSource;
  Target := strTarget;
  P1 := PW1;
  P2 := PW2;
  FreeOnTerminate := True;
  inherited Create(False);
end;

procedure TCryptThread.Execute;
begin
// Hier kommt der Code des Ver- und Entschlüsselns hin!
end;
Aufruf des Threads:
Delphi-Quellcode:
var
  CryptThread: TCryptThread
// .....
  CryptThread := TCryptThread.Create(rbEnCrypt.Checked,cbOverwriteTarget.Checked,edSource.Text,edTarget.Text,P1,P2);
  CryptThread.OnTerminate := ThreadDone;
Prozedur ThreadDone
Delphi-Quellcode:
procedure TfrmMain.ThreadDone(Sender: Tobject);
begin
  // Die ganzen Buttons wiede Enablen ;-)
end;
Thread Abbrechen
Delphi-Quellcode:
    TerminateThread(CryptThread.Handle,0);
    if Application.MessageBox('Der Vorgang wurde abgebrochen! Möchten Sie die unvollständige Zieldatei löschen?','Warnung',48+4) = IDYES then
    DeleteFile(edTarget.Text);
    ThreadDone(Sender);
    Exit;
Ich verwende TerminateThread, da mir auch net der Source der DCU vorliegt und die ganze Prozedur bei der Methode "Encrypt" sozugagen "anhält" und solange reagiert das Programm halt net.

ich hoffe, das hilft dir!

Super Programm übrigens ;-)

mfG
mirage228

CalganX 29. Jun 2003 15:56

Hä? Wie jetzt? :wiejetzt:
Läuft doch nun wunderbar mit den Threads...?! Nichts hängt sich auf und die Progressbar funktioniert auch!?

Chris

mirage228 29. Jun 2003 16:21

Ups, hatte wohl vor der Version 0.6 auf posten gedrückt, naja, ist dann auch egal.

EDIT:

Hab noch nen sehr merkwürdigen Fehler gefunden!

Erstmal steht in der Titelleiste noch Version 0.5...

Und jetzt kommts:

Ich wähle eine Datei aus (Ca. 700MB), wähle die Optionen (also Zieldatei, Passphrase und so), klicke auf "Encrypt" und kriege sofort die Erfolgsmeldung "File Encrypted successufully". Aber die Datei ist net da...

Luckie 29. Jun 2003 16:36

Zitat:

Zitat von mirage228
Aber die Datei ist net da...

Hast du die Checkbox "Superduperverschlüsselungundweg" eventuell markiert? :mrgreen:

Aber was willst du mehr? Das ist die erste 100% sichere Verschlüsselung, denn was nicht da ist, kann man nicht entschlüsseln. :roll:

CalganX 29. Jun 2003 16:46

Hm... das ist mir aber nun sehr suspekt... :(

Da muss ich mal gucken...

Chris

CalganX 5. Aug 2003 14:10

Re: DreamCatcher
 
Neue Version 1.0b
So. Langsam geht es auf die offizelle Endversion zu.

ChangeLog:
  • Verbesserung des Algorithmus
  • Weniger Abstürze
  • Es ist möglich mehrere Dateien gleichzeitig zu ver- und entschlüsseln
  • Registryeinträge sind nun (hoffentlich) korrekt
  • weitere kleinere Änderungen am Source

Download: http://www.csd-software.net/programm...tup%201.0b.exe (Größe: 393 KB)

Über Feedback, Bugreports, Verbesserungsvorschläge usw. würde ich mich riesig freuen.

Chris


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:02 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz