当前位置:  开发笔记 > 编程语言 > 正文

.NET病毒扫描API

如何解决《.NET病毒扫描API》经验,为你挑选了4个好方法。

我正在构建一个Web应用程序,我需要扫描用户上传的文件以查找病毒.

有这方面经验的人是否可以提供有关如何启动和运行的信息?我猜测防病毒软件包有API以编程方式访问它们的功能,但似乎要轻易搞定细节.

仅供参考,该应用程序是用C#编写的.



1> Steve..:

使用前的重要提示: 请注意本服务协议.您可以授予他们对所有内容的完全访问权限:"当您上传或以其他方式提交内容时,您可以使用VirusTotal(以及我们合作的人)使用,免版税,不可撤销且可转让的许可证,以便使用,编辑,托管,存储,复制,修改,创建衍生作品,沟通,发布,公开表演,公开展示和分发此类内容."

您可以使用VirusTotal.com的服务,而不是使用本地防病毒程序(从而将您的程序绑定到该特定的防病毒产品并请求您的客户安装该防病毒产品).

此站点提供免费服务,您的文件作为输入提供给众多防病毒产品,您将收到一份详细报告,其中包含扫描过程产生的证据.通过这种方式,您的解决方案不再与特定的防病毒产品绑定(尽管您已绑定到Internet可用性)

该站点还提供了一个应用程序编程接口,允许以编程方式接近其扫描引擎.

这里有一个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 ....

}

免责声明
我绝不参与其中.我写这个答案只是因为它似乎是对这4年答案的一个很好的更新.


请注意VirusTotal解决方案非商业化.他们不允许API用于商业应用程序.
注意TOS协议。您为他们提供了对所有内容的完全访问权限:“上载或以其他方式提交内容时,您授予VirusTotal(以及与我们合作的内容)全球范围内的免版税,不可撤销和可转让的许可,以使用,编辑,托管,存储,复制,修改,创作衍生作品,进行交流,发布,公开表演,公开展示和分发此类内容。”

2> Fred..:

您可以使用IAttachmentExecute API.

Windows操作系统提供通用API来调用已安装的防病毒软件(当然,需要支持API的防病毒软件).但是,调用反病毒软件的API仅提供COM接口样式,不支持IDispatch.因此,从任何.NET语言和脚本语言调用此API都太困难了.

从此处下载此库Antiversion Scanner for .NET或从"NuGet" AntiVirusScanner添加引用您的VS项目

例如,下面的代码扫描一个文件:

var scanner = new AntiVirus.Scanner();
var result = scanner.ScanAndClean(@"c:\some\file\path.txt");
Console.WriteLine(result); // console output is "VirusNotFound".



3> Joe..:

我可能只是进行系统调用来运行一个独立的进程来进行扫描.各种供应商都有许多命令行AV引擎.


自从我发布以来,事情可能在6年内发生了变化
http://www.clamwin.com/和http://www.clamav.net/lang/en/是一个好的开始.

4> Thorarin..:

看一下Microsoft Antivirus API.它使用COM,它应该很容易与.NET接口.它特指Internet Explorer和Microsoft Office,但我不明白为什么您无法使用按需扫描任何文件.

在Windows上运行的所有现代扫描仪都应该了解此API.


它使用COM.这意味着您可以在.NET中使用它
推荐阅读
放ch养奶牛
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有