
Cliente Android de código abierto para VirusTotal. Escanea archivos, URLs y aplicaciones instaladas contra más de 70 motores antivirus. Visualiza informes detallados con hashes, clasificaciones de amenazas, coincidencias de YARA y comportamientos de sandbox. Sin seguimiento ni anuncios.
Gratuito y de código abierto. Usa tu propia clave de API de VirusTotal para escanear archivos, enlaces y aplicaciones instaladas contra más de 70 motores, con una interfaz Material 3. Sin cuentas, sin rastreo, sin anuncios.
Veto es un cliente de Android para VirusTotal. Envía un archivo, un enlace o una aplicación instalada para ver los resultados del análisis en tiempo real. La aplicación muestra un informe claro que va desde un único veredicto unificado hasta el conjunto completo de campos devueltos por el servicio.
El proyecto es gratuito y de código abierto, sin cuentas de usuario, sistemas de rastreo ni publicidad. Como los usuarios aportan su propia clave de API de VirusTotal, todos los análisis se ejecutan directamente bajo su cuenta personal sin pasar por servidores intermediarios de terceros.
![]() | ![]() | ![]() |
ScanManager con ámbito de aplicación actúa como la fuente centralizada de verdad para todos los estados de análisis. Esto garantiza que la interfaz de usuario permanezca sincronizada tanto si la aplicación está activa en primer plano, suspendida en segundo plano o destruida por el sistema operativo./analyses/{id} con un límite de reloj de pared de seis minutos. Si se encuentra una respuesta de límite de tasa, el proceso espera en lugar de fallar. El informe se vuelve a obtener hasta que los resultados se completan, devolviendo un estado de fallo estructurado si se alcanza el límite de tiempo.ScanState reside dentro del ScanManager para sobrevivir a la destrucción de la Activity, ScanService mantiene el ciclo de vida del proceso durante las operaciones activas y gestiona las notificaciones en curso y de finalización.attributes sin procesar se conserva mediante un serializador personalizado. Esto permite que la vista de informe detallado muestre todos los campos devueltos, incluidos los nuevos campos que se añadan al payload de la API con el tiempo.└── app/src/main/java/com/quantum_prof/vtscansuite/
├── data/ # Modelos, API remota e implementación del repositorio
├── domain/ # Interfaz del repositorio y casos de uso de negocio
├── di/ # Módulos de inyección de dependencias de Hilt
├── scan/ # ScanManager, ScanService y notificaciones del sistema
└── ui/ # Componentes de UI y capas de presentación
├── intro/ # Pantalla de inicio y configuración de la clave de API
├── dashboard/ # Centro de navegación: módulos de análisis de enlaces, archivos y aplicaciones
├── results/ # Visualizadores de informes rápidos y detallados
├── components/# Elementos y diseños de UI reutilizables
├── theme/ # Configuraciones de color, formas, tipografía y movimiento
└── util/ # Utilidades de retroalimentación háptica, gestos y enlaces profundos
fastlane/metadata/android/en-US/.docs/store/svg/.docs/store/export.html.Clona el repositorio y compila la versión de depuración usando la línea de comandos:
git clone https://github.com/ProfessorQuantumUniverse/VTScan.git
cd VTScan
./gradlew :app:assembleDebug
Alternativamente, abre el directorio raíz en Android Studio y selecciona la configuración de ejecución.
En el primer inicio, introduce tu clave de API de VirusTotal en la pantalla de configuración de introducción. La clave se almacena localmente en tu dispositivo, cifrada con una clave AES-256-GCM del Android Keystore, y se excluye de la copia de seguridad en la nube y de la transferencia entre dispositivos. Las claves de API gratuitas suelen estar sujetas a un límite de cuatro consultas por minuto.
La aplicación se comunica exclusivamente con la API de VirusTotal usando las credenciales que proporcionas. Los archivos subidos, las URL enviadas y los resultados dinámicos se envían directamente a los servidores de VirusTotal. La clave de API se almacena localmente en tu dispositivo, cifrada con una clave AES-256-GCM del Android Keystore, y se excluye de la copia de seguridad en la nube y de la transferencia entre dispositivos, por lo que nunca sale del dispositivo. El registro HTTP se limita a las compilaciones de depuración y redacta el encabezado de la clave. Veto no recopila datos de analítica y no contiene SDK de publicidad.
Este proyecto está licenciado bajo los términos de la GNU General Public License v3.0.
Para más detalles, consulta el archivo LICENSE en este repositorio.
![]() | ![]() |
| Capa | Tecnología | Rol en el proyecto |
|---|
| Lenguaje | Kotlin | Lenguaje de programación principal |
| Framework de UI | Jetpack Compose | Estructura de UI declarativa |
| Sistema de diseño | Material 3 | Estilo visual, colores dinámicos del sistema e iconos extendidos |
| Inyección de dependencias | Hilt | Gestión de dependencias |
| Red | Retrofit y OkHttp | Comunicación HTTP con la API de VirusTotal |
| Serialización | kotlinx.serialization | Análisis JSON seguro por tipos y conservación de atributos personalizados |
| Asincronía | Kotlin Coroutines | Programación asíncrona y procesamiento en segundo plano |
| Persistencia | Jetpack DataStore | Almacenamiento de configuración dinámica e informes de análisis guardados |
| Compatibilidad | SDK 30 a 36 | Compilado con JDK 17, minSdk 30, targetSdk 36 |