
Клиент с открытым исходным кодом для VirusTotal на Android. Сканируйте файлы, URL-адреса и установленные приложения с помощью более 70 антивирусных движков. Просматривайте подробные отчёты с хешами, классификациями угроз, совпадениями YARA и поведением в песочнице. Без отслеживания и рекламы.
Бесплатно и с открытым исходным кодом. Используйте свой собственный API-ключ VirusTotal для сканирования файлов, ссылок и установленных приложений с помощью более 70 антивирусных движков. Интерфейс выполнен в стиле Material 3. Никаких аккаунтов, отслеживания или рекламы.
Veto — это Android-клиент для VirusTotal. Отправьте файл, ссылку или установленное приложение, чтобы просмотреть результаты анализа в реальном времени. Приложение отображает чёткий отчёт: от единого сводного вердикта до полного набора полей, возвращаемых сервисом.
Проект бесплатен и имеет открытый исходный код, не содержит учётных записей пользователей, систем отслеживания или рекламы. Поскольку пользователи предоставляют свой собственный API-ключ VirusTotal, все сканирования выполняются непосредственно под их личной учётной записью, без маршрутизации через сторонние промежуточные серверы.
![]() | ![]() | ![]() |
ScanManager в области приложения служит централизованным источником истины для всех состояний сканирования. Это гарантирует, что пользовательский интерфейс остаётся синхронизированным, независимо от того, активно ли приложение на переднем плане, приостановлено в фоне или уничтожено операционной системой./analyses/{id}, используя шестиминутный лимит по настенным часам. При получении ответа о превышении лимита скорости процесс ожидает, а не завершается с ошибкой. Отчёт повторно запрашивается до тех пор, пока результаты не будут заполнены; возвращается структурированное состояние ошибки, если лимит времени превышен.ScanState находится внутри ScanManager для переживания уничтожения Activity, ScanService поддерживает жизненный цикл процесса во время активных операций и управляет уведомлениями о текущих и завершённых операциях.└── app/src/main/java/com/quantum_prof/vtscansuite/
├── data/ # Модели, удалённый API и реализация репозитория
├── domain/ # Интерфейс репозитория и бизнес-сценарии использования
├── di/ # Модули внедрения зависимостей Hilt
├── scan/ # ScanManager, ScanService и системные уведомления
└── ui/ # Компоненты UI и слои представления
├── intro/ # Экран приветствия и настройка API-ключа
├── dashboard/ # Навигационный центр: модули сканирования ссылок, файлов и приложений
├── results/ # Визуализаторы быстрых и подробных отчётов
├── components/# Переиспользуемые элементы UI и макеты
├── 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.
При первом запуске введите свой API-ключ VirusTotal на экране начальной настройки. Ключ хранится локально на вашем устройстве. Бесплатные API-ключи обычно ограничены четырьмя запросами в минуту.
Приложение взаимодействует исключительно с API VirusTotal, используя предоставленные вами учётные данные. Загруженные файлы, отправленные URL и динамические результаты отправляются напрямую на серверы VirusTotal. API-ключ хранится локально на вашем устройстве. Veto не собирает аналитические данные и не содержит SDK для рекламы.
Этот проект лицензируется на условиях GNU General Public License v3.0.
Для получения дополнительной информации см. файл LICENSE в этом репозитории.
![]() | ![]() |
| Слой | Технология | Роль в проекте |
|---|
| Язык | Kotlin | Основной язык программирования |
| Фреймворк UI | Jetpack Compose | Декларативная структура UI |
| Дизайн-система | Material 3 | Визуальный стиль, динамическая системная раскраска, расширенные иконки |
| Внедрение зависимостей | Hilt | Управление зависимостями |
| Сеть | Retrofit & OkHttp | HTTP-взаимодействие с API VirusTotal |
| Сериализация | kotlinx.serialization | Типобезопасный разбор JSON и сохранение кастомных атрибутов |
| Асинхронность | Kotlin Coroutines | Асинхронное программирование и фоновая обработка |
| Персистентность | Jetpack DataStore | Хранение динамических настроек и сохранённых отчётов сканирования |
| Совместимость | SDK 30–36 | Сборка с JDK 17, minSdk 30, targetSdk 36 |