AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi TZipFile verschlüsselte RAW-Datei hinzufügen
Thema durchsuchen
Ansicht
Themen-Optionen

TZipFile verschlüsselte RAW-Datei hinzufügen

Ein Thema von himitsu · begonnen am 29. Sep 2024
Antwort Antwort
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#1

TZipFile verschlüsselte RAW-Datei hinzufügen

  Alt 29. Sep 2024, 21:43
Delphi-Version: 12 Athens
Tachchen,

wenn man kein Passwort angibt, dann wird eine verschlüsselte Datei "direkt" ausgelesen (im verschlüsselten Zustand)

wenn ich sie aber einer neuen ZIP wieder hinzufügen will, dann wird mein übergebener CRC32 im LocalHeader/CentralHeader überschieben (neu berechnet).
und wenn dann irgendjemand beim nachfolgenden "richtigen" Entschlüsseln den CRC prüft, dann ist Dieser natürlich falsch, weil CRC der verschlüsselten Daten, nicht von den Entschlüsselten.

* den CentralHeader bei Add kann ich nicht angeben, da hierbei IsEncrypted mit False überschrieben wird
* Password kann ich nicht angeben, da dann "nochmal" verschlüsselt wird (und die Verschlüsselungsfunktion/-klasse lässt sich ach nicht durch einen Dummy ersetzen)
* nachträglich über OnProgress lässt sich der CRC auch nicht überschreiben, weil dort ein falscher Header (FCurrentHeader) übergeben wird und das auch noch (absichtlich) falsch, ohne const/var
* der LocalHeader wird sofort in die Datei geschrieben an die CentralHeader komm ich auch nicht mehr ran (eine Kopie davon lesen ja, aber eben nicht schreibend)
* es gibt eine Kopie des LocalHeader, die global lesbar wäre, aber es ist halt eine Kopie dieses Records und somit bringt es nichts dort reinzuschreiben

[add]
Irgendwie hab ich bisher Cryptor: IZipCryptor übersehn ... mal sehn ...
Sah erst nur des fest eingebaute und nicht änderbare TZipCryptStream (ohne den Cryptor-Parameter zu bemerken)

[add2]
Ich glaub langsam es geht nicht, ohne nachträglich den ZipStream nochmal anzupacken. (dann kann ich die ZIP aber gleich komplett alles selbst machen)
procedure TZipFile.Add(Data: TStream; LocalHeader: TZipHeader; CentralHeader: PZipHeader);
* Passwort gesetzt, da wird zu Beginn der CRC berechnet (vor Verschlüsselung)
* kein Password, da wird nachher beim Komprimieren der CRC berechnet
* CentralHeader übergeben, da wird IsEncrypted überschrieben (Password müsste also gesetzt sein)

Aber beim TZipFile.Read ist das CheckCrc standardmäßig False ... man könnte also hoffen es könnte der CRC vieleicht auch egal sein. (falls das ZielProgramm nicht explizit True setzt und falls Emba seine ZipKlasse auch selbst benutzt ... sie wäre aber auch saudämlich, würden sie stattdessen selbst nicht was ordentliches nutzen)
$2B or not $2B

Geändert von himitsu (29. Sep 2024 um 22:44 Uhr)
  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 20:12 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