基于Python的病毒扫描机制

构建集中式病毒扫描机制(ClamAV)

  Clam AntiVirus(ClamAV)是一款免费而且开源的防毒软件,软件与病毒库的更新皆有社区免费发布,官网地址:http://www.clamav.net/lang/en/。目前ClamAV主要为Linux、Unix系统提供病毒扫描、查杀服务等。pyClamad((http://xael.org/norman/python/pyclamd/)是一个Python第三方模块,可让Python直接使用ClamAV病毒扫描守护进程clamd,来实现一个搞笑的病毒检测功能,另外,pyClamad模块也非常容易整合到我们已有的平台中,下面详细进行说明。

pyClamad模块安装方法:

  1.客户端(病毒扫描源)安装步骤

# yum install -y clamav clamd clamav-update #安装clamavp相关程序包
# chkconfig --levels 235 clamd on # 添加扫描守护进程clamd系统服务
# /usr/bin/freshclam	# 更新病毒库,建议配置到crontab中定期更新
# setenforce 0 #关闭 SELinux,避免远程扫描时提示无权限问题

  2. 主控端部署 pyClamad环境步骤

# wget http://xael.org/norman/python/pyclamd/pyClamd-0.3.4.tar.gz
# tar -zxvf pyClamd-0.3.4.tar.gz
# cd pyClamd-0.3.4
# python setup.py install

  

块常用方法说明:

  pyClamad提供了两个关键类,一个为 ClamdNetworkSocket()类,实现使用网络套接字操作clamd; 另一个为 ClamdUnixSocket()类,实现使用Unix套接字类操作clamd,两个类定义的方法完全一样,本节以 rClamdNetworkSocket()类说明

__init__(self,host='127.0.0.1',port=3310,timeout=None)方法,是 clamdNetworkSocket()类的初始化方法,参数host为连接主机IP,参数port为连接端口,默认为3310,与/etc/clamd.conf配置文件中的TCPSocket参数要保持一致;timeout为连接的超时时间。

contscan_file(self,file)方法,实现扫描指定的文件或目录,在扫描时发生错误或发行病毒将不终止,参数 file(string类型)为指定的文或目录的绝对路径

multiscan_file(self,file)方法,实现多线程扫描指定的文件或目录,多核环境速度更快,在扫描发生错误或发现将不终止,参数 file(string类型)为指定的文件或目录的绝对路径。

scan_file(self,file)方法,实现扫描指定文件或目录,在扫描时发生错误或发现病毒将终止,参数 file(string类型)为指定的文件或目录的绝对路径

shutdown(self)方法,实现强制关闭clamd进程并退出。

stats(self)方法,获取Clamscan的当前状态。

reload(self)方法,强制重载clamd病毒特征库,扫描前建议做reload操作

ELCAR(self)方法,返回ELCAR测试字符串,即生成有病毒特征的字符串,便于测试

  

猜你喜欢

转载自www.cnblogs.com/Gnnnny/p/9082045.html