Uma ferramenta profissional para descompactação segura de arquivos com proteção contra vulnerabilidades e tratamento robusto de erros.
- Proteção contra Path Traversal Attacks
- Verificação rigorosa de permissões
- Sanitização de caminhos durante extração
- Limpeza automática em caso de falha
- Manutenção de permissões seguras (0700)
- Detecção de arquivos maliciosos
- Logs detalhados em arquivo (
descompactador.log)
- Formatos suportados:
.zip,.tar,.tar.gz,.tar.bz2,.tar.xz - Detecção automática de formato com prioridade para combinações
- Validação de integridade de arquivos (teste ZIP completo)
- Prevenção contra extração de arquivos perigosos
- Códigos de saída diferenciados para cada tipo de erro
- Mensagens intuitivas com emojis visuais
- Suporte a permissões originais (quando seguras)
- Python 3.8+
- Nenhuma dependência externa necessária
git clone https://github.com/JP-Linux/descompactador.git
cd descompactador
chmod +x descompactador.py # Tornar executável./descompactador.py arquivo_compactado.extensao./descompactador.py arquivo_compactado.zip saida/# Descompactar .tar para diretório específico
./descompactador.py backup.tar backup/
# Descompactar .tar.gz mantendo permissões
./descompactador.py backup.tar.gz documentos/
# Tentar extrair arquivo malicioso (será bloqueado)
./descompactador.py arquivo_perigoso.zip| Código | Erro | Descrição |
|---|---|---|
| 0 | Sucesso | Extração concluída com êxito |
| 1 | Erros conhecidos | Arquivo inválido/formato não suportado |
| 2 | Erro inesperado | Exceção não tratada (verifique logs) |
| 130 | Interrupção usuário | Processo cancelado (Ctrl+C) |
Exemplos de mensagens:
# Tentativa de path traversal
❌ Erro de processamento: Tentativa de path traversal detectada: ../../etc/passwd
# Permissão negada
❌ Erro de processamento: Permissão negada para ler o arquivo: secreto.zip
# Arquivo corrompido
❌ Erro de processamento: Arquivo ZIP corrompido: documento.docxgraph TD
A[Início] --> B[Validar arquivo]
B --> C{Arquivo válido?}
C -->|Não| D[Erro: Arquivo inválido]
C -->|Sim| E[Detectar formato]
E --> F{Formato suportado?}
F -->|Não| G[Erro: Formato não suportado]
F -->|Sim| H[Criar diretório seguro]
H --> I[Extrair arquivos]
I --> J[Sanitizar cada caminho]
J --> K{Path traversal?}
K -->|Sim| L[Abortar e limpar]
K -->|Não| M[Escrever arquivo]
M --> N[Aplicar permissões seguras]
N --> O[Log de sucesso]
- Path Traversal Prevention: Verifica cada caminho extraído
- Safe Permissions:
- Diretórios criados com 0700
- Permissões de arquivos filtradas (remove setuid/sticky bits)
- Secure Cleanup: Remove arquivos parciais em caso de erro
- Corruption Checks: Teste de integridade completo em arquivos ZIP
- Input Validation: Verificação rigorosa de formatos e permissões
- Activity Logging: Auditoria completa em arquivo de log
Se este projeto foi útil para você, considere apoiar meu trabalho através do GitHub Sponsors:
Este projeto está licenciado sob a Licença MIT - veja o arquivo LICENSE para detalhes.