Retour aux mises à jour
New releaseSep 7, 2026

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.

Partager
Veto, le client VirusTotal open source

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.

Platform Kotlin Jetpack Compose minSdk

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

Écran du tableau de bordÉcran de résultats propresÉcran de rapport détaillé
Écran des paramètresÉcran des analyses enregistrées

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 ScanState réside dans le ScanManager pour survivre à la destruction de l'Activity, le ScanService maintient 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 attributes est 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

CoucheTechnologieRôle dans le projet
LangageKotlinLangage de programmation principal
Framework UIJetpack ComposeStructure UI déclarative
Système de conceptionMaterial 3Style visuel, coloration dynamique du système et icônes étendues
Injection de dépendancesHiltGestion des dépendances
RéseauRetrofit & OkHttpCommunication HTTP avec l'API VirusTotal
Sérialisationkotlinx.serializationAnalyse JSON type-safe et préservation des attributs personnalisés
AsynchronieKotlin CoroutinesProgrammation asynchrone et traitement en arrière-plan
PersistanceJetpack DataStoreStockage des paramètres dynamiques et des rapports d'analyse enregistrés
CompatibilitéSDK 30 à 36Compilé 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

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.


Propulsé par l'API VirusTotal. Non affilié à VirusTotal ni approuvé par celui-ci.

Catégories