Perl,ClamAV,扫描病毒流

时间:2017-08-31 09:21:12

标签: perl sockets antivirus antivirus-integration

我有一个perl应用程序。我需要扫描一些文件以查找病毒。

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

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

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

1 个答案:

答案 0 :(得分:0)

模块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;

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