
Veto v2.3
Client Android open-source pour VirusTotal. Analysez des fichiers, des URL et des applications installées contre plus de 70 moteurs antivirus. Consultez des rapports détaillés avec des hachages, des classifications de menaces, des correspondances YARA et des comportements de bac à sable. Pas de suivi ni de publicités.
Veto
Un client VirusTotal open source pour Android
Gratuit et open source. Apportez votre propre clé API VirusTotal pour analyser des fichiers, des liens et des applications installées auprès de plus de 70 moteurs, avec une interface Material 3. Pas de comptes, pas de suivi, pas de publicités.
Qu'est-ce que Veto ?
Veto est un client Android pour VirusTotal. Soumettez un fichier, un lien ou une application installée pour consulter les résultats d'analyse en temps réel. L'application affiche un rapport clair allant d'un verdict unifié unique à l'ensemble complet des champs renvoyés par le service.
Le projet est gratuit et open source, sans comptes utilisateur, systèmes de suivi ni publicités. Comme les utilisateurs fournissent leur propre clé API VirusTotal, toutes les analyses s'exécutent directement sous leur compte personnel sans passer par des serveurs tiers intermédiaires.
Captures d'écran
![]() | ![]() | ![]() |
![]() | ![]() |
Fonctionnalités
- Capacité d'analyse : Analysez des applications installées, des fichiers locaux ou des URL cibles.
- Agrégation multi-moteurs : Combine les diagnostics de plus de 70 moteurs antivirus.
- Double mode de rapport : Mode rapide pour des résumés de vérification rapides, et mode détaillé pour une inspection approfondie.
- Explications contextuelles : Un texte explicatif est disponible pour chaque section, avec un paramètre pour masquer les explications si souhaité.
- Rapports haute fidélité : Affiche les empreintes de fichiers, les classifications de menaces, l'historique, les votes de la communauté, les comportements en bac à sable, les correspondances YARA, les éléments internes des applications Android et tous les champs supplémentaires de la charge utile API.
- Exécution en arrière-plan : Suivi de la progression du téléversement et de l'analyse en temps réel qui persiste dans un service en arrière-plan.
- Accès hors ligne : Enregistre les rapports localement pour permettre une consultation ultérieure, même sans connexion Internet.
- Avertissements de limite de débit : Affiche des notifications claires lorsque la clé API locale atteint sa limite de débit.
- Thèmes : Prise en charge complète de Material 3 avec couleurs système dynamiques, prenant en charge les thèmes clair et sombre.
Détails d'implémentation de l'architecture principale
- Synchronisation d'état : Le
ScanManagerà portée d'application sert de source de vérité centralisée pour tous les états d'analyse. Cela garantit que l'interface utilisateur reste synchronisée, que l'application soit active au premier plan, suspendue en arrière-plan ou détruite par le système d'exploitation. - Interrogation résiliente : L'application interroge le point de terminaison
/analyses/{id}avec un plafond de six minutes sur l'horloge murale. Si une réponse de limite de débit est rencontrée, le processus attend plutôt que d'échouer. Le rapport est récupéré à nouveau jusqu'à ce que les résultats soient remplis, renvoyant un état d'échec structuré si le délai est atteint. - Cycle de vie des processus : Alors que le
ScanStateréside dans leScanManagerpour survivre à la destruction de l'Activity, leScanServicemaintient le cycle de vie du processus pendant les opérations actives et gère les notifications en cours et de fin. - Analyse de fidélité complète : Les champs courants sont capturés à l'aide de modèles typés, tandis que le JSON brut complet des
attributesest conservé via un sérialiseur personnalisé. Cela permet à la vue de rapport détaillé d'afficher tous les champs renvoyés, y compris les nouveaux champs ajoutés à la charge utile API au fil du temps.
Pile technologique
| Couche | Technologie | Rôle dans le projet |
|---|---|---|
| Langage | Kotlin | Langage de programmation principal |
| Framework UI | Jetpack Compose | Structure UI déclarative |
| Système de conception | Material 3 | Style visuel, coloration dynamique du système et icônes étendues |
| Injection de dépendances | Hilt | Gestion des dépendances |
| Réseau | Retrofit & OkHttp | Communication HTTP avec l'API VirusTotal |
| Sérialisation | kotlinx.serialization | Analyse JSON type-safe et préservation des attributs personnalisés |
| Asynchronie | Kotlin Coroutines | Programmation asynchrone et traitement en arrière-plan |
| Persistance | Jetpack DataStore | Stockage des paramètres dynamiques et des rapports d'analyse enregistrés |
| Compatibilité | SDK 30 à 36 | Compilé avec JDK 17, minSdk 30, targetSdk 36 |
Structure du projet
└── app/src/main/java/com/quantum_prof/vtscansuite/
├── data/ # Modèles, API distante et implémentation du référentiel
├── domain/ # Interface du référentiel et cas d'utilisation métier
├── di/ # Modules d'injection de dépendances Hilt
├── scan/ # ScanManager, ScanService et notifications système
└── ui/ # Composants UI et couches de présentation
├── intro/ # Écran de démarrage et configuration de la clé API
├── dashboard/ # Hub de navigation : modules d'analyse de liens, fichiers et applications
├── results/ # Visualiseurs de rapports rapides et détaillés
├── components/# Éléments et mises en page UI réutilisables
├── theme/ # Configurations des couleurs, formes, typographie et mouvement
└── util/ # Utilitaires de retour haptique, gestes et liens profonds
- Les ressources et textes de la fiche du store sont disponibles dans
fastlane/metadata/android/en-US/. - Les SVG de maquettes modifiables se trouvent dans
docs/store/svg/. - Les maquettes peuvent être exportées au format PNG à l'aide de
docs/store/export.html.
Pour commencer
Prérequis
- Android Studio (dernière version stable)
- JDK 17
- Une clé API VirusTotal gratuite, disponible à l'adresse : https://www.virustotal.com/gui/my-apikey
Compilation et exécution
Clonez le dépôt et compilez la version de débogage à l'aide de la ligne de commande :
git clone https://github.com/ProfessorQuantumUniverse/VTScan.git
cd VTScan
./gradlew :app:assembleDebug
Vous pouvez également ouvrir le répertoire racine dans Android Studio et sélectionner la configuration d'exécution.
Au premier lancement, saisissez votre clé API VirusTotal dans l'écran de configuration d'introduction. La clé est stockée localement sur votre appareil, chiffrée avec une clé AES-256-GCM du Android Keystore, et exclue de la sauvegarde cloud et du transfert d'appareil à appareil. Les clés API gratuites sont généralement soumises à une limite de quatre consultations par minute.
Politique de confidentialité
L'application communique exclusivement avec l'API VirusTotal en utilisant les identifiants que vous fournissez. Les fichiers téléversés, les URL soumises et les résultats dynamiques sont envoyés directement aux serveurs de VirusTotal. La clé API est stockée localement sur votre appareil, chiffrée avec une clé AES-256-GCM du Android Keystore, et exclue de la sauvegarde cloud et du transfert d'appareil à appareil, de sorte qu'elle ne quitte jamais l'appareil. La journalisation HTTP est limitée aux versions de débogage et masque l'en-tête de la clé. Veto ne collecte pas de données analytiques et ne contient aucun SDK publicitaire.
Licence
Ce projet est sous licence selon les termes de la GNU General Public License v3.0.
Conditions clés de la GPLv3 :
- Utilisation commerciale : Autorisée
- Modification : Autorisée
- Distribution : Autorisée
- Divulgation du code source : Requise lors de la distribution
- Même licence : Le code modifié doit également utiliser la GPLv3
- Responsabilité et garantie : Aucune fournie par les auteurs
Pour plus de détails, veuillez consulter le fichier LICENSE dans ce dépôt.




