Важное примечание перед использованием:
Будьте в курсе соглашения TOS. Вы предоставляете им полный доступ ко всему: «Когда вы загружаете или иным образом отправляете контент, вы даете VirusTotal (и тем, с кем мы работаем) всемирную, бесплатную, безотзывную и безвозвратную лицензию на использование, редактирование, размещение, хранение, воспроизведение, изменение, создавать производные работы, общаться, публиковать, публично исполнять, публично демонстрировать и распространять такой контент ".
Вместо того, чтобы использовать локальную антивирусную программу (и, таким образом, связать вашу программу с этим конкретным антивирусным продуктом и попросить своих клиентов установить этот антивирусный продукт), вы можете воспользоваться услугами VirusTotal.com
Этот сайт предоставляет бесплатную услугу, в которой ваш файл предоставляется в качестве входных данных для многих антивирусных продуктов, и вы получаете подробный отчет с доказательствами, полученными в результате процесса сканирования. Таким образом, ваше решение больше не привязано к определенному антивирусному продукту (хотя вы привязаны к доступности Интернета)
Сайт также предоставляет интерфейс прикладного программирования, который позволяет программно подходить к его модулю сканирования.
Здесь находится VirusTotal.NET библиотека для этого API
Вот исчерпывающая документация об их API
Вот документация с примерами в Python их интерфейса
И так как ни один ответ не является полным без кода, он берется непосредственно из примера клиента, поставляемого с библиотекой VirusTotal.NET
static void Main(string[] args)
{
VirusTotal virusTotal = new VirusTotal(ConfigurationManager.AppSettings["ApiKey"]);
//Use HTTPS instead of HTTP
virusTotal.UseTLS = true;
//Create the EICAR test virus. See http://www.eicar.org/86-0-Intended-use.html
FileInfo fileInfo = new FileInfo("EICAR.txt");
File.WriteAllText(fileInfo.FullName, @"X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*");
//Check if the file has been scanned before.
FileReport fileReport = virusTotal.GetFileReport(fileInfo);
bool hasFileBeenScannedBefore = fileReport.ResponseCode == ReportResponseCode.Present;
Console.WriteLine("File has been scanned before: " + (hasFileBeenScannedBefore ? "Yes" : "No"));
//If the file has been scanned before, the results are embedded inside the report.
if (hasFileBeenScannedBefore)
{
PrintScan(fileReport);
}
else
{
ScanResult fileResult = virusTotal.ScanFile(fileInfo);
PrintScan(fileResult);
}
... continue with testing a web site ....
}
ОТКАЗ
Я никоим образом не связан с ними. Я пишу этот ответ только потому, что он кажется хорошим обновлением для этих четырехлетних ответов.