
Клиент с открытым исходным кодом для VirusTotal на Android. Сканируйте файлы, URL-адреса и установленные приложения с помощью более 70 антивирусных движков. Просматривайте подробные отчёты с хешами, классификациями угроз, совпадениями YARA и поведением в песочнице. Без отслеживания и рекламы.
Бесплатно и с открытым исходным кодом. Используйте собственный ключ VirusTotal API для проверки файлов, ссылок и установленных приложений более чем по 70 движкам — всё это с интерфейсом Material 3. Без аккаунтов, без отслеживания, без рекламы.
Veto — это Android-клиент для VirusTotal. Отправьте файл, ссылку или установленное приложение, чтобы просмотреть результаты анализа в реальном времени. Приложение отображает понятный отчёт — от единого сводного вердикта до полного набора полей, возвращаемых сервисом.
Проект бесплатен и имеет открытый исходный код, не содержит пользовательских аккаунтов, систем отслеживания или рекламы. Поскольку пользователи предоставляют собственный ключ VirusTotal API, все проверки выполняются напрямую под их личным аккаунтом, без промежуточных сторонних серверов.
![]() | ![]() | ![]() |
ScanManager в области видимости приложения служит централизованным источником истины для всех состояний проверки. Это гарантирует, что пользовательский интерфейс остаётся синхронизированным, независимо от того, активно ли приложение на переднем плане, приостановлено в фоне или уничтожено операционной системой./analyses/{id} с шестиминутным пределом по настенным часам. При получении ответа о превышении лимита запросов процесс ожидает, а не завершается с ошибкой. Отчёт повторно запрашивается до тех пор, пока результаты не будут заполнены, возвращая структурированное состояние ошибки при достижении лимита времени ожидания.ScanState находится внутри ScanManager, чтобы пережить уничтожение Activity, ScanService поддерживает жизненный цикл процесса во время активных операций и управляет текущими и завершающими уведомлениями.attributes сохраняется через пользовательский сериализатор. Это позволяет подробному представлению отчёта отображать все возвращаемые поля, включая любые новые поля, добавляемые в полезную нагрузку API с течением времени.└── app/src/main/java/com/quantum_prof/vtscansuite/
├── data/ # Модели, удалённый API и реализация репозитория
├── domain/ # Интерфейс репозитория и бизнес-сценарии использования
├── di/ # Модули внедрения зависимостей Hilt
├── scan/ # ScanManager, ScanService и системные уведомления
└── ui/ # Компоненты пользовательского интерфейса и слои представления
├── intro/ # Экран приветствия и настройка ключа API
├── dashboard/ # Навигационный центр: модули проверки ссылок, файлов и приложений
├── results/ # Визуализаторы быстрых и подробных отчётов
├── components/# Переиспользуемые элементы и макеты пользовательского интерфейса
├── theme/ # Конфигурации цветов, фигур, типографики и анимации
└── util/ # Утилиты тактильной обратной связи, жестов и глубоких ссылок
fastlane/metadata/android/en-US/.docs/store/svg/.docs/store/export.html.Клонируйте репозиторий и соберите отладочную версию с помощью командной строки:
git clone https://github.com/ProfessorQuantumUniverse/VTScan.git
cd VTScan
./gradlew :app:assembleDebug
Либо откройте корневой каталог в Android Studio и выберите конфигурацию Run.
При первом запуске введите свой ключ VirusTotal API на экране настройки приветствия. Ключ хранится локально на вашем устройстве, зашифрованный ключом AES-256-GCM из Android Keystore, и исключён из облачного резервного копирования и переноса между устройствами. Бесплатные ключи API обычно ограничены четырьмя запросами в минуту.
Приложение взаимодействует исключительно с VirusTotal API, используя предоставленные вами учётные данные. Загруженные файлы, отправленные URL-адреса и динамические результаты отправляются напрямую на серверы VirusTotal. Ключ API хранится локально на вашем устройстве, зашифрованный ключом AES-256-GCM из Android Keystore, и исключён из облачного резервного копирования и переноса между устройствами, поэтому он никогда не покидает устройство. Журналирование HTTP ограничено отладочными сборками и скрывает заголовок ключа. Veto не собирает данные аналитики и не содержит рекламных SDK.
Этот проект распространяется на условиях GNU General Public License v3.0.
Для получения дополнительных сведений см. файл LICENSE в этом репозитории.
![]() | ![]() |
| Слой | Технология | Роль в проекте |
|---|
| Язык | Kotlin | Основной язык программирования |
| UI-фреймворк | Jetpack Compose | Декларативная структура пользовательского интерфейса |
| Дизайн-система | Material 3 | Визуальный стиль, динамическая системная окраска и расширенные иконки |
| Внедрение зависимостей | Hilt | Управление зависимостями |
| Сеть | Retrofit & OkHttp | HTTP-взаимодействие с VirusTotal API |
| Сериализация | kotlinx.serialization | Типобезопасный разбор JSON и сохранение пользовательских атрибутов |
| Асинхронность | Kotlin Coroutines | Асинхронное программирование и фоновая обработка |
| Хранение данных | Jetpack DataStore | Хранение динамических настроек и сохранённых отчётов о проверках |
| Совместимость | SDK 30–36 | Сборка с JDK 17, minSdk 30, targetSdk 36 |