Skip to content
KitploitKITPLOIT
FerramentasExploitsBlog
Log in
Enviar
FerramentasExploitsBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
Ferramentas/GitHubGitHub/shoucheng3/zeroturnaround__zt-zip_cve-2018-1002201_1-12
Utilitários de Propósito GeralUtilitários e Frameworks
GitHubshoucheng3/zeroturnaround__zt-zip_cve-2018-1002201_1-12

zeroturnaround__zt-zip_CVE-2018-1002201_1-12

Biblioteca Java que fornece métodos convenientes para manipulação de arquivos ZIP, incluindo empacotamento, descompactação, iteração de entradas, transformação e comparação.

Ver Repositório
14há 1 anoAinda não revisado

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

ZIP - métodos de conveniência

Integração Contínua

Build Status

Visão Geral Rápida

O projeto foi iniciado e codificado por Rein Raudjärv quando ele precisou processar um grande conjunto de grandes arquivos ZIP para os componentes internos do LiveRebel. Logo depois, começamos a usar a utilidade em outros projetos por causa da facilidade de uso e ela simplesmente funcionava.

O projeto é construído usando os pacotes java.util.zip.* para acesso baseado em fluxo. A maioria dos métodos de conveniência para uso no sistema de arquivos também é suportada.

Instalação

Maven Central

Os artefatos do projeto estão disponíveis no Repositório Central do Maven. Para incluí-lo em seu projeto Maven, você precisa especificar a dependência.

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

Observe que a versão 1.8 é a última versão compatível com Java 1.4. Desde então, Java 1.5 é necessário.

Contexto

Tínhamos os seguintes requisitos funcionais:

  1. empacotar e desempacotar diretórios recursivamente
  2. incluir/excluir entradas
  3. renomear entradas
  4. empacotar/desempacotar no local - o ZIP se torna diretório e vice-versa
  5. iterar pelas entradas do ZIP
  6. adicionar ou substituir entradas a partir de arquivos ou arrays de bytes
  7. transformar entradas do ZIP
  8. comparar dois arquivos - comparar todas as entradas ignorando carimbos de data/hora

e estes requisitos não funcionais:

  1. usar as APIs existentes tanto quanto possível
  2. ser simples de usar
  3. ser eficaz no uso - não percorrer um arquivo ZIP inteiro se apenas uma única entrada for necessária
  4. ser seguro de usar - não permitir que o usuário deixe fluxos abertos e mantenha arquivos bloqueados
  5. não declarar exceções
  6. ser compatível com Java 1.5

Exemplos

Descompactação

Verificar se uma entrada existe em um arquivo ZIP

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

Extrair uma entrada de um arquivo ZIP para um array de bytes

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

Extrair uma entrada de um arquivo ZIP com um Charset específico para um array de bytes

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

Extrair uma entrada de um arquivo ZIP para o sistema de arquivos

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

Extrair um arquivo ZIP

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

Extrair um arquivo ZIP que se torna um diretório

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

Extrair um diretório de um arquivo ZIP incluindo o nome do diretório

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

Extrair um diretório de um arquivo ZIP excluindo o nome do diretório

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

Extrair arquivos de um arquivo ZIP que correspondem a um padrão de nome

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 nomes de entradas .class em um arquivo 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 entradas .txt em um arquivo ZIP (usa IoUtils do 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);
    }
  }
});

Compactação

Compactar um diretório em um arquivo ZIP

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

Compactar um diretório que se torna um arquivo ZIP

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

Compactar um diretório em um arquivo ZIP com um diretório pai

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

Adicionar uma entrada de arquivo a um arquivo ZIP

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

Adicionar uma entrada de array de bytes a um arquivo ZIP

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

Adicionar uma entrada de arquivo e de array de bytes a um arquivo 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"));

Adicionar uma entrada de arquivo e de array de bytes a um fluxo de saída

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

Substituir uma entrada de um arquivo ZIP a partir de um arquivo

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

Substituir uma entrada de um arquivo ZIP a partir de um array de bytes

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

Substituir uma entrada de um arquivo ZIP a partir de arquivo e array 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"));

Adicionar ou substituir entradas em um arquivo ZIP

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

Transformação

Baixar ferramenta