我正在使用 clamd 使用 INSTREAM 进行大数据扫描(数据不能作为我可以发送到 clamd 的文件提供)。如果我只发送一个带有 EICAR 的 INSTREAM 块,则可以正确检测到它,但如果我发送几个块加上 EICAR 字符串,则不会检测到它。
例子:
char *eicarTest = "X5O!P%@AP[4\\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*";
data_len = strlen(eicarTest);
network_len = _byteswap_ulong(data_len);
sendClamdRawdata(&network_len, sizeof(uint32_t));
sendClamdRawdata((void *)eicarTest, data_len);
...加上 0 长度的块来完成..
在这种情况下,clamd 会说:instream(local): Win.Test.EICAR_HDB-1(44d88612fea8a8f36de82e1278abb02f:68) FOUND
但是,如果我在此之前或之后发送任何块,它不会被检测到。例子:
char *eicarTest = "X5O!P%@AP[4\\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*";
char *junkData = "89jsdkfj";
data_len = strlen(eicarTest);
network_len = _byteswap_ulong(data_len);
sendClamdRawdata(&network_len, sizeof(uint32_t));
sendClamdRawdata((void *)eicarTest, data_len);
data_len = strlen(junkData);
network_len = _byteswap_ulong(data_len);
sendClamdRawdata(&network_len, sizeof(uint32_t));
sendClamdRawdata((void *)junkData, data_len);
...加上 0 长度的块来完成..
在这种情况下,没有检测到,clamd 说: instream(local): OK
这有什么意义吗?我将不胜感激。
非常感谢!