我们使用 eicar.com作为测试用例。

# ./clamdscan/clamdscan  eicar.com
/home/jack/code/clamav-0.104.2/build/eicar.com: Eicar-Signature FOUND----------- SCAN SUMMARY -----------
Infected files: 1
Time: 0.006 sec (0 m 0 s)
Start Date: 2022:05:19 05:03:25
End Date:   2022:05:19 05:03:25

eicar.com文件内容如下:

X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*

使用md5在线转换工具计算出对应的值为:

44d88612fea8a8f36de82e1278abb02f

这个值与daily.cvd中的daily.hdb内容一致:

44d88612fea8a8f36de82e1278abb02f:68:Eicar-Test-Signature

但是与我们的检测输出不一致,输出打印的病毒名为Eicar-Signature。查看clamd的日志有如下日志:

LibClamAV debug: Bytecode found virus: Eicar-Signature

通过使用sigtool定位出来是bytecode.cvd中6327695.cbc文件的第二行中的一个病毒。如下:

Eicar-Signature.{};Engine:56-255,Target:0;0;0:58354f2150254041505b345c505a58353428505e2937434329377d2445494341522d5354414e444152442d414e544956495255532d544553542d46494c452124482b482a

名字也对上了。

上面的没有hdb报病毒是因为代码原因,读取病毒文件内容时,使用的长度与病毒库中的不对应,本来因该是69, 使用69去计算的,所以导致md5的结果对不上。改完之后就行了。我改成68,

fmap_get_MD5和cli_hm_scan,长度-1,代码如下:

cl_error_t fmap_get_MD5(fmap_t *map, unsigned char **hash)
{cl_error_t status = CL_ERROR;size_t todo, at = 0;void *hashctx = NULL;todo = map->len;if (!map->have_maphash) {/* Need to calculate the hash */hashctx = cl_hash_init("md5");if (!(hashctx)) {cli_errmsg("fmap_get_MD5: error initializing new md5 hash!\n");goto done;}while (todo) {const void *buf;size_t readme = todo < 1024 * 1024 * 10 ? todo : 1024 * 1024 * 10;if (!(buf = fmap_need_off_once(map, at, readme))) {cli_errmsg("fmap_get_MD5: error reading while generating hash!\n");status = CL_EREAD;goto done;}todo -= readme;at += readme;cli_dbgmsg("xxx buf :%s, readme :%u\n", (char *)buf, readme);if (cl_update_hash(hashctx, (void *)buf, readme-1)) {cli_errmsg("fmap_get_MD5: error calculating hash!\n");status = CL_EREAD;goto done;}}cl_finish_hash(hashctx, map->maphash);hashctx = NULL;map->have_maphash = true;}*hash = map->maphash;cli_dbgmsg("hash :%s, str :%s\n", *hash, cli_str2hex(*hash, 16));status = CL_SUCCESS;done:if (NULL != hashctx) {cl_hash_destroy(hashctx);}return status;
}
/* cli_hm_scan will scan only size-specific hashes, if any */
int cli_hm_scan(const unsigned char *digest, uint32_t size, const char **virname, const struct cli_matcher *root, enum CLI_HASH_TYPE type)
{const struct cli_htu32_element *item;struct cli_sz_hash *szh;cli_dbgmsg("xxxx digest :%s\n",  cli_str2hex(digest, 16));if (!digest || !size || size == 0xffffffff || !root || !root->hm.sizehashes[type].capacity)return CL_CLEAN;item = cli_htu32_find(&root->hm.sizehashes[type], size -1);if (!item)return CL_CLEAN;szh = (struct cli_sz_hash *)item->data.as_ptr;return hm_scan(digest, virname, szh, type);
}

编译后匹配如下:

d# ./clamdscan/clamdscan  eicar.com
/home/jack/code/clamav-0.104.2/build/eicar.com: Win.Test.EICAR_HDB-1 FOUND----------- SCAN SUMMARY -----------
Infected files: 1
Time: 0.011 sec (0 m 0 s)
Start Date: 2022:05:19 08:16:07
End Date:   2022:05:19 08:16:07

这个是main.cvd报的病毒

如果指定病毒库为daily.cvd,结果如下:

# ./clamdscan/clamdscan  eicar.com
/home/jack/code/clamav-0.104.2/build/eicar.com: Eicar-Test-Signature FOUND----------- SCAN SUMMARY -----------
Infected files: 1
Time: 0.009 sec (0 m 0 s)
Start Date: 2022:05:19 08:22:55
End Date:   2022:05:19 08:22:55

clamav 使用clamdscan检测病毒相关推荐

  1. 用Java整合Clamav病毒库检测病毒

    1. 下载Clamav (具体步骤参考上篇https://blog.csdn.net/qq_47619291/article/details/120050536, 本文不再赘述) 2. 安装依赖包,命 ...

  2. clamav --reload 加载病毒库源码分析

    基本流程可以参考clamav中clamdscan --version 不生效 我们直接从解析command开始.parse_command函数返回COMMAND_RELOAD类型.然后进入execut ...

  3. Science:便携式DNA测序仪在检测病毒疫情中大显身手

    Metagenomic sequencing at the epicenter of the Nigeria 2018 Lassa fever outbreak 2018年尼日利亚拉沙热疫情中心的宏基 ...

  4. PHP文件在线检测病毒,VIRSCAN 在线病毒检测客户端

    /**** 本程序以及提供的源码仅供技术交流使用. 作者不作任何类型担保,在任何情况下都不对使用本软件造成的任何损失或任何相应而生. 间接.附带的损失承担任何责任. ****/importwin.ui ...

  5. [Python图像处理] 使用 HSV 色彩空间检测病毒对象

    使用 HSV 色彩空间检测病毒对象 前言 检测病毒对象 相关链接 前言 在本节中,我们将学习如何使用 OpenCV 在 HSV 色彩空间中使用特定颜色检测感兴趣对象.我们需要通过指定颜色值范围识别和提 ...

  6. 一般杀毒软件检测病毒原理

    一般杀毒软件检测病毒原理 2014年09月05日 ⁄ 综合 ⁄ 共 3171字 ⁄ 字号 小 中 大 ⁄ 评论关闭 常用的反病毒软件技术 特征码技术:基于对已知病毒分析.查解的反病毒技术 目前的大多数 ...

  7. 杀毒软件已经 OUT 了!未来 CPU 也可以检测病毒

    传统的杀毒软件似乎已经无法抵挡黑客越来越高的攻击力了.如果杀毒软件不顶用的话,雷锋网小编想说,那换做杀毒硬件呢? 根据国外科技网站 Digital Trends 报道,目前已经有研究人员获得了一项补助 ...

  8. linux检测病毒工具,Linux下查杀病毒工具

    top: 0px; margin-bottom: 16px; color: rgb(44, 44, 44); line-height: 28px; text-align: justify; word- ...

  9. 美国检测病毒3270美元,中国仅40,问题出在哪?

    2月27日,中国日报曝出一则新闻,美国一名男子因出现疑似新冠状肺炎的症状,于是跑去美国一所医院做了一个病毒的核酸检测,结果为阴性,回家后他收到了医院寄来的账单,金额显示他需要支付3270美元,折合人民 ...

最新文章

  1. “它将改变一切”,DeepMind AI解决生物学50年来重大挑战,破解蛋白质分子折叠问题...
  2. java结丹期(15)----javaweb(maven(1))
  3. 【译】Java中的对象序列化
  4. python类汇总_Python 类总结
  5. android自定义表盘部件,Android自定义view仿支付宝芝麻信用表盘
  6. 和python哪个容易胖_为什么有些人特别容易胖?
  7. 虚拟机VMware下安装Linux系统,Python3.7之TensorFlow安装
  8. Python -- abc module
  9. sqlserver存储过程加锁后怎么解锁_MySQL 的加锁处理,你都了解的一清二楚了吗?...
  10. springboot 集成redis实现session共享
  11. JavaWeb在线商城系统(java+jsp+servlet+MySQL+jdbc+css+js+jQuery)
  12. Java IO流处理 面试题汇总
  13. 2018.6清北学堂day3上午笔记
  14. 问佛 (佛是過來人,人是未來佛)
  15. JUC强大的辅助工具类
  16. MCE | 靶向 cGAS-STING 通路或可治疗渐冻症
  17. linux磁盘配额测试,Linux磁盘配额测试过程完全攻略
  18. CentOS7.9通过RealVNC实现多人使用服务器桌面
  19. python设计模式(一)创建型模式
  20. windows环境中Python中调用matlab

热门文章

  1. 北京双线机房的一些分析
  2. 极品五笔不能显示状态栏
  3. webmatrix如何使用php,使用微软的webmatrix配置php网站的步骤
  4. C语言求最大公约数及最小公倍数
  5. 操作系统:万字长文,重点知识梳理:具体md文档我放在了资源里
  6. SAP 先进先出法批次挑选策略
  7. 大话水声通信技术---(BFSK仿真)
  8. 增益与放大倍数到底时说明关系
  9. InvalidateRect()与Invalidate()的用法(转)
  10. DIY pt2262遥控器和2272-m4接收器