当前位置: 首页 > news >正文

ClamAV使用

1. docker安装

docker run -d --name clamav -p 3310:3310 clamav/clamav:stable
su clamav freshclam

2. 扫描

2.1 clamscan

以下是 clamscan 命令选项的表格化整理:

选项与参数
长选项短选项描述
--help-h显示帮助信息
--version-V打印版本号
--verbose-v显示详细输出 ,直接扫描当前目录下的文件
--archive-verbose-a显示扫描的压缩包内文件名
--debug启用 libclamav 的调试消息
--quiet仅输出错误消息
--stdout将输出写入 stdout(不影响调试消息)
--no-summary禁用扫描结束时的摘要
--infected-i仅显示感染文件
--suppress-ok-results-o跳过显示“OK”文件
--bell病毒检测时发出提示音
文件与目录控制
长选项参数格式描述
--tempdirDIRECTORY指定临时文件目录
--leave-temps[yes/no(*)]保留临时文件(默认 no
--force-to-disk[yes/no(*)]强制将嵌套文件扫描写入临时文件(默认 no
--gen-json[yes/no(*)]生成 JSON 元数据(仅限测试/开发)
--databaseFILE/DIR指定病毒数据库文件或目录
--official-db-only[yes/no(*)]仅加载官方签名(默认 no
--fail-if-cvd-older-thandays数据库过期时返回非零错误码
--logFILE保存扫描报告到文件
--recursive[yes/no(*)]递归扫描子目录(默认 yes
扫描行为控制
长选项参数格式描述
--allmatch[yes/no(*)]匹配后继续扫描文件(默认 no
--cross-fs[yes(*)/no]扫描其他文件系统的文件(默认 yes
--follow-dir-symlinks[0/1(*)/2]跟踪目录符号链接(0=从不,1=直接,2=总是)
--follow-file-symlinks[0/1(*)/2]跟踪文件符号链接(0=从不,1=直接,2=总是)
--file-listFILE从文件中读取待扫描文件列表
--remove[yes/no(*)]删除感染文件(默认 no
--moveDIRECTORY移动感染文件到指定目录
--copyDIRECTORY复制感染文件到指定目录
--excludeREGEX排除匹配正则表达式的文件
--exclude-dirREGEX排除匹配正则表达式的目录
--includeREGEX仅扫描匹配正则表达式的文件
--include-dirREGEX仅扫描匹配正则表达式的目录
高级功能
长选项参数格式描述
--bytecode[yes(*)/no]加载字节码(默认 yes
--bytecode-unsigned[yes/no(*)]加载未签名字节码(默认 no
--bytecode-timeoutN设置字节码超时(毫秒)
--statistics[none(*)/...]收集并打印执行统计信息
--detect-pua[yes/no(*)]检测潜在有害程序(默认 yes
--exclude-puaCAT排除指定类别的 PUA
--include-puaCAT仅加载指定类别的 PUA
文件类型扫描
长选项参数格式描述
--scan-pe[yes(*)/no]扫描 PE 文件(默认 yes
--scan-elf[yes(*)/no]扫描 ELF 文件(默认 yes
--scan-ole2[yes(*)/no]扫描 OLE2 容器(默认 yes
--scan-pdf[yes(*)/no]扫描 PDF 文件(默认 yes
--scan-swf[yes(*)/no]扫描 SWF 文件(默认 yes

注:(*) 表示默认值。

执行代码

异常文件生成
https://www.eicar.org/download-anti-malware-testfile/

echo 'X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*' > eicar_test.txt
echo 'X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*' > eicar_test2.txt
  • 一次性扫描
    clamscan /home
  • 扫描当前文件夹内所有文件
    clamscan --recursive .
  • 扫描当前文件夹内所有文件(只输出异常的)
    clamscan -o --recursive .在这里插入图片描述
  • 仅显示感染文件
    只展示了感染,ok除外后结果为感染的文件
    clamscan -i --recursive .
    在这里插入图片描述

结果


----------- SCAN SUMMARY -----------
Known viruses: 8707456
Engine version: 1.4.2
Scanned directories: 1
Scanned files: 1
Infected files: 0
Data scanned: 0.00 MB
Data read: 0.00 MB (ratio 0.00:1)
Time: 31.761 sec (0 m 31 s)
Start Date: 2025:05:27 09:54:24
End Date:   2025:05:27 09:54:56

结果描述

原字段含义
Known viruses已知病毒
Engine version引擎版本
Scanned directories扫描目录
Scanned files扫描文件
Infected files感染的文件
Data scanned扫描数据
Data read数据读取
Time时间
Start Date起始日期
End Date结束日期

2.2 clamdscan

以下是 clamdscan 命令的中英文对照表格,整理为清晰的双栏格式:

clamdscan 命令选项对照表

英文选项缩写/参数中文说明
--help-h显示帮助信息
--version-V打印版本号并退出
--verbose-v详细模式(输出更多信息)
--quiet静默模式(仅输出错误信息)
--stdout将结果输出到标准输出(不影响调试信息)
--log=FILE-l FILE将扫描报告保存到指定文件
--file-list=FILE-f FILE从指定文件中读取待扫描的文件列表
--ping-p A[:I]检测 clamd 服务是否响应,可指定尝试次数 [A] 和间隔时间 [I]
--wait-w等待 clamd 启动(最长 30 秒),可与 --ping 配合设置检测参数
--remove删除受感染文件(谨慎使用)
--move=DIRECTORY将受感染文件移动到指定目录
--copy=DIRECTORY将受感染文件复制到指定目录
--config-file=FILE-c FILE从指定配置文件读取配置
--allmatch-z发现匹配后继续扫描文件
--multiscan-m强制启用多文件扫描模式
--infected-i仅输出受感染文件信息
--no-summary禁用扫描结束时的汇总信息
--reload请求 clamd 重新加载病毒数据库
--fdpass将文件描述符传递给 clamd(适用于 clamd 以不同用户运行的情况)
--stream强制以流模式传输文件到 clamd(用于调试和单元测试)

使用示例

# 扫描指定目录并输出详细信息
clamdscan -v /path/to/directory# 扫描文件列表并将报告保存到日志
clamdscan -f file_list.txt -l scan.log# 删除受感染文件(谨慎操作)
clamdscan --remove /path/to/file

区别clamdscan 与 clamscan

特性clamdscanclamscan
工作模式客户端模式(连接 clamd 守护进程)独立模式(直接调用扫描引擎)
性能更快(无需每次加载引擎和数据库)较慢(每次运行都需初始化)
资源占用低(共享已运行的 clamd 资源)高(每次启动都加载完整引擎和数据库)
适用场景生产环境、频繁扫描临时扫描、调试
多线程支持由 clamd 控制自身支持(--multiscan 参数)
配置来源使用 clamd 的配置使用命令行参数或 clamscan 配置

关键差异说明

  • 性能与资源clamdscan 依赖后台守护进程 clamd,避免了重复加载引擎的开销,适合高频率扫描;clamscan 每次独立运行,灵活性高但资源消耗大。
  • 多线程clamscan 通过 --multiscan 启用多线程扫描,而 clamdscan 的多线程由 clamd 的配置决定。
  • 配置方式clamdscan 的扫描行为(如最大文件大小、扫描压缩文件等)由 clamd.conf 控制,而 clamscan 通过命令行参数调整。

2.3 pyclamd操作

import pyclamdcd = pyclamd.ClamdNetworkSocket(host='192.168.65.1',port=3310,timeout=15)
print("ClamAV version:", cd.version())
result = cd.multiscan_file('/home')print(result)

相关文章:

  • 数据结构:线性表的基本操作与链式表达
  • C53-字符串引入和注意事项.
  • 硬件实时时钟(RTC)
  • 【机器学习基础】机器学习入门核心算法:GBDT(Gradient Boosting Decision Tree)
  • 如何使用DeepSpeed来训练大模型
  • 【前端】Vue3+elementui+ts,TypeScript Promise<string>转string错误解析,习惯性请出DeepSeek来解答
  • 部署LVS-DR群集
  • OpenAI大模型不听人类指令事件的技术分析与安全影响
  • 如何收集Oracle DB SQL Monitor报告
  • 根据基因名称自动获取染色体上的位置
  • 西门子SCL语言编写两台电机正反转控制程序,并涵盖从选型、安装到调试全过程的详细步骤指南(上)
  • opengl - 在本地搭建API的文档说明网站
  • 全球轨道铺设设备市场发展现状与未来趋势分析
  • 第 85 场周赛:矩阵重叠、推多米诺、新 21 点、相似字符串组
  • js中后台框架的增删改查要点
  • XCTF-web-easyphp
  • 从C++编程入手设计模式1——单例模式
  • vscode 配置 QtCreat Cmake项目
  • 性能测试怎么做?方法、流程与核心要点解析
  • 《Discuz! X3.5开发从入门到生态共建》第1章 Discuz! 的前世今生-优雅草卓伊凡
  • 服务器网站路径问题/今天的新闻
  • 百姓网如何创建位置/优化大师电视版
  • 美食网站建设规划书需求分析/简单免费制作手机网站
  • 成都帮忙做网站的童鞋批发商/电脑培训学校哪家最好
  • 珠海品牌网站建设/游戏代理加盟平台
  • 网站建设维护实训总结/深圳网站seo优化