【问题标题】:How to scan a file with antivirus on upload in Java? [closed]如何在 Java 上传时使用防病毒软件扫描文件? [关闭]
【发布时间】:2011-06-10 22:06:18
【问题描述】:

我正在开发一个需要文件上传的应用程序,它还需要 使用服务器上可用的防病毒软件扫描文件。

我听说 Symantec 为应用程序服务器提供了 abt APIS。

情况就像,我需要将应用程序部署在不同的地方 将来。所以,我正在考虑放置一个配置文件 我将从那里获取可用的防病毒软件及其路径。

我想在服务器上使用任何可用的防病毒软件,然后 使用命令行,我想传回文件名和结果。

我对传递文件和检索结果感到困惑。

有可能吗?

【问题讨论】:

  • 通常您的问题是:“是否可以使用参数运行命令行并使用 java 取回输出?”我说的对吗?
  • 您也可以使用 VirusTotal.com API...
  • 也许所有的大写单词都能吸引一点额外的注意力,但这种注意力也会与负面态度相结合......

标签: java file-upload


【解决方案1】:

使用以下代码。

String[] commands =  new String[5];
                  commands[0] = "cmd";
                  commands[1] = "/c";
                  commands[2] = "C:\\Program Files\\AVG\\AVG10\\avgscanx.exe";
                  commands[3] = "/scan=" + filename;
                  commands[4] = "/report=" + virusoutput;


                 Runtime rt = Runtime.getRuntime();
                 Process proc = rt.exec(commands);

Commnad line 对您来说是更好的选择。然后读取日志文件解决问题。

【讨论】:

  • 我用过类似的方法..
  • 在 llinux 中怎么样?
  • @HardikMishra 你能分享你的解决方案吗,因为我也在寻找同样的方法
  • @PatelRomil:我们还没有找到完美的解决方案。就在这个答案附近。
【解决方案2】:

我刚刚google了一下,发现一篇有趣的文章,看看here

要在Java中实现病毒文件扫描,需要使用第三方包。出于本文的目的,我将使用随 Java API 一起提供的 Symantec Scan Engine (SSE) 包。该包是一个用作 TCP/IP 服务器的应用程序,具有编程接口,使 Java 应用程序能够合并对内容扫描技术的支持。在本文中,我使用了 Symantec Scan Engine 5.1,它可以 Unix 或 Windows 安装。

快速参考:

public void scanFile(byte[] fileBytes, String fileName)
   throws IOException, Exception {

   if (scan) {
      AVClient avc = new AVClient(avServer, avPort, avMode);
      if (avc.scanfile(fileName, fileBytes) == -1) {
         throw new VirusException("WARNING: A virus was detected in
            your attachment: " + fileName + "<br>Please scan
            your system with the latest antivirus software with
            updated virus definitions and try again.");
      }
   }
}

然后

catch (Exception ex) {
   logger.error(ex);
   if (ex instanceof VirusException) {
      // do something here
   }
   else {
      // there was some other error – handle it
   }
}

【讨论】:

  • 嗨 JJ.. 谢谢你,但我不想按照我的帖子中提到的 scanrio 使用“赛门铁克”API :)
  • @Jigar Joshi 您提供的链接不再有效,您可以发布完整的代码吗?也告诉我你的clamAV java客户端是从哪里得到的,谢谢
  • @Maurice 这是大约 9 岁的答案,可能不再有效。让我今天晚些时候更新它。
【解决方案3】:

使用 Java 和 Go 编写的 VirusTotal Public API V2.0 实现 VIGHNESWAR RAO
可在https://code.vighnesh.org/virustotal获得
它具有丰富的功能,可以扫描文件、URL、域、IP 地址并获取有关扫描的详细报告。
使用此 API,您的文件将被 56 个防病毒引擎扫描。并且所有防病毒引擎都在virustotal 云中运行,因此特别是您无需维护或运行任何防病毒引擎。
此 API 的一个重要特性是它具有接受 java.io.FileInputStream 或 java.io.File 作为参数的方法。
所有 API 功能都通过示例清楚地解释。
使用这个 api
step-1:在http://virustotal.com(VirusTotal,谷歌的子公司)创建一个账户并获取API密钥
第二步:访问https://code.vighnesh.org/virustotal并下载所需的jar文件
第 3 步:只需使用 API 提供的方法即可。
您可以使用
提供的示例 爪哇:https://code.vighnesh.org/virustotal/Java/examples.html
去:https://code.vighnesh.org/virustotal/Go/examples.html

【讨论】:

  • virustotal 是一家谷歌公司。访问virustotal.com获取详细信息,不知道所有这些你怎么能说它是垃圾邮件。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-03-27
  • 1970-01-01
  • 2013-09-13
  • 2010-11-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多