Perl、ClamAV、扫描流中的病毒

Posted

技术标签:

【中文标题】Perl、ClamAV、扫描流中的病毒【英文标题】:Perl, ClamAV, scan a stream for viruses 【发布时间】:2017-08-31 09:21:11 【问题描述】:

我有一个 perl 应用程序。我需要对一些文件进行病毒扫描。

我可以使用 ClamAV 和模块 File::Scan::ClamAV 。 如果我需要扫描存储在磁盘上的某些文件或将文件加载到内存(某些变量),它就可以工作。

但是我的应用没有完整的文件。它只有一个输入流(打开的套接字)。它从此套接字读取并写入其他输出流。

我可以通过 ClamAV 以某种方式传递流吗?喜欢将我的输入流转发到 clamav 并从中读取数据,但最后得到一些扫描结果?

【问题讨论】:

【参考方案1】:

ClamAV::Client 模块似乎提供了一种使用scan_stream method 扫描流的方法。

以下是我认为文档中令人困惑的工作方式:

use ClamAV::Client;

# Try using socket options from clamd.conf, or use default socket:
my $scanner = ClamAV::Client->new();

# Scan a stream, i.e. read from an I/O handle:
my $result = $scanner->scan_stream($handle);

# $result is the name of a virus signature, or undef
die "infected" if $result;

请注意,我还没有尝试过(还)。

【讨论】:

我无法弄清楚我的 ClamAV 在哪里听。我上面的示例是针对默认套接字的,但这对我不起作用。我没有在 TCP 上配置它,我不想破坏它。所以没有测试,对不起。 我要试试。 这行得通。但就我而言,我必须在客户端构造函数中设置 socket_name => '/var/run/clamd.scan/clamd.sock'

以上是关于Perl、ClamAV、扫描流中的病毒的主要内容,如果未能解决你的问题,请参考以下文章

Linux下病毒扫描工具 - clamav

ClamAV病毒软件的安装和使用

Linux安装杀毒软件(漏洞扫描工具)ClamAV 并配置邮件告警操作指南

python 使用ClamAV实现病毒扫描(pyClamad)

防病毒Clamav使用及API调用测试

clamav查杀病毒