Skip to content
KitploitKITPLOIT
ToolsExploitsBlog
Log in
Einreichen
ToolsExploitsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

FeedsKontaktDatenschutz© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
zeroturnaround__zt-zip_CVE-2018-1002201_1-12 — Java-Bibliothek, die praktische Methoden zur Manipulation von ZIP-Archiven bereitstellt, einschließlich Packen, Entpacken, Iteration über Einträge, Transformation und Vergleich. | Kitploit
Tools/GitHubGitHub/shoucheng3/zeroturnaround__zt-zip_cve-2018-1002201_1-12
Allgemeine DienstprogrammeDienstprogramme & Frameworks
GitHubshoucheng3/zeroturnaround__zt-zip_cve-2018-1002201_1-12

zeroturnaround__zt-zip_CVE-2018-1002201_1-12

Java-Bibliothek, die praktische Methoden zur Manipulation von ZIP-Archiven bereitstellt, einschließlich Packen, Entpacken, Iteration über Einträge, Transformation und Vergleich.

Repository anzeigen
20vor 1 JahrNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

ZIP - Komfortmethoden

Kontinuierliche Integration

Build Status

Kurzer Überblick

Das Projekt wurde von Rein Raudjärv gestartet und programmiert, als er eine große Menge großer ZIP-Archive für LiveRebel-interne Zwecke verarbeiten musste. Bald darauf begannen wir, das Dienstprogramm in anderen Projekten zu verwenden, aufgrund seiner Benutzerfreundlichkeit und weil es einfach funktionierte.

Das Projekt verwendet die Pakete java.util.zip.* für stream-basierten Zugriff. Die meisten Komfortmethoden für die Dateisystemnutzung werden ebenfalls unterstützt.

Installation

Maven Central

Die Projekt-Artefakte sind im Maven Central Repository verfügbar. Um es in Ihr Maven-Projekt aufzunehmen, müssen Sie die Abhängigkeit angeben.

...
<dependency>
    <groupId>org.zeroturnaround</groupId>
    <artifactId>zt-zip</artifactId>
    <version>1.11</version>
    <type>jar</type>
</dependency>
...

Beachten Sie, dass 1.8 die letzte Java 1.4-kompatible Version ist. Seitdem ist Java 1.5 erforderlich.

Hintergrund

Wir hatten die folgenden funktionalen Anforderungen:

  1. rekursives Packen und Entpacken von Verzeichnissen
  2. Einträge einschließen/ausschließen
  3. Einträge umbenennen
  4. Packen/Entpacken direkt - ZIP wird zu Verzeichnis und umgekehrt
  5. Durch ZIP-Einträge iterieren
  6. Einträge aus Dateien oder Byte-Arrays hinzufügen oder ersetzen
  7. ZIP-Einträge transformieren
  8. zwei Archive vergleichen - alle Einträge unter Ignorieren von Zeitstempeln vergleichen

und diese nicht-funktionalen Anforderungen:

  1. vorhandene APIs so weit wie möglich verwenden
  2. einfach zu verwenden sein
  3. effektiv zu verwenden sein - nicht das gesamte ZIP durchlaufen, wenn nur ein einzelner Eintrag benötigt wird
  4. sicher zu verwenden sein - Benutzer nicht in die Lage versetzen, Streams offen zu lassen und Dateien gesperrt zu halten
  5. keine Ausnahmen deklarieren
  6. mit Java 1.5 kompatibel sein

Beispiele

Entpacken

Prüfen, ob ein Eintrag in einem ZIP-Archiv vorhanden ist

boolean exists = ZipUtil.containsEntry(new File("/tmp/demo.zip"), "foo.txt");

Einen Eintrag aus einem ZIP-Archiv in ein Byte-Array extrahieren

byte[] bytes = ZipUtil.unpackEntry(new File("/tmp/demo.zip"), "foo.txt");

Einen Eintrag aus einem ZIP-Archiv mit einem bestimmten Zeichensatz in ein Byte-Array extrahieren

byte[] bytes = ZipUtil.unpackEntry(new File("/tmp/demo.zip"), "foo.txt", Charset.forName("IBM437"));

Einen Eintrag aus einem ZIP-Archiv in das Dateisystem extrahieren

ZipUtil.unpackEntry(new File("/tmp/demo.zip"), "foo.txt", new File("/tmp/bar.txt"));

Ein ZIP-Archiv extrahieren

ZipUtil.unpack(new File("/tmp/demo.zip"), new File("/tmp/demo"));

Ein ZIP-Archiv extrahieren, das zu einem Verzeichnis wird

ZipUtil.explode(new File("/tmp/demo.zip"));

Ein Verzeichnis aus einem ZIP-Archiv einschließlich des Verzeichnisnamens extrahieren

ZipUtil.unpack(new File("/tmp/demo.zip"), new File("/tmp/demo"), new NameMapper() {
  public String map(String name) {
    return name.startsWith("doc/") ? name : null;
  }
});

Ein Verzeichnis aus einem ZIP-Archiv unter Ausschluss des Verzeichnisnamens extrahieren

final String prefix = "doc/"; 
ZipUtil.unpack(new File("/tmp/demo.zip"), new File("/tmp/demo"), new NameMapper() {
  public String map(String name) {
    return name.startsWith(prefix) ? name.substring(prefix.length()) : name;
  }
});

Dateien aus einem ZIP-Archiv extrahieren, die einem Namensmuster entsprechen

ZipUtil.unpack(new File("/tmp/demo.zip"), new File("/tmp/demo"), new NameMapper() {
  public String map(String name) {
    if (name.contains("/doc")) {
      return name;
    }
    else {
      // returning null from the map method will disregard the entry
      return null;
    }
  }
});

Namen von .class-Einträgen in einem ZIP-Archiv ausgeben

ZipUtil.iterate(new File("/tmp/demo.zip"), new ZipInfoCallback() {
  public void process(ZipEntry zipEntry) throws IOException {
    if (zipEntry.getName().endsWith(".class"))
      System.out.println("Found " + zipEntry.getName());
  }
});

.txt-Einträge in einem ZIP-Archiv ausgeben (verwendet IOUtils aus Commons IO)

ZipUtil.iterate(new File("/tmp/demo.zip"), new ZipEntryCallback() {
  public void process(InputStream in, ZipEntry zipEntry) throws IOException {
    if (zipEntry.getName().endsWith(".txt")) {
      System.out.println("Found " + zipEntry.getName());
      IOUtils.copy(in, System.out);
    }
  }
});

Packen

Ein Verzeichnis in ein ZIP-Archiv komprimieren

ZipUtil.pack(new File("/tmp/demo"), new File("/tmp/demo.zip"));

Ein Verzeichnis komprimieren, das zu einem ZIP-Archiv wird

ZipUtil.unexplode(new File("/tmp/demo.zip"));

Ein Verzeichnis in ein ZIP-Archiv mit einem übergeordneten Verzeichnis komprimieren

ZipUtil.pack(new File("/tmp/demo"), new File("/tmp/demo.zip"), new NameMapper() {
  public String map(String name) {
    return "foo/" + name;
  }
});

Einen Eintrag aus einer Datei zu einem ZIP-Archiv hinzufügen

ZipUtil.addEntry(new File("/tmp/demo.zip"), "doc/readme.txt", new File("f/tmp/oo.txt"), new File("/tmp/new.zip"));

Einen Eintrag aus einem Byte-Array zu einem ZIP-Archiv hinzufügen

ZipUtil.addEntry(new File("/tmp/demo.zip"), "doc/readme.txt", "bar".getBytes(), new File("/tmp/new.zip"));

Einen Eintrag aus einer Datei und aus einem Byte-Array zu einem ZIP-Archiv hinzufügen

ZipEntrySource[] entries = new ZipEntrySource[] {
    new FileSource("doc/readme.txt", new File("foo.txt")),
    new ByteSource("sample.txt", "bar".getBytes())
};
ZipUtil.addEntries(new File("/tmp/demo.zip"), entries, new File("/tmp/new.zip"));

Einen Eintrag aus einer Datei und aus einem Byte-Array zu einem Ausgabestrom hinzufügen

ZipEntrySource[] entries = new ZipEntrySource[] {
    new FileSource("doc/readme.txt", new File("foo.txt")),
    new ByteSource("sample.txt", "bar".getBytes())
};
OutputStream out = null;
try {
  out = new BufferedOutputStream(new FileOutputStream(new File("/tmp/new.zip")));
  ZipUtil.addEntries(new File("/tmp/demo.zip"), entries, out);
}
finally {
  IOUtils.closeQuietly(out);
}

Einen ZIP-Archiv-Eintrag aus einer Datei ersetzen

boolean replaced = ZipUtil.replaceEntry(new File("/tmp/demo.zip"), "doc/readme.txt", new File("/tmp/foo.txt"), new File("/tmp/new.zip"));

Einen ZIP-Archiv-Eintrag aus einem Byte-Array ersetzen

boolean replaced = ZipUtil.replaceEntry(new File("/tmp/demo.zip"), "doc/readme.txt", "bar".getBytes(), new File("/tmp/new.zip"));

Einen ZIP-Archiv-Eintrag aus einer Datei und einem Byte-Array ersetzen

ZipEntrySource[] entries = new ZipEntrySource[] {
    new FileSource("doc/readme.txt", new File("foo.txt")),
    new ByteSource("sample.txt", "bar".getBytes())
};
boolean replaced = ZipUtil.replaceEntries(new File("/tmp/demo.zip"), entries, new File("/tmp/new.zip"));
Tool herunterladen