В этой заметке покажу, как быстро проверить файл через Virus Total прямо из терминала Linux, не залазя в веб-интерфейс.
🖐️Эй!
Подписывайтесь на наш телеграм @r4ven_me📱, чтобы не пропустить новые публикации на сайте😉. А если есть вопросы или желание пообщаться по тематике — заглядывайте в Вороний чат @r4ven_me_chat🧐.
Также в блоге теперь доступно соавторство 🐧🐧🐧.
Введение
Virus Total - это облачный сервис, который проверяет файлы и ссылки через набор антивирусов и поведенческих анализаторов. В веб-интерфейсе можно загружать файлы вручную, но есть и возможность работы из командной строки - утилита vt-cli. Это официальный CLI инструмент от самого Virus Total, написанный на Go, с полной поддержкой всех основных операций: проверка файлов, хешей, URL’ов, включая запрос исторических данных о детекциях.
Вводные данные
В примерах ниже я использовал LMDE 7 (Debian 13) и Linux Mint 22 (Ubuntu 24.04). Версии ПО:
| ПО | Версия |
|---|---|
| Go | 1.26.5 |
| vt-cli | 1.3.1 |
| Debian/Ubuntu | 13/24.04 |
Получение бесплатного API ключа Virus Total
Прежде всего нужна учётная запись на Virus Total и API ключ.
Переходим на страницу регистрации https://www.virustotal.com/gui/join-us, заполняем форму и подтверждаем email:

После входа в аккаунт заходим в профиль и получаем API ключ:

Скопируйте ключ - он понадобится при инициализации vt-cli.
📝 Бесплатная подписка на Virus Total даёт 500 запросов в день. Для большинства случаев достаточно, но для какой-то автоматизации может явно не хватать.
Установка Go
vt-cli написана на Go, поэтому нужен сам Go! Скачиваем актуальную на момент написания статьи версию с https://go.dev/dl/:
curl -fsSL -o /tmp/go1.26.5.linux-amd64.tar.gz https://go.dev/dl/go1.26.5.linux-amd64.tar.gzРаспаковываем в домашнюю директорию с помощью tar:
tar -C $HOME/.local -xzf /tmp/go1.26.5.linux-amd64.tar.gzДобавляем Go в PATH. Если используете zsh (как я):
echo 'export GOBIN=$HOME/.local/go/bin' >> ~/.zshrc
echo 'export PATH=$PATH:$GOBIN' >> ~/.zshrc
exec zshЕсли bash - тогда в ~/.bashrc вместо ~/.zshrc.
Проверяем, что Go установился:
go versionЕсли всё нормально, увидим примерно такой вывод:
go version go1.26.5 linux/amd64Установка vt-cli
Устанавливаем утилиту через go install. Исходники и документация на GitHub: https://github.com/virustotal/vt-cli.
go install github.com/VirusTotal/vt-cli/vt@latestПроверяем версию:
vt versionИнициализируем утилиту и добавляем API ключ. На этом шаге вас попросят ввести ключ, который мы скопировали в аккаунте Virus Total:
vt init
После этого ключ сохранится локально в ~/.config/vt/config.json, и vt-cli готова к работе.
Настройка автодополнения в ZSH (опционально)
Если часто используете vt-cli и хотите автодополнения при нажатии Tab, генерируем completion-скрипт для ZSH:
mkdir -vp $ZSH/completions
vt completion zsh > $ZSH/completions/_vt
exec zshТеперь при вводе vt и нажатии Tab будут подсказываться доступные команды.
📝 Если используете bash, замените на vt completion bash > ~/.bash_completion.d/vt-cli (если директория существует) или vt completion bash | sudo tee /etc/bash_completion.d/vt-cli > /dev/null.
Примеры использования
Теперь к самому интересному - как собственно использовать утилиту для проверки файлов из консоли 👨💻.
Проверка файла по пути
Самый простой случай - проверить файл, который лежит у вас на диске:
dd if=/dev/urandom of=./app.bin bs=100K count=3
vt scan file ./app.bin --wait
Если файл новый и ещё не был в базе Virus Total, утилита его загрузит и запустит проверку. Благодаря ключу --wait результат вернётся сразу после анализа:

Получение результатов анализа
После загрузки файла без --wait он попадает в очередь анализа, а в ответ выводится идентификатор:

Чтобы получить результаты, используем команду с ID анализа:
vt analysis <ID-анализа>
Проверка файла по хешу
Если у вас есть SHA-256, MD5 или SHA-1 хеш файла, можно проверить его прямо без загрузки:
vt file <ХЕШ>Например:
vt file 4ca58a3308c1a5abc7bc4cc4bcb7b6b20e0b9043aee9cd5f4ce43b8da10bdc0dЭто полезно, если нужно найти старый анализ.
Проверка URL’а
Проверяем безопасность ссылки:
vt scan url https://r4ven.meКоманда scan говорит, что мы хотим запустить свежий анализ. Результат вернётся с ID анализа, затем можно запросить результаты той же командой vt analysis или используйте ключ --wait.
Если по URL расположен файл, например Bash скрипт, то воспользовавшись механизмом перенаправления потоков, можно выполнить проверку без его скачивания:
vt scan file <(curl -Ls https://raw.githubusercontent.com/jatinkrmalik/vocalinux/main/install.sh) --wait
Вывод результатов в JSON
По умолчанию vt-cli выводит результаты в человеко-читаемом формате. Если нужно обработать результаты скриптом, используйте флаг --json:
vt file <ХЕШ> --format=json | jq '.data.attributes.last_analysis_stats'Например:
vt file 4ca58a3308c1a5abc7bc4cc4bcb7b6b20e0b9043aee9cd5f4ce43b8da10bdc0d --format=json | jq '.[0].last_analysis_stats'Здесь мы получим JSON со статистикой детекций, и через jq вытащим интересующие нас поля.
{
"confirmed-timeout": 0,
"failure": 1,
"harmless": 0,
"malicious": 0,
"suspicious": 0,
"timeout": 0,
"type-unsupported": 13,
"undetected": 60
}Послесловие
vt-cli - удобный инструмент для оперативной работы с потенциально опасными файлами из консоли.
Главный минус тут - это лимит запросов на бесплатном плане (500 в сутки). Для регулярного автоматического скана такого может и не хватить, но для выборочных проверок и тестов вполне себе. У сервиса конечно есть премиум подписка, но это другая история 😉.
Спасибо, что читаете. Помните, вы сами ответственны за свою цифровую безопасность! 🐧
Полезные материалы
👨💻Ну и…
Не забывайте про нашу телегу📱и чат 💬
Или может хотите стать соавтором? Тогда клик сюда🔗
Всех благ✌️
That should be it. If not, check the logs 🙂



Комментарии