如何使用C#中的VirusTotal.NET库查找文件是否受病毒感染?

如何使用C#中的VirusTotal.NET库查找文件是否受病毒感染?,c#,virus-scanning,C#,Virus Scanning,我目前正在C#MVC项目中使用VirusTotal.NET nuget包扫描上传的文件。我使用的是这里给出的相同示例 我正在将上传文件的字节数组加载到上述代码中的eicar变量。根据给定的示例,它将提供文件是否在扫描之前进行扫描。但我真正需要的是文件是否被感染。有人能给我建议一个解决方案吗?查看该类,您得到的报告中包含的信息比他们的代码示例中的响应代码多得多。有3个字段看起来很有趣: /// <summary> /// How many engines flagged this re

我目前正在C#MVC项目中使用VirusTotal.NET nuget包扫描上传的文件。我使用的是这里给出的相同示例

我正在将上传文件的字节数组加载到上述代码中的
eicar
变量。根据给定的示例,它将提供文件是否在扫描之前进行扫描。但我真正需要的是文件是否被感染。有人能给我建议一个解决方案吗?

查看该类,您得到的报告中包含的信息比他们的代码示例中的响应代码多得多。有3个字段看起来很有趣:

/// <summary>
/// How many engines flagged this resource.
/// </summary>
public int Positives { get; set; }

/// <summary>
/// The scan results from each engine.
/// </summary>
public Dictionary<string, UrlScanEngine> Scans { get; set; }

/// <summary>
/// How many engines scanned this resource.
/// </summary>
public int Total { get; set; }
您可以使用该数据执行任何操作,如计算百分比:

var result = 100m * report.Positives / report.Total;
Console.WriteLine($"{result}% of scan engines detected a virus.");
或者只是将大多数阳性扫描引擎结果视为总体阳性结果:

var result = Math.Round(report.Positives / Convert.ToDecimal(report.Total));
Console.WriteLine($"Virus {(result == 0 ? "not detected": "detected")});

我认为门槛应该远远低于50%。即使是10%的引擎也不太可能在同一个文件上看到假阳性。
var result = 100m * report.Positives / report.Total;
Console.WriteLine($"{result}% of scan engines detected a virus.");
var result = Math.Round(report.Positives / Convert.ToDecimal(report.Total));
Console.WriteLine($"Virus {(result == 0 ? "not detected": "detected")});