gpt4 book ai didi

c# - 如何使用 C# 中的 VirusTotal.NET 库判断文件是否被病毒感染?

转载 作者:行者123 更新时间:2023-12-02 03:26:08 26 4
gpt4 key购买 nike

我目前正在我的 C# MVC 项目中使用 VirusTotal.NET nuget 包来扫描上传的文件。我使用此处给出的相同示例 https://github.com/Genbox/VirusTotal.NET

VirusTotal virusTotal = new VirusTotal("YOUR API KEY HERE");

//Use HTTPS instead of HTTP
virusTotal.UseTLS = true;

//Create the EICAR test virus. See http://www.eicar.org/86-0-Intended-use.html
byte[] eicar =
Encoding.ASCII.GetBytes(@"X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*");

//Check if the file has been scanned before.
FileReport report = await virusTotal.GetFileReportAsync(eicar);

Console.WriteLine("Seen before: " + (report.ResponseCode == FileReportResponseCode.Present ? "Yes" : "No"));

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

最佳答案

查看 UrlReport类,您返回的报告包含更多信息,而不仅仅是代码示例中的响应代码。有 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; }

这可能会为您提供所需的结果。 VirusTotal 实际上会返回多个扫描引擎的结果,其中一些可能会检测到病毒,而另一些则可能不会。

Console.WriteLine($"{report.Positives} out of {report.Total} scan engines detected a virus.");

您可以使用这些数据做任何您想做的事情,例如计算百分比:

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")});

关于c# - 如何使用 C# 中的 VirusTotal.NET 库判断文件是否被病毒感染?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54176282/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com