Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
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.

··Feeds·Kontakt·Datenschutz·© 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
3vor 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.

root@kitploit:~
...
<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

root@kitploit:~
boolean exists = ZipUtil.containsEntry(new File("/tmp/demo.zip"), "foo.txt");

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

root@kitploit:~
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

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

Einen Eintrag aus einem ZIP-Archiv in das Dateisystem extrahieren

root@kitploit:~
ZipUtil.unpackEntry(new File("/tmp/demo.zip"), "foo.txt", new File("/tmp/bar.txt"));

Ein ZIP-Archiv extrahieren

root@kitploit:~
ZipUtil.unpack(new File("/tmp/demo.zip"), new File("/tmp/demo"));

Ein ZIP-Archiv extrahieren, das zu einem Verzeichnis wird

root@kitploit:~
ZipUtil.explode(new File("/tmp/demo.zip"));

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

root@kitploit:~
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

root@kitploit:~
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

root@kitploit:~
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

root@kitploit:~
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)

root@kitploit:~
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

root@kitploit:~
ZipUtil.pack(new File("/tmp/demo"), new File("/tmp/demo.zip"));

Ein Verzeichnis komprimieren, das zu einem ZIP-Archiv wird

root@kitploit:~
ZipUtil.unexplode(new File("/tmp/demo.zip"));

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

root@kitploit:~
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

root@kitploit:~
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

root@kitploit:~
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

root@kitploit:~
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

root@kitploit:~
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

root@kitploit:~
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

root@kitploit:~
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

root@kitploit:~
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"));

Einträge in einem ZIP-Archiv hinzufügen oder ersetzen

root@kitploit:~
ZipEntrySource[] addedEntries = new ZipEntrySource[] {
        new FileSource("/path/in/zip/File1.txt", new File("/tmp/file1.txt")),
        new FileSource("/path/in/zip/File2.txt", new File("/tmp/file2.txt")),
        new FileSource("/path/in/zip/File3.txt", new File("/tmp/file2.txt")),
    };
ZipUtil.addOrReplaceEntries(new File("/tmp/demo.zip"), addedEntries);

Transformieren

Einen ZIP-Archiv-Eintrag in Großbuchstaben umwandeln

root@kitploit:~
boolean transformed = ZipUtil.transformEntry(new File("/tmp/demo"), "sample.txt", new StringZipEntryTransformer() {
    protected String transform(ZipEntry zipEntry, String input) throws IOException {
        return input.toUpperCase();
    }
}, new File("/tmp/demo.zip"));

Vergleich

Zwei ZIP-Archive vergleichen (ignoriert Zeitstempel der Einträge)

root@kitploit:~
boolean equals = ZipUtil.archiveEquals(new File("/tmp/demo1.zip"), new File("/tmp/demo2.zip"));

Zwei ZIP-Archiv-Einträge mit gleichem Namen vergleichen (ignoriert Zeitstempel der Einträge)

root@kitploit:~
boolean equals = ZipUtil.entryEquals(new File("/tmp/demo1.zip"), new File("/tmp/demo2.zip"), "foo.txt");

Zwei ZIP-Archiv-Einträge mit unterschiedlichen Namen vergleichen (ignoriert Zeitstempel der Einträge)

root@kitploit:~
boolean equals = ZipUtil.entryEquals(new File("/tmp/demo1.zip"), new File("/tmp/demo2.zip"), "foo1.txt", "foo2.txt");

Debugging

Die Bibliothek verwendet das Logging-Framework slf4j-api. Alle Log-Anweisungen haben entweder DEBUG- oder TRACE-Level. Je nach verwendetem Logging-Framework genügt ein einfaches -Dorg.slf4j.simpleLogger.defaultLogLevel=debug oder System.setProperty("org.slf4j.simpleLogger.defaultLogLevel", "debug");, um Log-Anweisungen der zt-zip-Bibliothek anzuzeigen. Sie können die Stufen und die Einbeziehung von Log-Nachrichten pro Paket mit Ihrem Logging-Framework weiter verfeinern.

Tool herunterladen