
Veto v2.3
Cliente Android de código aberto para VirusTotal. Digitalize arquivos, URLs e aplicativos instalados em mais de 70 mecanismos antivírus. Veja relatórios detalhados com hashes, classificações de ameaças, correspondências YARA e comportamentos de sandbox. Sem rastreamento ou anúncios.
Veto
Um cliente VirusTotal de código aberto para Android
Gratuito e de código aberto. Traga sua própria chave de API do VirusTotal para analisar arquivos, links e aplicativos instalados em mais de 70 mecanismos, construído com uma interface Material 3. Sem contas, sem rastreamento, sem anúncios.
O que é o Veto?
O Veto é um cliente Android para o VirusTotal. Envie um arquivo, um link ou um aplicativo instalado para visualizar os resultados da análise em tempo real. O aplicativo exibe um relatório claro que vai desde um único veredito unificado até o conjunto completo de campos retornados pelo serviço.
O projeto é gratuito e de código aberto, sem contas de usuário, sistemas de rastreamento ou publicidade. Como os usuários fornecem sua própria chave de API do VirusTotal, todas as análises são executadas diretamente sob sua conta pessoal, sem serem roteadas por servidores intermediários de terceiros.
Capturas de Tela
![]() | ![]() | ![]() |
![]() | ![]() |
Conjunto de Recursos
- Capacidade de Análise: Analise aplicativos instalados, arquivos locais ou URLs de destino.
- Agregação Multi-Mecanismo: Combina diagnósticos de mais de 70 mecanismos antivírus.
- Modos de Relatório Duplos: Modo rápido para resumos de verificação rápidos e modo Detalhado para inspeção aprofundada.
- Explicações Contextuais: Texto explicativo está disponível para cada seção, com uma configuração para ocultar explicações, se desejado.
- Relatórios de Alta Fidelidade: Exibe hashes de arquivos, classificações de ameaças, histórico, votos da comunidade, comportamentos de sandbox, correspondências YARA, detalhes internos de aplicativos Android e todos os campos adicionais do payload da API.
- Execução em Segundo Plano: Acompanhamento do progresso de upload e análise em tempo real que persiste dentro de um serviço em segundo plano.
- Acesso Offline: Salva relatórios localmente para permitir revisão posterior, mesmo sem conexão com a internet.
- Avisos de Limite de Taxa: Exibe notificações claras quando a chave de API local atinge seu limite de taxa.
- Temas: Suporte completo ao Material 3 com cores dinâmicas do sistema, suportando temas claro e escuro.
Detalhes da Implementação da Arquitetura Central
- Sincronização de Estado: O
ScanManagercom escopo de aplicativo serve como a fonte central de verdade para todos os estados de análise. Isso garante que a interface do usuário permaneça sincronizada, esteja o aplicativo ativo em primeiro plano, suspenso em segundo plano ou destruído pelo sistema operacional. - Polling Resiliente: O aplicativo consulta o endpoint
/analyses/{id}usando um limite de relógio de parede de seis minutos. Se uma resposta de limite de taxa for encontrada, o processo aguarda em vez de falhar. O relatório é buscado novamente até que os resultados sejam preenchidos, retornando um estado de falha estruturado se o limite de tempo for atingido. - Ciclo de Vida do Processo: Enquanto o
ScanStatereside dentro doScanManagerpara sobreviver à destruição da Activity, oScanServicemantém o ciclo de vida do processo durante operações ativas e gerencia notificações em andamento e de conclusão. - Análise de Fidelidade Total: Campos comuns são capturados usando modelos tipados, enquanto o JSON completo e bruto de
attributesé retido por meio de um serializador personalizado. Isso permite que a visualização do relatório Detalhado renderize todos os campos retornados, incluindo quaisquer novos campos adicionados ao payload da API ao longo do tempo.
Pilha de Tecnologias
| Camada | Tecnologia | Papel no Projeto |
|---|---|---|
| Linguagem | Kotlin | Linguagem de programação principal |
| Framework de UI | Jetpack Compose | Estrutura de UI declarativa |
| Sistema de Design | Material 3 | Estilo visual, cores dinâmicas do sistema e ícones estendidos |
| Injeção de Dependência | Hilt | Gerenciamento de dependências |
| Rede | Retrofit & OkHttp | Comunicação HTTP com a API do VirusTotal |
| Serialização | kotlinx.serialization | Análise JSON type-safe e preservação de atributos personalizados |
| Assincronia | Kotlin Coroutines | Programação assíncrona e processamento em segundo plano |
| Persistência | Jetpack DataStore | Armazenamento de configurações dinâmicas e relatórios de análise salvos |
| Compatibilidade | SDK 30 a 36 | Compilado com JDK 17, minSdk 30, targetSdk 36 |
Estrutura do Projeto
└── app/src/main/java/com/quantum_prof/vtscansuite/
├── data/ # Modelos, API remota e implementação do repositório
├── domain/ # Interface do repositório e casos de uso de negócios
├── di/ # Módulos de injeção de dependência do Hilt
├── scan/ # ScanManager, ScanService e notificações do sistema
└── ui/ # Componentes de UI e camadas de apresentação
├── intro/ # Tela de abertura e configuração da chave de API
├── dashboard/ # Hub de navegação: módulos de análise de link, arquivo e aplicativo
├── results/ # Visualizadores de relatórios Rápido e Detalhado
├── components/# Elementos e layouts de UI reutilizáveis
├── theme/ # Configurações de cores, formas, tipografia e movimento
└── util/ # Utilitários de feedback tátil, gestos e deep linking
- Os recursos e textos da listagem na loja estão disponíveis em
fastlane/metadata/android/en-US/. - Os SVGs editáveis dos mockups estão localizados em
docs/store/svg/. - Os mockups podem ser exportados para o formato PNG usando
docs/store/export.html.
Começando
Pré-requisitos
- Android Studio (versão estável mais recente)
- JDK 17
- Uma chave de API gratuita do VirusTotal, que pode ser obtida em: https://www.virustotal.com/gui/my-apikey
Compilar e Executar
Clone o repositório e compile a versão de depuração usando a linha de comando:
git clone https://github.com/ProfessorQuantumUniverse/VTScan.git
cd VTScan
./gradlew :app:assembleDebug
Alternativamente, abra o diretório raiz no Android Studio e selecione a configuração de execução.
No primeiro lançamento, insira sua chave de API do VirusTotal na tela de configuração de introdução. A chave é armazenada localmente no seu dispositivo, criptografada com uma chave AES-256-GCM do Android Keystore, e excluída do backup na nuvem e da transferência entre dispositivos. Chaves de API gratuitas geralmente estão sujeitas a um limite de quatro consultas por minuto.
Política de Privacidade
O aplicativo se comunica exclusivamente com a API do VirusTotal usando as credenciais que você fornece. Arquivos enviados, URLs submetidas e resultados dinâmicos são enviados diretamente aos servidores do VirusTotal. A chave de API é armazenada localmente no seu dispositivo, criptografada com uma chave AES-256-GCM do Android Keystore, e é excluída do backup na nuvem e da transferência entre dispositivos, portanto nunca sai do dispositivo. O registro de HTTP é limitado a versões de depuração e oculta o cabeçalho da chave. O Veto não coleta dados de análise e não contém SDKs de publicidade.
Licença
Este projeto está licenciado sob os termos da GNU General Public License v3.0.
Termos Principais da GPLv3:
- Uso comercial: Permitido
- Modificação: Permitida
- Distribuição: Permitida
- Divulgação do código-fonte: Exigida na distribuição
- Mesma licença: O código modificado também deve usar a GPLv3
- Responsabilidade e Garantia: Nenhuma fornecida pelos autores
Para mais detalhes, consulte o arquivo LICENSE neste repositório.




