AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

ZIP-Datei erkennen mit Zipmaster

Ein Thema von Mattze · begonnen am 5. Jan 2006 · letzter Beitrag vom 5. Jan 2006
Antwort Antwort
Mattze

Registriert seit: 6. Jan 2005
664 Beiträge
 
#1

ZIP-Datei erkennen mit Zipmaster

  Alt 5. Jan 2006, 12:18
Hallo,

ich habe da schon eine ganze Weile ein Problem.
Wie kann man mit dem Zipmaster möglichst schnell und schmerzlos erkennen, ob eine Datei eine ZIP-Datei (oder ZIPSFX-Datei) ist?
Bisher habe ich da "TZipArchivStream.CreateFromFile". Geht das auch einfacher?
Man könnte sicherlich auch QueryZip verwenden, aber das ist so elendig viel.

Hat jemand einen Tipp?

Gruß
Matthias
  Mit Zitat antworten Zitat
Benutzerbild von Lannes
Lannes

Registriert seit: 30. Jan 2005
Ort: Münster
745 Beiträge
 
Delphi 3 Professional
 
#2

Re: ZIP-Datei erkennen mit Zipmaster

  Alt 5. Jan 2006, 14:54
Hallo,

mit Zipmaster zwar nicht, aber eventuell ist das etwas für Dich:
delphi-Forum: archiv testen
MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )
  Mit Zitat antworten Zitat
Mattze

Registriert seit: 6. Jan 2005
664 Beiträge
 
#3

Re: ZIP-Datei erkennen mit Zipmaster

  Alt 5. Jan 2006, 17:59
Hallo,

vielen Dank. Das wäre es ja schon.
Mich stört bloß "213 Archivformate".
Ich brauche nur Zip, Rar und Cab und möchte eigentlich DLLs in eigenen Programmen vermeiden, wo möglich.

Außerdem habe ich es mir zur Regel gemacht, nur FW mit Sourcecode zu verwenden. (Ich habe schon mal tolle FW mit einem Backdoor und Trojaner gehabt. Das gefällt mir natürlich nicht!)

Kennst Du da vielleicht etwas mit Quelle?

(Allgemein: Warum gibt es bei FW keine Quelle? Das ist doch da egal, oder? Wenn das Know-How verborgen werden soll, dann ist es auch Quatsch, das als FW zu deklarieren, oder?)

Gruß
Matthias
  Mit Zitat antworten Zitat
Benutzerbild von Lannes
Lannes

Registriert seit: 30. Jan 2005
Ort: Münster
745 Beiträge
 
Delphi 3 Professional
 
#4

Re: ZIP-Datei erkennen mit Zipmaster

  Alt 5. Jan 2006, 21:07
Hallo,
Zitat von Mattze:
...Außerdem habe ich es mir zur Regel gemacht, nur FW mit Sourcecode zu verwenden. (Ich habe schon mal tolle FW mit einem Backdoor und Trojaner gehabt. Das gefällt mir natürlich nicht!)...
Die Dll nutze ich seit ein paar Jahren, keine Probleme diesbezüglich.

Zitat von Mattze:
Kennst Du da vielleicht etwas mit Quelle?
Leider nicht, würde ich eine kennen, hätte ich dir nicht die dll empfohlen
MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )
  Mit Zitat antworten Zitat
Benutzerbild von Flocke
Flocke

Registriert seit: 9. Jun 2005
Ort: Unna
1.172 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#5

Re: ZIP-Datei erkennen mit Zipmaster

  Alt 5. Jan 2006, 21:34
Du kannst natürlich auch nach der ZIP-Signatur suchen, z.B. nach 'PK'#5#6 in den letzten 1024 Bytes einer Datei. An der Fundstelle sollte sich die folgende Struktur befinden:

Delphi-Quellcode:
const
  CZipCentralDirectorySign = $06054b50;
  CZipCentralFileHeaderSign = $02014b50;

type
  TZipCentralDirectoryRecord = packed record
    Signature: Cardinal; // CZipCentralDirectorySign
    DiskNumber: Word;
    EndDiskNumber: Word;
    EntryCount: Word;
    TotalEntryCount: Word;
    DirectorySize: Cardinal;
    DirectoryOffset: Cardinal;
    CommentLength: Word;
  end;
Darin kannst du einige Prüfungen vornehmen:
1. In einer einfachen ZIP-Datei sind DiskNumber = 0, EndDiskNumber = 0 und EntryCount = TotalEntryCount.
2. DirectoryOffset *UND* DirectoryOffset + DirectorySize müssen unterhalb der gefundenen Dateiposition sein.

Wenn das zutrifft dann hast du mit hoher Wahrscheinlichkeit eine ZIP-Datei.

Ansonsten kannst du an der Stelle DirectoryOffset noch einmal 4 Bytes einlesen und dort auf den Wert CZipCentralFileHeaderSign prüfen.

//Nachtrag: Für alle die's interessiert: .ZIP File Format Specification.
Volker
Besucht meine Garage
Aktuell: RtfLabel 1.3d, PrintToFile 1.4
  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 06:23 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