Skip to content
KitploitKITPLOIT
HerramientasExploitsBlog
Log in
Enviar
HerramientasExploitsBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

FeedsContactoPrivacidad© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
zeroturnaround__zt-zip_CVE-2018-1002201_1-12 — Librería Java que proporciona métodos convenientes para la manipulación de archivos ZIP, incluyendo empaquetado, desempacado, iteración de entradas, transformación y comparación. | Kitploit
Herramientas/GitHubGitHub/shoucheng3/zeroturnaround__zt-zip_cve-2018-1002201_1-12
Utilidades de Propósito GeneralUtilidades y Frameworks
GitHubshoucheng3/zeroturnaround__zt-zip_cve-2018-1002201_1-12

zeroturnaround__zt-zip_CVE-2018-1002201_1-12

Librería Java que proporciona métodos convenientes para la manipulación de archivos ZIP, incluyendo empaquetado, desempacado, iteración de entradas, transformación y comparación.

Ver Repositorio
16hace 1 añoAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

ZIP - métodos de conveniencia

Integración continua

Build Status

Descripción general rápida

El proyecto fue iniciado y codificado por Rein Raudjärv cuando necesitaba procesar un gran conjunto de archivos ZIP grandes para los componentes internos de LiveRebel. Poco después empezamos a utilizar la utilidad en otros proyectos por su facilidad de uso y porque simplemente funcionaba.

El proyecto está construido utilizando los paquetes java.util.zip.* para el acceso basado en flujos. También se admite la mayoría de los métodos de conveniencia para el uso del sistema de archivos.

Instalación

Maven Central

Los artefactos del proyecto están disponibles en el Repositorio Central de Maven. Para incluirlo en tu proyecto Maven, tienes que especificar la dependencia.

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

Ten en cuenta que 1.8 es la última versión compatible con Java 1.4. Desde entonces se requiere Java 1.5.

Antecedentes

Teníamos los siguientes requisitos funcionales:

  1. empaquetar y desempaquetar directorios de forma recursiva
  2. incluir/excluir entradas
  3. renombrar entradas
  4. empaquetar/desempaquetar en el mismo lugar: el ZIP se convierte en directorio y viceversa
  5. iterar a través de las entradas del ZIP
  6. añadir o reemplazar entradas desde archivos o matrices de bytes
  7. transformar entradas del ZIP
  8. comparar dos archivos: comparar todas las entradas ignorando las marcas de tiempo

y estos requisitos no funcionales:

  1. usar las API existentes tanto como sea posible
  2. ser sencillo de usar
  3. ser eficaz en su uso: no recorrer un archivo ZIP completo si solo se necesita una única entrada
  4. ser seguro de usar: no permitir que el usuario deje flujos abiertos y mantenga archivos bloqueados
  5. no declarar excepciones
  6. ser compatible con Java 1.5

Ejemplos

Desempaquetado

Comprobar si una entrada existe en un archivo ZIP

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

Extraer una entrada de un archivo ZIP a una matriz de bytes

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

Extraer una entrada de un archivo ZIP con un Charset específico a una matriz de bytes

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

Extraer una entrada de un archivo ZIP al sistema de archivos

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

Extraer un archivo ZIP

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

Extraer un archivo ZIP que se convierte en un directorio

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

Extraer un directorio de un archivo ZIP incluyendo el nombre del directorio

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

Extraer un directorio de un archivo ZIP excluyendo el nombre del directorio

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;
  }
});

Extraer archivos de un archivo ZIP que coincidan con un patrón de nombre

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;
    }
  }
});

Imprimir los nombres de las entradas .class en un archivo ZIP

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());
  }
});

Imprimir las entradas .txt en un archivo ZIP (utiliza IoUtils de 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);
    }
  }
});

Empaquetado

Comprimir un directorio en un archivo ZIP

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

Comprimir un directorio que se convierte en un archivo ZIP

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

Comprimir un directorio en un archivo ZIP con un directorio padre

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

Añadir una entrada desde un archivo a un archivo ZIP

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

Añadir una entrada desde una matriz de bytes a un archivo ZIP

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

Añadir una entrada desde un archivo y desde una matriz de bytes a un archivo ZIP

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"));

Añadir una entrada desde un archivo y desde una matriz de bytes a un flujo de salida

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);
}

Reemplazar una entrada de un archivo ZIP desde un archivo

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

Reemplazar una entrada de un archivo ZIP desde una matriz de bytes

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

Reemplazar una entrada de un archivo ZIP desde un archivo y una matriz de bytes

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"));
Descargar herramienta