![]() |
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. |
Re: DreamCatcher
Zitat:
...:cat:... |
Du scheinst ja eine direktes Konkurenzprodukt für mein
![]() 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. |
Nö... einfach mal komfortabel selber coden... ;)
Chris |
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.
|
Hi,
dieses Problem tritt bei mir nicht auf. Welches OS hast du denn?! Chris |
Re: DreamCatcher
Zitat:
|
Ich habe WinXP.
|
Hm... habe ich auch...
Hättest du denn dafür eine Lösung parat? Chris |
Desweiteren dürfte sich der Benutzer freuen, wenn der Haupthread mit dem Fenster noch reagiert. :wink:
|
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 |
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 |
Re: DreamCatcher
Zitat:
...:cat:... |
So, ich habe es mal getestet.
|
Zitat:
...:cat:... |
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.
|
Zitat:
Zitat:
Zitat:
Zitat:
Zitat:
Wenn du einen Vorschlag hast, dann wäre ich darüber erfreut. Zitat:
Chris PS: Morgen abend werde ich vermutlich eine verbesserte Version hochladen. |
Zitat:
Zitat:
|
1. Im Thread selbst sind auch keine Application.ProcessMessages;
2. Ich rufe ja auch die Routinen im Thread auf... Chris |
Re: DreamCatcher
Zitat:
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. |
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. |
@Luckie: dann weiß ich, was ich vergessen habe... :roll: Ich habe es mit einem TThread-Objekt (abgeleitet davon) gemacht.
Chris |
Neue Version
Liste der Anhänge anzeigen (Anzahl: 1)
Neue Version: DreamCatcher v0.53 So... habe noch einiges geändert und verkleinert. ChangeLog:
Ü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! |
Falls die Datei nicht funktioniert gibt es noch zwei Mirrors:
Download #1: ![]() Download #2: ![]() Chris |
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: ![]() Chris |
zu den threads:
ich hatte das problem bei meinem "AlphaCode Crypter" auch. Ich hab es folgendermaßen gelöst: Deklaration des Threads
Delphi-Quellcode:
Implementierung
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;
Delphi-Quellcode:
Aufruf des Threads:
///////////////////
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;
Delphi-Quellcode:
Prozedur ThreadDone
var
CryptThread: TCryptThread // ..... CryptThread := TCryptThread.Create(rbEnCrypt.Checked,cbOverwriteTarget.Checked,edSource.Text,edTarget.Text,P1,P2); CryptThread.OnTerminate := ThreadDone;
Delphi-Quellcode:
Thread Abbrechen
procedure TfrmMain.ThreadDone(Sender: Tobject);
begin // Die ganzen Buttons wiede Enablen ;-) end;
Delphi-Quellcode:
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.
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 hoffe, das hilft dir! Super Programm übrigens ;-) mfG mirage228 |
Hä? Wie jetzt? :wiejetzt:
Läuft doch nun wunderbar mit den Threads...?! Nichts hängt sich auf und die Progressbar funktioniert auch!? Chris |
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... |
Zitat:
Aber was willst du mehr? Das ist die erste 100% sichere Verschlüsselung, denn was nicht da ist, kann man nicht entschlüsseln. :roll: |
Hm... das ist mir aber nun sehr suspekt... :(
Da muss ich mal gucken... Chris |
Re: DreamCatcher
Neue Version 1.0b
So. Langsam geht es auf die offizelle Endversion zu. ChangeLog:
Download: ![]() Über Feedback, Bugreports, Verbesserungsvorschläge usw. würde ich mich riesig freuen. Chris |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:22 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz