AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte Netzwerkprotokoll mit Verschlüsselung, Kompression, Prioritätssystem und vielem mehr
Thema durchsuchen
Ansicht
Themen-Optionen

Netzwerkprotokoll mit Verschlüsselung, Kompression, Prioritätssystem und vielem mehr

Ein Thema von Zacherl · begonnen am 24. Sep 2012 · letzter Beitrag vom 16. Okt 2012
Antwort Antwort
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#1

AW: Netzwerkprotokoll mit Verschlüsselung, Kompression, Prioritätssystem und vielem m

  Alt 16. Okt 2012, 08:42
Erstmal danke fürs testen euch beiden

Als Anregung würde ich Support von verschiedenen Socketkomponenten
vorschlagen, aber das steht glaube ich auch schon auf Deiner ToDo-List,
wenn ich mich recht an die Kommentare erinnere.
Genau, das hatte ich schon geplant. Ich werde es wohl so handhaben, dass für den Sende Teil ein zusätzliches Event ausgelöst wird, in dem der User dann mit der Socket Komponente seiner Wahl die Daten abschickt. Der Empfangsteil sollte ja schon Socket unabhängig sein.

Ist "Intelligenter Datenempfang" eine Alternative zur "Trennung von Datenpaketen"? Kann ich auch intelligent senden, also nicht nur Dateien, sondern auch Daten?
Definitiv. Wobei ich den "Intelligenter Datenempfang" logisch eher zu den "Einfachen Dateiübertragungen" zuordnen würde. Zur genaueren Erklärung: Wenn du "normale" Daten, also keine Dateien sendest, wird intern die TdxIDTPBaseTransfer Klasse erzeugt. Dort werden deine Daten in einen Buffer kopiert und dann nach und nach vom Sende Thread losgeschickt. Jetzt kann man sich vorstellen, was passiert, wenn man versuchen würde auf diese Weise beispielsweise einen Film (sagen wir mehrere Gigabyte) zu übertragen. Damit in diesem Falle nicht erst alle Daten in den Speicher geladen werden müssen, wird für Dateitransfers die TdxIDTPFileTransfer Klasse verwendet, welche die übergebene Datei öffnet und bei jedem Cycle des Sende Threads die Daten dynamisch per ReadFile() ausliest und abschickt.
Beim Empfänger kommt dann der "Intelligente Datenempfang" ins Spiel. Hat man einfache Daten, sagen wir mal einen Steuerbefehl mit ein paar Parametern, würde man diesen ja gerne "in einem Rutsch" empfangen, ohne ggfls. erst die Teilpakete wieder zusammensetzen zu müssen. Für diesen Zweck gibt es im OnTransferInit Event den variablen Parameter AutoCollectData. Ist diese Funktion aktiviert, sammelt der IOHandler alle eingehenden Daten eines Transfers in einen Buffer und löst das OnTransferFinish Event erst bei vollständigem Eingang aller Daten aus. Für große Dateien macht dies natürlich keinen Sinn, da man hier schnell wieder Speicherprobleme bekommen würde. Außerdem will man bei einem Dateitransfer die Datei in der Regel auch auf Empfängerseite wieder als solche speichern und nicht im RAM behalten. Hier kann man dann AutoCollectData deaktivieren, was bewirkt, dass bei jedem Teilpaket das OnTransferData Event aufgerufen wird. Das erlaubt es dann die Daten z.b. analog zum Sender per WriteFile() wieder in einer Datei abzulegen.
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat
gammatester

Registriert seit: 6. Dez 2005
999 Beiträge
 
#2

AW: Netzwerkprotokoll mit Verschlüsselung, Kompression, Prioritätssystem und vielem m

  Alt 16. Okt 2012, 09:58
Ist das nur ein Konzept oder soll das ernsthaft verwendet werden? Wenn ja, solltest Du in der Unit dxIDTPEncryptionProviderRCx nicht das Delphi-Random verwenden, was ja bekanntermaßen nicht besonders geeignet ist für Kryptoanwendungen. Außerdem wird es noch weiter verschlimmbessert durch Salt[I] := Random(255) , gemeint ist wohl Salt[I] := Random(256) .

Edit: Weiter ist mM ein Offset-Fehler mit Bufferoverflow-Potential vorhanden: In RCxEncode(FRCx, Salt[1], Output^, FSaltLength) muß die 1 doch wohl durch 0 oder Low(Salt) ersetzt werden.

Gruß Gammatester

Geändert von gammatester (16. Okt 2012 um 10:14 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#3

AW: Netzwerkprotokoll mit Verschlüsselung, Kompression, Prioritätssystem und vielem m

  Alt 16. Okt 2012, 10:49
Werde ich mir, wenn ich zu Hause bin nochmal anschauen. Kann sein, dass ich beim Salt vorher einen String verwendet habe und der Index 1 noch ein vergessenes Überbleibsel ist. Zur Random Funktion bzw. kryptographischer Sicherheit: Der RCx Provider dient als Beispiel. Du kannst dir gerne mit DEC einen AES Provider basteln, der auch die sicheren Random bzw. Salt Funktionen vom DEC verwendet. Primär geht es hier aber auch um das Protokoll und nicht um die verwendete Verschlüsselung oder Kompression.
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat
Benutzerbild von sh17
sh17

Registriert seit: 26. Okt 2005
Ort: Radebeul
1.682 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Netzwerkprotokoll mit Verschlüsselung, Kompression, Prioritätssystem und vielem m

  Alt 16. Okt 2012, 12:20
Warum nicht die hier zum Verschlüsseln?

http://www.cityinthesky.co.uk/opensource/dcpcrypt
Sven Harazim
--
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#5

AW: Netzwerkprotokoll mit Verschlüsselung, Kompression, Prioritätssystem und vielem m

  Alt 16. Okt 2012, 13:12
Leute ... :/ Ist zwar schön, dass ihr hier so toll auf die Verschlüsselung eingeht, aber hier geht es primär um das Protokoll. Die Verschlüsselung ist ein Feature das so umgesetzt ist, dass sich jeder User durch Ableiten vom entsprechenden Provider eine eigene Variante implementieren kann. Darin kann man dann jede erdenkliche Crypto Lib verwenden.

Bleibt bitte bisschen beim Thema. Der Hinweis von gammatester bezüglich des falschen Idizes ist definitiv wichtig, aber ich möchte hier keine Diskussion welche Crypto Lib am besten ist oder welcher Random Number Generator eine optimale kryptographische Sicherheit erzielt
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat
Benutzerbild von sh17
sh17

Registriert seit: 26. Okt 2005
Ort: Radebeul
1.682 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Netzwerkprotokoll mit Verschlüsselung, Kompression, Prioritätssystem und vielem m

  Alt 16. Okt 2012, 14:02
So war es auch nicht gemeint, sollte nur unterstreichen, das es eben funktionierende Klassen gibt, eben weil es hier um das Protokoll geht. Sieh es als Ergänzung/Empfehlung/Beigabe.
Sven Harazim
--
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#7

AW: Netzwerkprotokoll mit Verschlüsselung, Kompression, Prioritätssystem und vielem m

  Alt 16. Okt 2012, 14:50
So war es auch nicht gemeint, sollte nur unterstreichen, das es eben funktionierende Klassen gibt, eben weil es hier um das Protokoll geht. Sieh es als Ergänzung/Empfehlung/Beigabe.
Alles klar kein Ding Hatte ja vorher auch schon das DEC als Alternative Crypto Klassen Sammlung angemerkt.

@gammatester:
Du hattest recht, der Index 1 und die 255 im Random sind falsch. Werde ich korrigieren und beim nächsten Update integrieren.
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:29 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