Desempacotar e Extrair ZIP
Upload de arquivos ZIP para visualizar e extrair arquivos, baixar individualmente ou extrair todos
Arraste um arquivo ZIP aqui, ou clique para selecionar
Suporta arquivos formato .zip
O que é Extração ZIP?
A extração ZIP abre um arquivo compactado e restaura os arquivos guardados dentro dele. Ela é útil quando você recebe um pacote comprimido, quer inspecionar o conteúdo antes de baixar tudo, precisa de apenas um arquivo ou deseja verificar nomes e tamanhos antes de confiar no pacote. Para arquivos normais, ZIP é sem perda e o conteúdo extraído deve ser igual ao original. Mas extrair não torna conteúdo desconhecido seguro. Um ZIP pode conter nomes enganosos, pastas inesperadas, dados enormes após a expansão ou executáveis que não devem ser abertos sem verificação. Esta ferramenta do navegador lê o arquivo localmente e permite baixar itens selecionados, sendo prática para pequenas checagens. Ela não substitui revisão de segurança de arquivos suspeitos.
Como Usar
Como usar
- Arraste um arquivo ZIP para a área de upload ou clique no botão 'Selecionar Arquivo ZIP'
- Visualize a lista de arquivos e as informações dos arquivos dentro do pacote
- Clique em 'Baixar' em um arquivo individual para extraí-lo
- Clique em 'Extrair Tudo' para baixar todos os arquivos como um ZIP
Segurança na Extração
- Inspecione a lista de arquivos antes de baixar os itens extraídos, especialmente quando o pacote veio de uma fonte desconhecida.
- Tenha cuidado com arquivos executáveis, pacotes aninhados e nomes de arquivo suspeitos.
Casos de uso
Princípio técnico
A leitura de um arquivo ZIP segue a ordem inversa da gravação. O navegador recebe o arquivo como um `ArrayBuffer` por meio da File API (`file.arrayBuffer()`) e o leitor percorre o final do arquivo de trás para frente procurando a assinatura End of Central Directory `0x06054b50` (PK\x05\x06). O EOCD ocupa no máximo 22 bytes mais um comentário opcional de até 65.535 bytes, então a janela de busca é limitada. O EOCD aponta o offset e o tamanho do Central Directory, que contém um File Header (`0x02014b50`) para cada entrada. Cada File Header contém os tamanhos comprimido e descomprimido, CRC-32, método de compressão, nome do arquivo e o offset do Local File Header correspondente (`0x04034b50`). O leitor pode então buscar diretamente qualquer entrada individual sem analisar as anteriores — por isso a extração de um único arquivo de um backup de vários GB é rápida. A descompressão depende do byte de método: `0x00` é armazenado (sem compressão, apenas memcpy), `0x08` é DEFLATE conforme RFC 1951 (~99% dos arquivos no mercado), `0x0C` é BZIP2, `0x0E` é LZMA e `0x5D` é o mais antigo PPMd. Esta ferramenta usa JSZip (ou fflate para maior throughput — o `unzipSync` do fflate decodifica um arquivo DEFLATE típico de 10 MB em dezenas de milissegundos, várias vezes mais rápido que o JSZip). Após a descompressão, o CRC-32 dos bytes brutos é recalculado e comparado com o valor no diretório central; uma divergência indica corrupção ou adulteração. Duas questões de segurança são relevantes para qualquer caminho de extração. A primeira é a vulnerabilidade Zip Slip (Snyk, 2018): um arquivo malicioso pode conter entradas com sequências de traversal de caminho como `../../etc/passwd`, e um extrator ingênuo que concatena o nome da entrada a um diretório de destino gravará fora do sandbox pretendido. A correção é normalizar o caminho concatenado com `path.resolve()` e verificar se ele ainda começa com o diretório de destino antes de qualquer gravação. Esta ferramenta oferece cada entrada como um download individual do navegador via `URL.createObjectURL(new Blob([bytes]))` e o navegador isola o destino, então o traversal de diretório não pode escapar da pasta de Downloads do usuário, mas o mesmo arquivo em um extrator de servidor seria explorável. Segundo, arquivos criptografados não são tratados: o ZipCrypto tradicional é uma cifra de fluxo de 32 bits que é trivialmente quebrada com um ataque de texto conhecido de três bytes, e o WinZip AES-256 moderno (PKWARE APPNOTE 7.0) requer o campo extra AE-2 com autenticação HMAC-SHA1 — nenhum dos dois caminhos é implementado aqui. Arquivos acima de 4 GiB dependem dos campos extras da extensão ZIP64 para tamanhos e offsets de 64 bits, que o analisador deve ler em vez dos campos de 32 bits do diretório central.
- Ordem de análise: busca reversa do final do arquivo pela assinatura EOCD `0x06054b50` (máx. 22 + 65535 bytes do final) → busca ao Central Directory → busca a cada Local File Header.
- Métodos de compressão: `0x00` armazenado, `0x08` DEFLATE (RFC 1951, ~99% dos arquivos), `0x0C` BZIP2, `0x0E` LZMA, `0x5D` PPMd.
- Integridade: CRC-32 com polinômio `0xEDB88320` (IEEE 802.3 invertido) recalculado nos bytes extraídos e comparado com o valor do diretório central.
- Zip Slip (Snyk 2018): entradas com traversal de caminho `../` podem gravar fora do diretório de extração; corrija normalizando e validando o caminho resolvido antes da gravação.
- Implementação no navegador: `File.arrayBuffer()` → JSZip / fflate `unzipSync()` → `URL.createObjectURL(new Blob([bytes]))` por entrada para downloads, sem requisição ao servidor.
- Criptografia não tratada: ZipCrypto é quebrado em 3 bytes de texto conhecido; WinZip AES-256 (APPNOTE 7.0, campo extra AE-2 com HMAC-SHA1) não é implementado aqui.
- ZIP64 (APPNOTE 4.5+) estende os campos de tamanho/offset de 32 bits para 64 bits via campos extras; necessário para arquivos ou entradas individuais acima de 4 GiB (2³² − 1 bytes).
Exemplos
Visualizar Conteúdo do Arquivo
Visualize a lista de arquivos dentro de um arquivo ZIP diretamente no navegador, sem precisar instalar software de extraçãoExtrair Arquivos Individuais
Baixe apenas o arquivo que você precisa do arquivo compactado, sem extrair tudoExtração em Lote
Extraia e baixe todos os arquivos do arquivo compactado com um único cliquePerguntas frequentes
O ZIP é enviado para o servidor para a extração?
Não. A página lê o ZIP localmente via API FileReader e descompacta as entradas no navegador usando JSZip. Os arquivos nunca saem do seu dispositivo. Você pode confirmar pela aba Network durante a extração.
Quais variantes de ZIP ele suporta?
Arquivos ZIP padrão usando compressão DEFLATE (a variante mais comum). Entradas Stored (sem compressão) também funcionam. ZIP64 (para arquivos acima de 4 GB) é suportado na maioria das versões. Entradas criptografadas (protegidas por senha) e formatos 7Z, RAR, TAR não são suportados — use uma ferramenta dedicada para esses.
Consigo extrair ZIPs protegidos por senha?
Em geral, não. O JSZip não lida com entradas criptografadas com ZipCrypto nem com AES. Descriptografe primeiro com 7-Zip ou WinRAR no desktop e, depois, reempacote e envie aqui se precisar inspecionar a estrutura.
E se o ZIP tiver nomes em chinês ou japonês?
A página lê os nomes dos arquivos como UTF-8 por padrão. ZIPs antigos criados no Windows podem armazenar os nomes em GBK (chinês) ou Shift_JIS (japonês) sem ativar a flag de UTF-8 — esses aparecem embaralhados. Recrie o ZIP com uma ferramenta que reconheça UTF-8, ou use o 7-Zip no desktop com a configuração de code page correta.
Qual é o limite de tamanho de arquivo?
A memória do navegador. Desktops modernos lidam com ZIPs de 1 GB ou mais; navegadores de celular ficam sem memória por volta de algumas centenas de MB. Para arquivos muito grandes, use uma ferramenta de desktop que faça streaming a partir do disco.
Consigo visualizar o conteúdo dos arquivos sem extrair?
Sim para arquivos de texto — clique em qualquer entrada e a página mostra o conteúdo. Imagens aparecem como miniaturas. Entradas binárias (executáveis, ZIPs aninhados) só mostram metadados; baixe para inspecionar.
Arquivos ocultos e dotfiles são extraídos?
Sim. O ZIP não tem o conceito de atributo 'oculto' — todas as entradas são visíveis. Nomes de arquivo começando com ponto (.gitignore, .env) são extraídos normalmente; trate-os como arquivos comuns.